📊 打造自動化全球股市資料庫:global-stock-data-warehouse 專案解析

更新 發佈閱讀 5 分鐘

這份專案 global-stock-data-warehousestock-reminder-bot 的進階資料後援庫。如果說之前的 Bot 是「傳令兵」,這套系統就是「軍械庫」,負責儲存、同步全球市場(台、美、港)的歷史數據。

raw-image



在進行量化分析或技術指標篩選時,「資料的穩定性」是成敗關鍵。許多投資人常遇到 API 限制或連線中斷的問題,這套專案正是為了解決這些痛點而生。它不僅能自動爬取全球股市資料,還能將數據結構化儲存在 SQLite 並同步至雲端。

🏗️ 核心架構與程式碼功用

這個儲存庫的設計非常模組化,每個檔案各司其職:

1. main.py — 系統指揮官 (The Orchestrator)

這是整個專案的入口點。

  • 功用:負責接收指令(如 python main.py tw),決定現在要抓取哪個市場的資料。
  • 邏輯:它會調用 crawler.py 獲取清單,並啟動多執行緒下載任務,最後將結果彙整到資料庫中。

2. crawler.py — 資料採集員 (The Web Scraper)

資料庫的源頭。

  • 功用:針對不同市場進行「掃描」。例如,它會去公開資訊站或證交所抓取最新的台股成份股、港股清單或美股代碼。
  • 技術點:它處理了不同交易所的格式差異,確保輸出的代號格式(如 2330.TW0700.HK)能直接被後續模組讀取。

3. database.py — 倉儲管理員 (Database Manager)

負責 SQLite 的讀寫邏輯。

  • 功用:定義資料表的結構(Schema),確保每一筆歷史股價(開高低收、成交量)都能正確存放。
  • 重要性:它確保了數據的一致性,並提供查詢接口,讓 stock-reminder-bot 可以快速讀取歷史資料進行 KD 或 MACD 計算。

4. sync_manager.py — 雲端同步專家 (Cloud Sync Specialist)

這是處理 403 錯誤與 GH_PAT 的關鍵核心。

  • 功用:負責將本地端跑完的 .db 資料庫檔案上傳至 Google Drive 或 GitHub Repo 作為備份。
  • 技術挑戰
    • Google Drive API:處理服務帳戶 (Service Account) 的空間配額與權限驗證。
    • GH_PAT:利用 GitHub Token 將資料庫推送到私有倉庫,實現「異地備援」。

5. settings.py — 總部秘書 (Config Settings)

管理所有敏感資訊。

  • 功用:統一讀取環境變數(Environment Variables),包含 TELEGRAM_TOKENGOOGLE_CREDENTIALS 以及我們提到的 GH_PAT

💡 為什麼要將資料「倉庫化」?

比起每次執行 Bot 都重新向 Yahoo Finance 抓取資料,建立資料倉庫有三大好處:

  1. 突破限制:避免頻繁請求 API 導致 IP 被鎖(Rate Limit)。
  2. 速度極快:Bot 讀取本地 SQLite 資料庫的速度遠快於網路請求。
  3. 數據回測:有了完整的 .db 檔案,你可以隨時進行歷史策略回測,而不僅僅是接收即時通知。

🛠️ 技術筆記:關於 403 錯誤與 GH_PAT

在架設過程中,許多網友會遇到 HttpError 403 的問題。這通常與 Google 服務帳戶 (Service Account) 的儲存空間限制有關。服務帳戶本身沒有 15GB 的免費空間,因此它必須將檔案「寫入」到你共用給它的資料夾中。

同時,為了讓資料庫能安全地同步到 GitHub 私有儲存庫,我們必須配置 GH_PAT (Personal Access Token)。這張「數位通行證」確保了你的敏感數據能被加密傳輸且不對外公開。


💬 交流與回饋

目前這套系統已能穩定運行全球市場的資料同步,但在 Google Drive API 的配額管理上,仍有一些優化空間。

如果有網友在處理「服務帳戶空間配額 (Storage Quota)」或「GitHub Actions 自動同步資料庫」有更優雅的解法,還望不吝告知、指點迷津!歡迎在下方留言一起交流技術心得。

🚀 相關連結

  • 本專案 GitHub 倉庫





留言
avatar-img
《炒股不看周月年K漲幅機率就是耍流氓》
14會員
290內容數
普通上班族,用 AI 與 Python 將炒股量化。我的數據宣言是:《炒股不做量化,都是在耍流氓》。
你可能也想看
Thumbnail
創作不只是個人戰,在 vocus ,也可以是一場集體冒險、組隊升級。最具代表性的創作者社群「vocus 野格團」,現在有了更強大的新夥伴加入!除了大家熟悉的「官方主題沙龍」,這次我們徵召了 8 位領域各異的「個人主題專家」,將再度嘗試創作的各種可能,和格友們激發出更多未知的火花。
Thumbnail
創作不只是個人戰,在 vocus ,也可以是一場集體冒險、組隊升級。最具代表性的創作者社群「vocus 野格團」,現在有了更強大的新夥伴加入!除了大家熟悉的「官方主題沙龍」,這次我們徵召了 8 位領域各異的「個人主題專家」,將再度嘗試創作的各種可能,和格友們激發出更多未知的火花。
Thumbnail
vocus 最具指標性的創作者社群──「野格團」, 2026 年春季,這支充滿專業、熱情的團隊再次擴編,迎來了 8 位實力堅強的「個人主題專家」新成員 💫💫💫 從投資理財、自我成長、閱讀書評到電影戲劇,他們各自帶著獨特的「創作超能力」準備在格友大廳與大家見面。
Thumbnail
vocus 最具指標性的創作者社群──「野格團」, 2026 年春季,這支充滿專業、熱情的團隊再次擴編,迎來了 8 位實力堅強的「個人主題專家」新成員 💫💫💫 從投資理財、自我成長、閱讀書評到電影戲劇,他們各自帶著獨特的「創作超能力」準備在格友大廳與大家見面。
Thumbnail
做了一段時間的0codePM,終於有時間回到技術工作,即使AI世界已經因為Deepseek推出而改變,但AI本質係沒有變的---繼續搞SQLite-vec。由於年代久遠,Opensource界幾個月可以好大變化,而且文檔永遠不齊全,對於功力有限的0codePM唯有亂試。 首先係,要在SQLit
Thumbnail
做了一段時間的0codePM,終於有時間回到技術工作,即使AI世界已經因為Deepseek推出而改變,但AI本質係沒有變的---繼續搞SQLite-vec。由於年代久遠,Opensource界幾個月可以好大變化,而且文檔永遠不齊全,對於功力有限的0codePM唯有亂試。 首先係,要在SQLit
Thumbnail
本文簡單介紹如何使用SQLite。 先到官方網站下載SQLite 檔案。
Thumbnail
本文簡單介紹如何使用SQLite。 先到官方網站下載SQLite 檔案。
Thumbnail
※ 為什麼選擇SQLite? 安裝簡單:SQLite是一個零配置的資料庫,不需要複雜的設定和安裝過程。。 使用SQL語法。 設計選擇多元性(MySQL / SQLite):適合於小零件資料應用、嵌入式系統、物聯網設備。 ※ SQLite四大優點: 執行檔檔案很小:資料庫系統需要的磁碟空
Thumbnail
※ 為什麼選擇SQLite? 安裝簡單:SQLite是一個零配置的資料庫,不需要複雜的設定和安裝過程。。 使用SQL語法。 設計選擇多元性(MySQL / SQLite):適合於小零件資料應用、嵌入式系統、物聯網設備。 ※ SQLite四大優點: 執行檔檔案很小:資料庫系統需要的磁碟空
Thumbnail
加入套件 在pubspec.yaml添加sqflite與path_provider。 建立數據模型 id:識別欄位,唯一值為整數資料類型 name:存放名字為字串資料類型 class People { final int? id; final String? name;
Thumbnail
加入套件 在pubspec.yaml添加sqflite與path_provider。 建立數據模型 id:識別欄位,唯一值為整數資料類型 name:存放名字為字串資料類型 class People { final int? id; final String? name;
Thumbnail
之前在如何撈取台美股所有的股號的資料並儲存於SQLite? Part 1討論到如何使用stocksymbol撈取台美股股票代碼,在這篇我們繼續介紹如何針對我們撈取的股票代碼進行資料撈取。
Thumbnail
之前在如何撈取台美股所有的股號的資料並儲存於SQLite? Part 1討論到如何使用stocksymbol撈取台美股股票代碼,在這篇我們繼續介紹如何針對我們撈取的股票代碼進行資料撈取。
Thumbnail
之前在如何撈取台美股所有的股號的資料並儲存於SQLite? Part 1討論到如何使用stocksymbol撈取台美股股票代碼,在這篇我們介紹另一種方法撈取清單。
Thumbnail
之前在如何撈取台美股所有的股號的資料並儲存於SQLite? Part 1討論到如何使用stocksymbol撈取台美股股票代碼,在這篇我們介紹另一種方法撈取清單。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News