iT邦幫忙

2021 iThome 鐵人賽

DAY 14
0
永豐金融APIs

永豐證API X Python系列 第 14

【D14】熟悉廚具:訂閱Subscribe

  • 分享至 

  • xImage
  •  

前言

看了一些交易資料,現在來看看行情訂閱Subscribe吧~

參考網站:Stocks
參考網站:Futures

本日程式碼使用:[d14_subscribe.ipynb].ipynb](https://github.com/eyelash500/2021_ironman_Shioaji/blob/master/d14_subscribe.ipynb)


訂閱格式

當然首先還是要登入,登入後用api.subscribe(),就可以使用了。

不過在這之前我們還是要使用api.quote.subscribe?,來查看這個功能的詳述,才知道要使用哪些參數。

Signature:
api.quote.subscribe(
    contract: shioaji.contracts.Contract,
    quote_type: shioaji.constant.QuoteType = <QuoteType.Tick: 'tick'>,
    intraday_odd: bool = False,
)
Docstring: <no docstring>
Type:      method

可以看得出來,他這邊有三個參數contractquote_typeintraday_odd,前面是我們常用的商品合約(商品資訊),後面兩個,在文件中有提到:

quote_type: tick price or bid/ask price to subscribe.
    {'tick', 'bidask'}
intraday_odd: 盤中零股
    {True, False}
version: version of quote format.
    {'v1', 'v0'}

quote_type是可以選擇tick,或是bid and ask。而intraday_odd表示選擇看的是盤中零股,非整張交易的。最後有個version,可以選擇行情格式的版本,但是,但是,現在這版-shioaji==0.3.2.dev4-已經沒有version,所以使用他們的範例,會發生錯誤!!

訂閱

訂閱分成兩種,一種是Tick,一種是bid/ask。

Tick

如果用股票的話,使用Tick版,直接這樣用:

# 取得subscribe 資料:Stock 2330-台積電
api.quote.subscribe(
    api.Contracts.Stocks["2330"], 
    quote_type = sj.constant.QuoteType.Tick, # or 'tick'
)

會有這樣的效果:

Response Code: 200 | Event Code: 16 | Info: MKT/*/TSE/2330 | Event: Subscribe or Unsubscribe ok




沒錯,是空的,絕對不是眼睛壞掉...

為什麼是空的呢?因為現在是晚上,非交易時間沒有開盤呀~~~如果有開盤,會是如同範例的樣子:

Response Code: 200 | Event Code: 16 | Info: TIC/v1/STK/*/TSE/2330 | Event: Subscribe or Unsubscribe ok

Exchange.TSE 
Tick(
    code = '2330', 
    datetime = datetime.datetime(2021, 7, 2, 13, 16, 35, 92970), 
    open = Decimal('590'), 
    avg_price = Decimal('589.05'), 
    close = Decimal('590'), 
    high = Decimal('593'), 
    low = Decimal('587'), 
    amount = Decimal('590000'), 
    total_amount = Decimal('8540101000'), 
    volume = 1, 
    total_volume = 14498, 
    tick_type = 1, 
    chg_type = 4, 
    price_chg = Decimal('-3'), 
    pct_chg = Decimal('-0.505902'), 
    bid_side_total_vol= 6638, 
    ask_side_total_vol = 7860, 
    bid_side_total_cnt = 2694, 
    ask_side_total_cnt = 2705, 
    closing_oddlot_shares = 0, 
    fixed_trade_vol = 0, 
    suspend = 0, 
    simtrade = 0, 
    intraday_odd = 0
)

那這樣直接看期貨,更可以感覺到他會動:

# 取得subscribe 資料:2021年10月的台指契約
api.quote.subscribe(
    api.Contracts.Futures.TXF['TXF202110'],
    quote_type = sj.constant.QuoteType.Tick, # or 'tick'
)

就會有這樣的感覺:
tick

Bid and Ask

另外一種回報格式為 Bid and Ask,也就是買方與賣方的出價,最常顯示的就是俗稱的「最佳五檔」,顯示買賣雙方各自最佳的五個價格與數量。

要取得資料,直接把quote_type設定為sj.constant.QuoteType.BidAsk,這樣就可以得到囉。

# 取得subscribe 資料:2021年10月的台指契約
api.quote.subscribe(
    api.Contracts.Futures.TXF['TXF202110'],
    quote_type = sj.constant.QuoteType.BidAsk,
)

出現的結果大概會是這樣:
bidask


後記

這邊的訂閱也頗簡單的,只要選擇合約和回報種類,就可以直接取得相關資料。取得行情資料後,就可以解資料,取得這些資料,無論是通知或是即時分析,可做很多厲害的事囉~


上一篇
【D13】發現新book:Account Data- Position
下一篇
【D15】製作食譜:運用廚具,製作訂閱的Class(py檔)
系列文
永豐證API X Python31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言