Friday, February 06, 2026

從單機到雲端:台股大盤監控系統自動化實錄

📌 背景與動機

身為一名曾經擔任 QA Engineer目前專注投資的散戶(笑),穩定性與精確度是我的職業本能。原本運行在單機環境的台股監控腳本(twstock.py),雖然能產出精準的台股診斷,但為了實現每日自動化交付(CI/CD)且不佔用本機資源,我決定將其遷移至 GitHub Actions

🛠 技術棧與工具

  • 語言:Python 3.12

  • 數據源:yfinance (行情)、證交所 API (融資/法人)、財報狗 (大盤估值)

  • 自動化:GitHub Actions (CI/CD)

  • 通知:Discord Webhook


📝 核心優化工作回顧

1. 視覺排版與 UI 還原

在雲端環境中,Discord 的訊息格式與單機終端機有所不同。

  • 多行診斷邏輯:還原了精美的 43MA 監控面板,包含「當前指數」、「生命線」與「乖離率」的階層式呈現。

  • 診斷狀態自動化:根據乖離率區間自動判定 🟢【趨勢延續】、🚨【極度過熱】或 🔥【超跌區】,並提供對應的操作建議。

2. 多源數據整合(Refactoring)

遷移過程中,為了確保數據的穩定性與正確性,進行了多次重構:

  • 估值修復:捨棄了不穩定的證交所原始 JSON API,改為整合**財報狗(StatementDog)**的爬蟲邏輯,精確抓取「成交金額」、「PBR」與「PER」。

  • Bug 排除(Unit Testing 思維):修正了數據整合時產生的「單位重複(倍倍)」問題,確保輸出資訊的 Clean Code。

3. 雲端環境適配與運維

  • Secrets 隔離:將敏感的 Discord Webhook URL 透過 GitHub Actions Secrets 加密保護,符合資安標準。

  • 時區處理:解決了 GitHub Ubuntu Runner 預設 UTC 時間與台北時間(UTC+8)的差異問題。

  • 長訊息切割邏輯:針對 Discord 單則訊息 2000 字的限制,實作了自動切割發送功能,確保報表內容不因字數溢位而遺失。

4. GitHub Actions 性能觀察

  • Schedule 延遲分析:觀察到 GitHub Free Tier 的 Cron Job 存在排隊(Delay)現象(如 21:05 設定可能延至深夜執行),後續將考慮透過「避峰策略」優化觸發時間。


📊 最終成品展示

系統現在每晚會自動將以下資訊彙整為一則精美報表發送至 Discord:

  1. 融資餘額與增減趨勢

  2. 大盤估值組合 (成交量、PBR、PER)

  3. 43MA 乖離監控診斷

  4. 11 項核心標的 KD 掃描 (含 K 值買賣觀望建議)

  5. ETF 折溢價與期貨淨額監控

  6. 美債殖利率與外資買賣超排行



💡 結語

重點來了,這兩天跟Gemini一起vibe coding搬遷python到雲端,連最後的工作日誌也幫我寫好了~ 這個時代真的是要懂AI怎樣用才可以大大增加生產力呀!

No comments: