期末專題 (一):打造個人股票儀表板 - 架構規劃 (第 45 章)

站主自己的課程,請大家支持
揭秘站長的架站心法:如何利用 Hugo × AI 打造高質感個人品牌網站? 揭秘站長的架站心法:如何利用 Hugo × AI 打造高質感個人品牌網站?
  • Post by
  • Jan 28, 2024
post-thumb

歡迎來到 Python 之路的期末考!

在接下來的四章中,我們將打造一個 「個人股票儀表板 (Stock Dashboard)」。這不是簡單的練習題,而是一個具備前後端分離架構的完整應用。

1. 專案目標

我們要解決的問題:「雖然 Yahoo Finance 很好用,但我只關心我有買的那 5 支股票,而且我想要看我自己定義的技術指標。」

功能需求

  1. 使用者可以輸入股票代碼 (由美股 APPL 到台股 2330.TW)。
  2. 顯示即時股價與基本面資料 (P/E Ratio, EPS)。
  3. 繪製 K 線圖 (Candlestick Chart)。
  4. 提供簡單的技術分析 (如移動平均線 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。

LATEST POST
TAG