IB証券 APIで株式や先物などの板情報の取得

スポンサーリンク
スポンサーリンク

前提

このページでは接続後のみのサンプルを記載しています。接続方法は以下を参照してください。
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:数量

 

コメント

タイトルとURLをコピーしました