前提
このページでは接続後のみのサンプルを記載しています。接続方法は以下を参照してください。
IB証券 APIの接続方法
取得できるデータ
リアルタイムデータは購読しているマーケット・データによって取得できないものがあります。
IB証券のマーケットデータの購読は以下を参照してください。
IB証券 マーケットデータの購読
板情報の解説
公式サイトを参照してください。
TWS API v9.72+: Market Depth (Level II)
API での株式や先物などの板情報の取得
ib.reqMktDepth()で板情報をリクエストします。
contract = Contract(
secType='FUT',
symbol='NQ',
lastTradeDateOrContractMonth='20200918',
exchange='GLOBEX'
)
ib.qualifyContracts(contract)
ticker = ib.reqMktDepth(contract, numRows=5, isSmartDepth=False, mktDepthOptions=None)
while ib.sleep(1):
print(ticker.domBids)
# [DOMLevel(price=11545.75, size=3, marketMaker=''), DOMLevel(price=11545.5, size=4, marketMaker=''), DOMLevel(price=11545.0, size=2, marketMaker=''), DOMLevel(price=11544.75, size=3, marketMaker=''), DOMLevel(price=11544.5, size=2, marketMaker='')]
# [DOMLevel(price=11545.75, size=2, marketMaker=''), DOMLevel(price=11545.5, size=4, marketMaker=''), DOMLevel(price=11545.25, size=1, marketMaker=''), DOMLevel(price=11545.0, size=2, marketMaker=''), DOMLevel(price=11544.75, size=3, marketMaker='')]
# [DOMLevel(price=11545.75, size=2, marketMaker=''), DOMLevel(price=11545.5, size=4, marketMaker=''), DOMLevel(price=11545.25, size=1, marketMaker=''), DOMLevel(price=11545.0, size=2, marketMaker=''), DOMLevel(price=11544.75, size=3, marketMaker='')]
板情報のリクエスト
ib.reqMktDepth(contract, numRows=5, isSmartDepth=False, mktDepthOptions=None)
contract:商品情報numRows:取得する個数(数値)isSmartDepth:取引所全体で板情報を統合(True、False)mktDepthOptions:不明
仕様は以下の公式サイトを参照してください。
TWS API v9.72+: EClient Class Reference
板情報のリターン(取得できる値)
取得できる値はリスト型になります。
取得できる値の種類
- domBids:買気配の板情報
- domAsks:売気配の板情報
- domTicks:ティックの板情報
買気配(domBids)と売気配(domAsks)の値
取得例
[DOMLevel(price=11528.25, size=5, marketMaker=''), DOMLevel(price=11528.0, size=3, marketMaker=''), DOMLevel(price=11527.75, size=2, marketMaker=''), DOMLevel(price=11527.5, size=2, marketMaker=''), DOMLevel(price=11527.25, size=4, marketMaker='')] [DOMLevel(price=11528.5, size=3, marketMaker=''), DOMLevel(price=11528.25, size=6, marketMaker=''), DOMLevel(price=11528.0, size=4, marketMaker=''), DOMLevel(price=11527.75, size=3, marketMaker=''), DOMLevel(price=11527.5, size=2, marketMaker='')] [DOMLevel(price=11528.5, size=5, marketMaker=''), DOMLevel(price=11528.25, size=4, marketMaker=''), DOMLevel(price=11528.0, size=4, marketMaker=''), DOMLevel(price=11527.75, size=3, marketMaker=''), DOMLevel(price=11527.5, size=2, marketMaker='')]
解説
- price:価格
- size:数量
- marketMaker:不明。以下のように公式サイトには記載されています。
the marketMaker field will indicate the exchange from which the quote originates. Otherwise it indicates the MPID of a market maker.
ティック(domTicks)の値
取得例
[MktDepthData(time=datetime.datetime(2020, 9, 8, 5, 47, 42, 304785, tzinfo=datetime.timezone.utc), position=2, marketMaker='', operation=1, side=0, price=11530.75, size=2)] [MktDepthData(time=datetime.datetime(2020, 9, 8, 5, 47, 44, 276272, tzinfo=datetime.timezone.utc), position=0, marketMaker='', operation=1, side=1, price=11530.0, size=3), MktDepthData(time=datetime.datetime(2020, 9, 8, 5, 47, 44, 276272, tzinfo=datetime.timezone.utc), position=1, marketMaker='', operation=1, side=1, price=11529.75, size=6), MktDepthData(time=datetime.datetime(2020, 9, 8, 5, 47, 44, 276272, tzinfo=datetime.timezone.utc), position=2, marketMaker='', operation=1, side=1, price=11529.5, size=4), MktDepthData(time=datetime.datetime(2020, 9, 8, 5, 47, 44, 276272, tzinfo=datetime.timezone.utc), position=3, marketMaker='', operation=1, side=1, price=11529.25, size=3), MktDepthData(time=datetime.datetime(2020, 9, 8, 5, 47, 44, 276272, tzinfo=datetime.timezone.utc), position=4, marketMaker='', operation=1, side=1, price=11529.0, size=4), MktDepthData(time=datetime.datetime(2020, 9, 8, 5, 47, 44, 276272, tzinfo=datetime.timezone.utc), position=0, marketMaker='', operation=1, side=0, price=11531.0, size=2), MktDepthData(time=datetime.datetime(2020, 9, 8, 5, 47, 44, 276272, tzinfo=datetime.timezone.utc), position=1, marketMaker='', operation=1, side=0, price=11531.5, size=2), MktDepthData(time=datetime.datetime(2020, 9, 8, 5, 47, 44, 276272, tzinfo=datetime.timezone.utc), position=2, marketMaker='', operation=1, side=0, price=11531.75, size=3), MktDepthData(time=datetime.datetime(2020, 9, 8, 5, 47, 44, 276272, tzinfo=datetime.timezone.utc), position=3, marketMaker='', operation=1, side=0, price=11532.0, size=6), MktDepthData(time=datetime.datetime(2020, 9, 8, 5, 47, 44, 276272, tzinfo=datetime.timezone.utc), position=4, marketMaker='', operation=1, side=0, price=11532.25, size=3)]
解説
- time:日時
- position:不明
- marketMaker:不明*公式サイトには以下のように記載。
the marketMaker field will indicate the exchange from which the quote originates. Otherwise it indicates the MPID of a market maker. - operation:不明*公式サイトには以下のように記載。
the operation to perform in the row: insert (0), update (1) or remove (2).
- side:不明*domBidsとdomAsksの識別かと思います。返値は0と1のようです。
- price:価格
- size:数量

コメント