iT邦幫忙

2021 iThome 鐵人賽

DAY 8
0
永豐金融APIs

深入解析 Shioaji API系列 第 8

Day 08 - Kbars

本篇重點

  • Kbars 介紹及屬性說明
  • 使用 Pandas 將 Kbars 資料轉換為 DataFrame

Kbars 介紹及屬性說明

官方說明文件:https://sinotrade.github.io/tutor/market_data/historical/#kbar-data
api.kbars使用參數說明如下:

api.kbars(
        contract: BaseContract, #所要抓取kbars資料的Contract物件
        start: str = (dt.date.today() - dt.timedelta(days=1)).strftime("%Y-%m-%d"), #開始日期,預設為昨天
        end: str = dt.date.today().strftime("%Y-%m-%d"), #結束日期,預設為今天
        timeout: int = 30000, #timeout時間,預設為30000ms
        cb: typing.Callable[[Kbars], None] = None,
    )

若要取得單一交易日的kbars資料,範例如下:

# 取得2330,2021/9/17的kbars資料
kbars = api.kbars(api.Contracts.Stocks["2330"], start="2021-09-17", end="2021-09-17")

若要取得特定日期區間的kbars資料,範例如下:

# 取得2330,2021/9/13~2021/9/17的kbars資料
kbars = api.kbars(api.Contracts.Stocks["2330"], start="2021-09-13", end="2021-09-17")

跟前一篇的ticks一樣,api.kbars回傳的資料為shioaji.data.Kbars物件
屬性說明如下:

屬性 說明
ts [1631869260000000000] 時間戳
Open [600.0] 開盤
High [601.0] 最高
Low [600.0] 最低
Close [601.0] 收盤
Volume [1316] 成交量
Amount [789625000.0] 成交金額

使用 Pandas 將 Kbars 資料轉換為 DataFrame

跟前一篇的ticks資料一樣,在將kbars資料轉換為DataFrame前,要先把kbars物件內容先轉換為Dict
程式範例如下:

df = pd.DataFrame({**kbars}) #先將Kbars物件轉換為Dict,再傳入DataFrame做轉換
df.ts = pd.to_datetime(df.ts) #將原本的ts欄位中的資料,轉換為DateTime格式並回存
print(df) #將DataFrame的資料輸出至console中

執行print(df)後,原本的資料內容,已變成下列的格式

                     ts   High        Amount    Low   Open  Volume  Close
0   2021-09-17 09:01:00  601.0  7.896250e+08  600.0  600.0    1316  601.0
1   2021-09-17 09:02:00  601.0  7.622000e+07  600.0  600.0     127  600.0
2   2021-09-17 09:03:00  601.0  1.860700e+07  600.0  600.0      31  600.0
3   2021-09-17 09:04:00  601.0  5.766500e+07  600.0  600.0      96  601.0
4   2021-09-17 09:05:00  601.0  1.742300e+07  600.0  601.0      29  600.0
..                  ...    ...           ...    ...    ...     ...    ...
261 2021-09-17 13:22:00  609.0  1.948600e+07  608.0  609.0      32  609.0
262 2021-09-17 13:23:00  609.0  2.373700e+07  608.0  609.0      39  609.0
263 2021-09-17 13:24:00  609.0  4.199200e+07  608.0  609.0      69  609.0
264 2021-09-17 13:25:00  609.0  3.287100e+07  608.0  609.0      54  608.0
265 2021-09-17 13:30:00  600.0  1.324920e+10  600.0  600.0   22082  600.0

從上面的輸出結果,可以看到kbars的資料時間都是一分鐘一筆資料,也就是對應K線的最小單位-1分鐘圖(1分K)。


上一篇
Day 07 - Ticks
下一篇
Day 09 - Kbars 轉換及儲存至資料庫
系列文
深入解析 Shioaji API30

尚未有邦友留言

立即登入留言