看完本文,你將學到
初學者
該篇文章,可以一次學習 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 的流程。
- 用 FinMind API 作為你的 Data Source(免費)。
- 並使用 MySQL or MongoDB(免費),打造你個人的 Data Warehouse(一般公司可能用 BQ,但太貴了,Side Project 用單純的 DB 就好)。
- 使用 Redash、Superset(免費)等工具,打造個人 BI System。
完成以上步驟後,你將擁有個人的視覺化儀表板!!!
盤中即時資訊,只是 FinMind 50 個資料集中的一個,1/50。如果讀者感興趣,我們未來文章將介紹,"""分點資料""" X 板塊圖,可以一目了然,每個分點的進出狀況。
如果該篇文章迴響不錯,會計劃將此功能,直接加入官網,讀者可直接觀看即時報表,不需自己寫程式。
如果對這主題感興趣😍
請不吝給與掌聲👏
我們將來會推出更多相關實用內容💪✨有任何建議請來信至 FinMind.TW@gmail.com
✨追蹤我們獲得更多即時資訊 ➤ Github Facebook
延伸閱讀
🔥 製作個人專屬看盤軟體(一)