IB証券のスプレッド注文(コンボ注文)は複数の注文を同時に送ります。
対応している商品は、株式、先物、オプションです。
詳しくは以下を参照してください。
ホーム | インタラクティブ・ブローカーズ証券株式会社
株式やオプション、先物、通貨、そして債券やファンドに直接アクセス可能な、トレーダー、投資家、およびアドバイザーのお客様のためのオンライン取引ソリューションです。透明性の高い低額な約定手数料と借入金利、そして最良約定のためのサポートです。
前提
このページでは接続後のみのサンプルを記載しています。接続方法は以下を参照してください。
IB証券 APIの接続方法
取得できる過去データ(ヒストリカルデータ)
過去データ(ヒストリカルデータ)は購読しているマーケット・データによって取得できないものがあります。
IB証券のマーケットデータの購読は以下を参照してください。
IB証券 マーケットデータの購読
金融商品
詳しくは以下を参照してください。
IB証券 API接続での商品情報の設定
基本的な注文・決済の方法
詳しくは以下を参照してください。
APIで注文、決済
スプレッド注文(コンボ注文)の方法
基本的な注文の流れは、通常と同じですが、商品情報を作成する際に、コンボにします。
以下の例は、AUD/USDの先物のスプレッド(コンボ)注文です。
c = Future('AUD',202007,'GLOBEX')
ib.qualifyContracts(c)
c2 = Future('AUD',202009,'GLOBEX')
ib.qualifyContracts(c2)
conid1 = c.conId
conid2 = c2.conId
contract = Contract(
symbol='AUD', secType='BAG', exchange='GLOBEX', currency='USD',
comboLegs=[
ComboLeg(conId=conid1,ratio=1, action='SELL', exchange='GLOBEX'),
ComboLeg(conId=conid2,ratio=2, action='BUY' , exchange='GLOBEX')
]
)
order = MarketOrder('BUY', 1)
trade = ib.placeOrder(contract, order)解説
c = Future('AUD',202007,'GLOBEX')
ib.qualifyContracts(c)
c2 = Future('AUD',202009,'GLOBEX')
ib.qualifyContracts(c2)上記で組み合わせる商品を2つ用意します。
conid1 = c.conId conid2 = c2.conId
用意した商品情報からconIdを取得します。
contract = Contract(
symbol='AUD', secType='BAG', exchange='GLOBEX', currency='USD',
comboLegs=[
ComboLeg(conId=conid1, ratio=1, action='SELL', exchange='GLOBEX'),
ComboLeg(conId=conid2, ratio=2, action='BUY' , exchange='GLOBEX')
]
)上記で2つの商品を作成しています。
secType='BAG'
- 通常、
secTypeは、株式(STK)や先物(FUT)などの商品種別を設定しますが、スプレッド(コンボ)注文の場合はBAGとします。
comboLegs
- ここに組み合わせる商品や取引を設定します。
ComboLeg(conId=conid, ratio=乗数, action='売買' , exchange='取引所')
conId:conidを指定します。ratio:発注数量に対しての乗数を設定します。上記の例では売りが1倍に対して買いは2倍ということになります。発注時に1とした場合は、売り1枚、買い2枚ということになります。action:BUYまたはSELLを指定します。exchange:取引所を指定します。
order = MarketOrder('BUY', 1)
trade = ib.placeOrder(contract, order)上記の通り注文の作成、注文の送信は通常と変わりありませんが、注文の作成のactionについて以下のようになりますので、注意してください。
- BUYの場合:
ComboLegで設定したとおりの売買になります。 - SELLの場合:
ComboLegで設定した反対の売買になります。
スプレッド注文(コンボ注文)の決済の方法
通常注文でも反対売買すれば決済できるように、スプレッド注文(コンボ注文)でも反対の注文を行うだけです。
注文時のactionをBUYにしていた場合の決済
order = MarketOrder('SELL', 1)
trade = ib.placeOrder(contract, order)注文時のactionをSELLにしていた場合の決済
order = MarketOrder('BUY', 1)
trade = ib.placeOrder(contract, order)

コメント