
歡迎來到 Python 之路的期末考!
在接下來的四章中,我們將打造一個 「個人股票儀表板 (Stock Dashboard)」。這不是簡單的練習題,而是一個具備前後端分離架構的完整應用。
1. 專案目標
我們要解決的問題:「雖然 Yahoo Finance 很好用,但我只關心我有買的那 5 支股票,而且我想要看我自己定義的技術指標。」
功能需求:
- 使用者可以輸入股票代碼 (由美股 APPL 到台股 2330.TW)。
- 顯示即時股價與基本面資料 (P/E Ratio, EPS)。
- 繪製 K 線圖 (Candlestick Chart)。
- 提供簡單的技術分析 (如移動平均線 SMA)。
2. 系統架構 (System Architecture)
為了展示「現代 Python 開發」的精隨,我們採用 前後端分離 (Microservices Lite) 架構,而不是把所有程式碼塞在一個檔案。
- Backend (後端): FastAPI
- 負責商業邏輯與資料抓取。
- 使用
yfinance庫抓取股市資料。 - 提供 RESTful API 給前端呼叫。
- Frontend (前端): Streamlit
- 負責 UI 顯示與互動。
- 這是 Python 界最流行的 Data App 框架,不需要寫 HTML/CSS/JS。
graph LR
User[使用者] --> Streamlit[Frontend (Streamlit)]
Streamlit -- HTTP GET --> FastAPI[Backend (FastAPI)]
FastAPI -- Fetch Data --> YFinance[Yahoo Finance API]
3. 技術選型 (Tech Stack)
所有工具都是我們之前學過的:
- 語言: Python 3.10+
- 套件管理: Poetry (Ch 25)
- Web 框架: FastAPI (Ch 36)
- 資料處理: Pandas (Ch 27)
- 資料視覺化: Streamlit (內建圖表)
- 部署: Docker (Ch 40)
4. 專案初始化
讓我們用 Poetry 建立專案結構。
# 建立專案資料夾
mkdir stock-dashboard
cd stock-dashboard
# 初始化 Poetry
poetry init -n
# (設定 pyproject.toml...)
# 安裝依賴
poetry add fastapi "uvicorn[standard]" requests pandas yfinance streamlit plotly
推薦的資料夾結構:
stock-dashboard/
├── backend/
│ ├── main.py # FastAPI 入口
│ └── service.py # 股市資料邏輯
├── frontend/
│ └── app.py # Streamlit 入口
├── pyproject.toml
└── readme.md
5. 下一步
架構圖畫好了,地基也打好了。下一章,我們將戴上後端工程師的帽子,開發 FastAPI 資料服務核心!
準備工作: 請確保你的電腦已經安裝好 Python 3.10 以上版本以及 Poetry。