IB証券のAPIでOCA(One-Cancels-All)注文|複数注文で一つが約定したら他はキャンセル

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

前提

API接続

このページでは接続後のみのサンプルを記載しています。接続方法は以下を参照してください。
IB証券 APIの接続方法

金融商品の設定

詳しくは以下を参照してください。
IB証券 API接続での商品情報の設定

基本的な注文・決済の方法

詳しくは以下を参照してください。
APIで注文、決済

OCA(One-Cancels-All)注文とは

OCA(One-Cancels-All)注文は、複数の注文を同時に発注して、一つが約定すれば、その他の注文に関してはキャンセルなどの処理を自動で行うことができます。

このキャンセルなどの処理は自動ですが、必ず処理されるとは限りません
IB証券の公式サイトにも以下のように注意書きがあります。

OCAは自動処理ではありますが、リクエストされたキャンセルや修正が、注文が約定される前に指定した取引所に届く保障はありませんのでご注意ください。

OCA(One-Cancels-All)注文の参考ページ

IB証券の公式サイトの注文内容の紹介ページ

OCA(One-Cancels-All)注文 | インタラクティブ・ブローカーズ証券株式会社
OCA注文をご利用いただきますと複数の注文や関連性のない注文をひとつ

IB証券の公式サイトのAPIのページ

TWS API v9.72+: One Cancels All

Pythonライブラリのクラスのページ

API docs — ib_insync 0.9.66 documentation

OCA(One-Cancels-All)注文の方法

サンプルコード(Example)

contracts = [
    Stock('TSLA', 'SMART', 'USD'),
    Stock('AAPL', 'SMART', 'USD')
]

ocaOrders = [
    LimitOrder('BUY', 1, 115),
    LimitOrder('BUY', 1, 348)
]

ib.oneCancelsAll(ocaOrders, "Test", 1)

for index, order in enumerate(ocaOrders):
    ib.placeOrder(contracts[index], order)

サンプルコードの解説

  1. 発注する商品情報をリスト型で複数作成します。
  2. その商品情報の対になるように注文情報をリスト型で作成します。
  3. ib.oneCancelsAll()で注文グループを作成します。
    • 第1:2で作成したリスト型の注文情報。
    • 第2:グループ名。何でも構いませんが重複すると同じ注文グループに挿入されます。
    • 第3:OCAタイプ。このタイプにより、一つの注文が約定後の他の注文の処理方法を設定します。
      以下の*については公式サイトでよく見てください

      1. グループによって残りのすべての注文をキャンセルします。*
      2. 残りの注文は、グループによってサイズが比例して縮小されます。*
      3. 残りの注文は、グループなしでそれに比例してサイズが縮小されます。
  4. 注文ごとに発注します。

最後に

同時発注の上限の数量は不明です。

キャンセルは自動処理されるが100%ではないことは十分理解した上で利用しましょう。

 

コメント

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