iT邦幫忙

2021 iThome 鐵人賽

DAY 18
0
永豐金融APIs

深入解析 Shioaji API系列 第 18

Day 18 - 取得所有Contract程式範例

使用Shioaji API,第一次接觸的人最常遇到的問題就是要如何抓所有的股票資料
Day 03 - Contract這篇文章中有說明Contract的種類及抓取的方式,下面就示範如何抓所有的股票資訊,並透過pandas匯出成csv檔。

import os
from dotenv import load_dotenv
import shioaji as sj
import pandas as pd

load_dotenv('D:\\python\\shioaji\\.env') #讀取.env中的環境變數
api = sj.Shioaji()
api.login(
    person_id=os.getenv('YOUR_PERSON_ID'), 
    passwd=os.getenv('YOUR_PASSWORD')
)

stock_list = [] #建立一個list,用來存放stock的contract

for exchange in api.Contracts.Stocks: #遍歷Stocks底下所有的exchange
    for stock in exchange: #遍歷該exchange底下所有的stock contract
        stock_list.append({**stock}) #將stock contract中的屬性轉成dict並加入stock_list中

df = pd.DataFrame(stock_list) #將stock_list轉換成DataFrame
df.to_csv('stock_list.csv', encoding="utf_8_sig") #將DataFrame匯出成csv,並指定encoding

api.logout()

在上面的程式碼,可以看到for in的方式遍歷api.Contract.Stocks.XXX底下的股票Contract

同樣的,若要抓取所有期貨的contract並匯出成csv,可參考以下範例:

import os
from dotenv import load_dotenv
import shioaji as sj
import pandas as pd

load_dotenv('D:\\python\\shioaji\\.env')
api = sj.Shioaji()
api.login(
    person_id=os.getenv('YOUR_PERSON_ID'), 
    passwd=os.getenv('YOUR_PASSWORD')
)

future_list = []
for category in api.Contracts.Futures:
    for future in category:
        future_list.append({**future})

df = pd.DataFrame(future_list)
df.to_csv('future_list.csv', index=False, encoding="utf_8_sig")

api.logout()

上一篇
Day 17 - 取得帳務相關資訊 (下)
下一篇
Day 19 - 實測盤中訂閱 tick 與 bidask 資料是否有先後順序 (上)
系列文
深入解析 Shioaji API30

尚未有邦友留言

立即登入留言