IB証券 API スプレッド注文、決済(コンボ注文)

スポンサーリンク

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枚ということになります。
  • actionBUYまたは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)

 

コメント

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