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

更新 發佈閱讀 5 分鐘

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

vocus|新世代的創作平台



在進行量化分析或技術指標篩選時,「資料的穩定性」是成敗關鍵。許多投資人常遇到 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漲幅機率就是耍流氓》
17會員
290內容數
普通上班族,用 AI 與 Python 將炒股量化。我的數據宣言是:《炒股不做量化,都是在耍流氓》。
你可能也想看
Thumbnail
全新版本的《三便士歌劇》如何不落入「復刻經典」的巢臼,反而利用華麗的秀場視覺,引導觀眾在晚期資本主義的消費愉悅之中,而能驚覺「批判」本身亦可能被收編——而當絞繩升起,這場關於如何生存的黑色遊戲,又將帶領新時代的我們走向何種後現代的自我解構?
Thumbnail
全新版本的《三便士歌劇》如何不落入「復刻經典」的巢臼,反而利用華麗的秀場視覺,引導觀眾在晚期資本主義的消費愉悅之中,而能驚覺「批判」本身亦可能被收編——而當絞繩升起,這場關於如何生存的黑色遊戲,又將帶領新時代的我們走向何種後現代的自我解構?
Thumbnail
5 月,方格創作島正式開島。這是一趟 28 天的創作旅程。活動期間,每週都會有新的任務地圖與陪跑計畫,從最簡單的帳號使用、沙龍建立,到帶著你從一句話、一張照片開始,一步一步找到屬於自己的創作節奏。不需要長篇大論,不需要完美的文筆,只需要帶上你今天的日常,就可以出發。征服創作島,抱回靈感與大獎!
Thumbnail
5 月,方格創作島正式開島。這是一趟 28 天的創作旅程。活動期間,每週都會有新的任務地圖與陪跑計畫,從最簡單的帳號使用、沙龍建立,到帶著你從一句話、一張照片開始,一步一步找到屬於自己的創作節奏。不需要長篇大論,不需要完美的文筆,只需要帶上你今天的日常,就可以出發。征服創作島,抱回靈感與大獎!
Thumbnail
本文簡單介紹如何使用SQLite。 先到官方網站下載SQLite 檔案。
Thumbnail
本文簡單介紹如何使用SQLite。 先到官方網站下載SQLite 檔案。
Thumbnail
本文深度解析賽勒布倫尼科夫的舞臺作品《傳奇:帕拉贊諾夫的十段殘篇》,如何以十段殘篇,結合帕拉贊諾夫的電影美學、象徵意象與當代政治流亡抗爭,探討藝術在儀式消失的現代社會如何承接意義,並展現不羈的自由靈魂。
Thumbnail
本文深度解析賽勒布倫尼科夫的舞臺作品《傳奇:帕拉贊諾夫的十段殘篇》,如何以十段殘篇,結合帕拉贊諾夫的電影美學、象徵意象與當代政治流亡抗爭,探討藝術在儀式消失的現代社會如何承接意義,並展現不羈的自由靈魂。
Thumbnail
※ 為什麼選擇SQLite? 安裝簡單:SQLite是一個零配置的資料庫,不需要複雜的設定和安裝過程。。 使用SQL語法。 設計選擇多元性(MySQL / SQLite):適合於小零件資料應用、嵌入式系統、物聯網設備。 ※ SQLite四大優點: 執行檔檔案很小:資料庫系統需要的磁碟空
Thumbnail
※ 為什麼選擇SQLite? 安裝簡單:SQLite是一個零配置的資料庫,不需要複雜的設定和安裝過程。。 使用SQL語法。 設計選擇多元性(MySQL / SQLite):適合於小零件資料應用、嵌入式系統、物聯網設備。 ※ SQLite四大優點: 執行檔檔案很小:資料庫系統需要的磁碟空
Thumbnail
當時間變少之後,看戲反而變得更加重要——這是在成為母親之後,我第一次誠實地面對這一件事:我沒有那麼多的晚上,可以任性地留給自己了。看戲不再只是「今天有沒有空」,而是牽動整個週末的結構,誰應該照顧孩子,我該在什麼時間回到家,隔天還有沒有精神帶小孩⋯⋯於是,我不得不學會一件以前並不擅長的事:挑選。
Thumbnail
當時間變少之後,看戲反而變得更加重要——這是在成為母親之後,我第一次誠實地面對這一件事:我沒有那麼多的晚上,可以任性地留給自己了。看戲不再只是「今天有沒有空」,而是牽動整個週末的結構,誰應該照顧孩子,我該在什麼時間回到家,隔天還有沒有精神帶小孩⋯⋯於是,我不得不學會一件以前並不擅長的事:挑選。
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
做了一段時間的0codePM,終於有時間回到技術工作,即使AI世界已經因為Deepseek推出而改變,但AI本質係沒有變的---繼續搞SQLite-vec。由於年代久遠,Opensource界幾個月可以好大變化,而且文檔永遠不齊全,對於功力有限的0codePM唯有亂試。 首先係,要在SQLit
Thumbnail
做了一段時間的0codePM,終於有時間回到技術工作,即使AI世界已經因為Deepseek推出而改變,但AI本質係沒有變的---繼續搞SQLite-vec。由於年代久遠,Opensource界幾個月可以好大變化,而且文檔永遠不齊全,對於功力有限的0codePM唯有亂試。 首先係,要在SQLit
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News