看了一些交易資料,現在來看看行情訂閱Subscribe吧~
本日程式碼使用:[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
可以看得出來,他這邊有三個參數contract
、quote_type
、intraday_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版,直接這樣用:
# 取得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'
)
就會有這樣的感覺:
另外一種回報格式為 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,
)
出現的結果大概會是這樣:
這邊的訂閱也頗簡單的,只要選擇合約和回報種類,就可以直接取得相關資料。取得行情資料後,就可以解資料,取得這些資料,無論是通知或是即時分析,可做很多厲害的事囉~