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)
コメント