Python 即時資料 Pipeline,以版塊圖X即時股市資料為例

FinMind
FinMind
Published in
5 min readSep 17, 2022

現代越來越多人使用版塊圖,進行分析,那是否能用到其他資料上呢?

看完本文,你將學到

初學者

該篇文章,可以一次學習 4 種 package,並有實際的應用場景,做為自己 Side Project 的發想。

(使用 API 讀取 Data -> 資料視覺化 -> 排程自動更新 Dashboard。已經算是一個小型的資料產品架構了)

程式交易的讀者

可以打造即時看盤軟體,協助盤中操作。

那麼,讓我們開始進入主題吧!!!

本篇文章,筆者要分享的是

自動更新的盤中即時數據 X 版塊圖

可以在盤中,觀察資金流向,讓做交易的讀者,有更好的分析工具可以使用。

程式碼如下

首先,安裝相對應的 package

!pip install FinMind==1.5.6 apscheduler==3.6.3 -q

引入多個套件

使用 FinMind 作為 data source

使用 plotly 做視覺化

使用 apscheduler 做自動更新

使用 Ipython 呈現 plotly 的結果

設定 api token(可以到官網拿取 token)

# 測試用途,使用期限為 2022-09-16 - 2022-10-01token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRlIjoiMjAyMi0wOS0xNiAyMjo0MjoyOSIsInVzZXJfaWQiOiJ0ZXN0QGdtYWlsLmNvbSIsImlwIjoiMTE0LjQ0LjY5LjE4NSJ9.sXLy8HOnGDIlRuhEDD-kWBcXFK6a2CFwu2Ak-c2CUbQ'

筆者在此寫了 TreeMap 物件,以下將一一介紹

首先,__init__ 進行初始化,初始化 DataLoader 物件,並使用 token 進行登入,最後讀取 taiwan stock info,作為後續產業別分類的依據

def __init__(self):
self.token = token
self.html = "初始化~~~"
self.api = DataLoader()
self.api.login_by_token(api_token=self.token)
self.stock_info = self.api.taiwan_stock_info()
self.data_clean()

物件生成好後,直接來看 main 函數

snapshot_df = self.get_snapshot()

get_snapshot,顧名思義,拿取台股當前的即時數據,約 5 秒更新一次(收盤後就不會更新了)。

接著將資料組裝成,plotly — treemap 接受的格式

plot_df, last_datetime = self.feature_engineer(snapshot_df)

最後,使用 plotly 畫圖,並輸出成 html

self.html = self.plot(plot_df, last_datetime)

有了 html 之後,使用 display 畫圖。

以下程式碼,每次執行時,會先去 call api,拿到 snapshot data,並且畫圖,然後 jupyter 會將每次更新結果,都記錄下來,幫助你做事後復盤研究。

最後一步,使用 apscheduler,設定排程,定時更新台股即時資料,並使用 display 更新圖表。

最終在盤中使用情況,如下

早上 11:00:19

早上 11:38:19

基本上是,每 5 秒更新一次,並將整個過程,存在 jupyter 中。

最終,就完成了一個,即時更新的 Dashboard,可應用在多個場景上。

在一般公司,Data Team 其中一個 Task 是,串接第三方服務的 API,並將資料存放到 Data Warehouse,最終使用 BI 工具,做視覺化圖表。

因此,對 Data 有興趣的讀者,可以按照以下步驟,練習從 0 到 1 走過 Data Team 的流程。

  1. 用 FinMind API 作為你的 Data Source(免費)。
  2. 並使用 MySQL or MongoDB(免費),打造你個人的 Data Warehouse(一般公司可能用 BQ,但太貴了,Side Project 用單純的 DB 就好)。
  3. 使用 Redash、Superset(免費)等工具,打造個人 BI System。

完成以上步驟後,你將擁有個人的視覺化儀表板!!!

盤中即時資訊,只是 FinMind 50 個資料集中的一個,1/50。如果讀者感興趣,我們未來文章將介紹,"""分點資料""" X 板塊圖,可以一目了然,每個分點的進出狀況。

如果該篇文章迴響不錯,會計劃將此功能,直接加入官網,讀者可直接觀看即時報表,不需自己寫程式。

👉點擊查看更多 Finmind 資訊

如果對這主題感興趣😍
請不吝給與掌聲
👏
我們將來會推出更多相關實用內容
💪

有任何建議請來信至 FinMind.TW@gmail.com
追蹤我們獲得更多即時資訊 Github Facebook

延伸閱讀
🔥
製作個人專屬看盤軟體(一)

🔥 利用融資維持率抓到適合的抄底時機

🔥 高手都知道能提高勝率的出手時機

--

--