IB証券TWSのAPIドミトリーFAQ:コンボ注文、ブラケット注文、株式・オプション・先物注文

 こちらはインタラクティブブローカーズのAPI情報、Dmitry's TWS API FAQを日本語に訳したものです。元のウェブページの量が多すぎて閲覧しにくい&元サイトを翻訳にかけるとPCが固まるため、備忘録用に章ごとに分けつつ、できる範囲で変な訳を修正して保存しています。 

目次

コンビネーション注文 (別名コンボ注文)

【Q】足の比率とは何ですか?

誰かが比率について説明するか、TWSのドキュメントを持っていますか ?

コンボオーダーのレッグを構築する際にこのことを知っておく必要がありますか?

[A] by Despairオンラインで表示/返信 (#46818)

2021 年 3 月 27 日に追加

はい、コンボ契約を作成するときに比率を指定する必要があります。

Amazon と FB の株で STK/STK コンボを作成し、Amazon 株を 1 株売るごとに Facebook 株を 3 株購入したいとします。Amazon を比率 1 でレッグ 1 に配置し、FB を比率 3 でレッグ 2 に配置する必要があります (シンボルは常にアルファベット順でペアにする必要があるため、FB/AMZN は機能しません)。

また、比率を 2/6 などではなく 1/3 として指定する必要があります。数学的には同じですが、2 番目は受け入れられません。

アイアン コンドルを見ると、比率は各レッグに対して 1 です (スプレッドはオプションで構成され、1 つのアイアン コンドルは各レッグの 1 つのオプションです)。

オプション スプレッドのレッグの順序は重要ではありません。

スプレッド コントラクトの定義方法に関するドキュメントは次のとおりです。

https://interactivebrokers.github.io/tws-api/spread_contracts.html

[Q]組み合わせ注文の Order::lmtPrice フィールドを設定するにはどうすればよいですか?

【Q】コンボ注文の対応方法を教えてください。

[A]オンラインで表示/返信 (#45604) 

2021 年 5 月 15 日に追加

Josh: Order クラスで注文全体の価格を指定するだけで、各レッグの価格を個別に定義しないというオプションもあります。

コンボ全体の指値価格は、各レッグの指値価格の合計になります。したがって、1 つのレッグを $5 で購入し、別のレッグを $3 で売りたい場合、コンボ全体の指値価格は $5 – $3 = $2 になります。

Francois G via groups.io <namasteparis=yahoo.fr  (at) groups.io>:

それがコンボ注文の目的です。複数のレッグに対して 1 つの注文だけを処理することです。コンボ注文が実行されると、すべてのレッグが同時に実行されます。

2 つの製品 X と Y を扱うコンボを作成するとします。

– 25ドルでXを6個購入

– 3 Y を $10 で販売

まず、すべての脚の量の GCD (最大公約数) を計算する必要があります。ここで、GCD は 3 です。

コンボは (+2X -1Y) として作成され、order.totalQuantity は 3 になります。そうすることで、市場の流動性が低下するのを防ぐことができます。コンボ (+6X-3Y) を送信すると、IB はすべてのレッグを実行しようとします。しかし、おそらく市場では (+2X-1Y) しか利用可能ではありません。(+6X-3Y) コンボは決して実行されません。GCDで足の量を単純化することで、1コンボが実行できて満足です。

さて、この簡略化されたコンボのコストはいくらになるでしょうか? 買う時ってお金かかりますよね?したがって、コストは -(2×25) +(1×10) = -40 $ となります。

これは DEBIT コンボです。お金を使うときは、できるだけ支出を減らしたいですよね? したがって、できるだけ安い価格で購入したいと考えます。

結論: 3 コンボ (+2X -1Y) @40 を購入します (おそらく Order.lmtPrice=39 を試すでしょう)

ここで、次のコンボを作成するとします。

– 6 X を $25 で販売

– 3 Y を 10 ドルで購入

まず、すべての脚の量の GCD (最大公約数) を計算する必要があります。ここで、GCD は 3 です。

コンボは (-2X +1Y) として作成されます。

さて、この簡略化されたコンボのコストはいくらになるでしょうか? 買う時ってお金かかりますよね?したがって、コストは +(2×25) -(1×10) = +40 $ となります。

これはクレジットのコンボです。お金を稼ぐときは、できるだけ多く稼ぎたいですよね?そのため、できるだけ高い価格で売りたいと考えます。

ただし、コンボを販売すると、数量は元に戻ります。(-2X +1Y) コンボを売却すると、最終的には 2X を購入し、1Y を売却します。したがって、クレジット コンボをできるだけ高く売りたい場合は、最初にコンボを元に戻す必要があります。

結論として、3 コンボ (+2X -1Y) @40 を売ることになります (おそらく Order.lmtPrice=41 を試すでしょう)。

そうすることで、マイナスのコンボ価格に対処したり、間違った価格(裏側)で約定されることを回避できます。マイナスの価格での取引は常に間違いにつながります。

[Q] 保証付き組み合わせ注文と非保証付き組み合わせ注文について理解する

[A] IBウェブサイト: https: //ibkr.info/node/1683

2015 年 10 月 10 日に追加

投稿者: Joshオンラインで表示/返信 (#45588) 

取引所固有のオプション コンボは、保証されたコンボです。株式やその他の商品だけでなく、オプションのより多くの任意の組み合わせで作成できる「非保証」コンボもあります。保証されていないコンボの場合、レッグの一部だけが埋まるという(小さな)リスクは購入者が負います。

https://ibkr.info/node/1683

https://ibkr.info/node/1323

- また -

nonguaranteed は、保証されたコンボ順序がサポートされていない多くの任意の組み合わせに対する唯一のオプションです。デフォルトでは、非保証タグが指定されない限り、コンボは保証されます。注文にそのタイプに対して過剰な数のレッグがある場合、その注文は完全に拒否されるだけであり、紙のアカウントでテストするのは非常に簡単です。

- また -

いつでも可能な保証された有効なコンボが膨大な数あるため、それらをリストするのは簡単なことではありません。それらのほとんどは、よく知られたオプション コンボ タイプ (ストラドル、ストラングル、垂直スプレッド、カレンダー スプレッドなど) です。TWS の Strategy Builder ツールは、利用可能なさまざまなコンボを表示するのに役立ちます。または、保証されたコンボが不明な場合は、いつでもサーバーに ping を実行できます。サポートされていない場合はエラーが返されます。

[Q] 各レッグの conId が分からない場合にオプション コンボ レッグを作成するにはどうすればよいですか?

オプション コンボ レッグを作成するには各レッグの conId が必要ですが、これにはオプション チェーン全体から (オプションの有効期限/権利行使に基づいて) いくつかの検索が必要です。ただし、オプション チェーン全体の契約詳細をダウンロードするのは非常に時間がかかります。これをより速く行う方法はありますか?

[A] by Richard View/Reply Online (#44631)

2021 年 2 月 8 日に追加

そんなに遅いですか?

 

別の目的で同様のことを行います。特定の初期権利行使価格を超える、特定の有効期限のすべての権利行使が必要なので、それらをすべてダウンロードして、不要なものをフィルターで除外する必要があります。

 

以下は、MSFT 呼び出しのこれを示すログファイルの抜粋です。6 月 5 日の有効期限のすべてのコールのリクエストは、関連する最初の権利行使価格が 17:24:40.807 に決定された直後に送信されます。契約の詳細は 17:24:41.596 以降に到着し始め (ストライクが 172.5 未満のものは無視され、記録されません)、それらはすべて 17:24:41.738 までに返され、処理されています。処理には、それぞれの市場データのスナップショットの要求と受信が含まれるため、これも短い期間内で行われることに注意してください。

 

それは私にとってそれほど悪くはないようです。1 秒もかかりません。

 

すべての有効期限に対してすべてのストライキをリクエストしないように注意してください。これには非常に時間がかかります。そして、すべての取引所のすべての期限切れに対するすべてのストライクはさらに悪いです。

 

2020-06-03 17:24:40.807 MSFT@SMART/NASDAQ: 初回権利行使価格: 172.5

2020-06-03 17:24:41.596 契約: MSFT 200605C00175000@SMART; ストライク: 175; 値: 920

2020-06-03 17:24:41.597 契約: MSFT 200605C00182500@SMART; ストライク: 182.5; 値: 243

2020-06-03 17:24:41.598 契約: MSFT 200605C00185000@SMART; ストライク: 185; 値: 106

2020-06-03 17:24:41.598 契約: MSFT 200605C00187500@SMART; ストライク: 187.5; 値: 35

2020-06-03 17:24:41.603 契約: MSFT 200605C00205000@SMART; ストライク: 205; 値: 1

2020-06-03 17:24:41.603 契約: MSFT 200605C00190000@SMART; ストライク: 190; 値: 11

2020-06-03 17:24:41.604 契約: MSFT 200605C00202500@SMART; ストライク: 202.5; 値: 1

2020-06-03 17:24:41.605 契約: MSFT 200605C00200000@SMART; ストライク: 200; 値: 1

2020-06-03 17:24:41.605 契約: MSFT 200605C00210000@SMART; ストライク: 210; 値: 1

2020-06-03 17:24:41.606 契約: MSFT 200605C00180000@SMART; ストライク: 180; 値: 445

2020-06-03 17:24:41.607 契約: MSFT 200605C00172500@SMART; ストライク: 172.5; 値: 1160

2020-06-03 17:24:41.607 契約: MSFT 200605C00192500@SMART; ストライク: 192.5; 値: 4

2020-06-03 17:24:41.608 契約: MSFT 200605C00197500@SMART; ストライク: 197.5; 値: 2

2020-06-03 17:24:41.608 契約: MSFT 200605C00177500@SMART; ストライク: 177.5; 値: 670

2020-06-03 17:24:41.609 契約: MSFT 200605C00207500@SMART; ストライク: 207.5; 値: 1

2020-06-03 17:24:41.609 契約: MSFT 200605C00195000@SMART; ストライク: 195; 値: 2

2020-06-03 17:24:41.610 契約: MSFT 200605C00215000@SMART; ストライク: 215; 値: 1

2020-06-03 17:24:41.738 契約: MSFT 200605C00220000@SMART; ストライク: 220; 値: 1

2020-06-03 17:24:41.738 ターゲット契約: MSFT 200605C00175000@SMART; ストライク: 175; 値: 920

 

リチャード

[Q] 保証されていない組み合わせ注文について

[A] IBウェブサイト:https://ibkr.info/node/1323

ブラケット注文

【Q】「ブラケットオーダー」とは何ですか?

IB ウェブサイトによる [A]:

ブラケット順序の定義

https://www.interactivebrokers.com/en/index.php?f=583

ブラケット注文に関する API ドキュメント

https://interactivebrokers.github.io/tws-api/bracket_order.html

[Q] ブラケット注文の子注文で使用できるタイプに関する注意事項は?

[A]ヤイール アルトマン著オンラインで表示/返信 (#46372)

2021 年 1 月 4 日に追加

複数の子注文を添付する場合、IB は許可される子注文パラメータの可能な組み合わせに制限を設ける場合があることに注意してください。たとえば、MOC エグジット注文を標準のブラケット子注文に追加する場合、IB は子注文の OCA タイプ 3 (ブロックなしの約定で削減) のみを許可し、1 (ブロックありの約定でキャンセル) や 2 は許可しません。 (ブロックで埋めると減少します)。追加の MOC 子注文がなければ、子ブラケット注文で OCA タイプ 1 だけでなく、OCA タイプ 2 と 3 も使用することができます。このような制限は、特定の secType と取引所に依存する可能性があります。

【Q】ブラケット注文数量に上限はありますか?(はい – 親の数量に応じて)

[A]オンラインで表示/返信 (#45913)

2020 年 12 月 3 日に追加

子注文の注文数量は親注文の数量に固定されるという点で正しいです。それを変えることはできません。

最後のテイクプロフィット注文とストップロス注文が親注文にリンクされないように注文を変更する必要があると思います。TWSでそれができるかどうか(注文をIBまたは取引所に常駐させる)、またはポジションサイズを継続的に監視し、それに基づいて注文を送信するコードを記述する必要があるかどうかはわかりません。

- また -

一括注文の場合、子注文は親注文と同じ数量でなければなりません。親注文の数量と関係なく、子注文の数量を変更することはできません。

[Q] 一般注文バスケット、マルチレッグのマージン

[A]オンラインで表示/返信 (#45854)

2020 年 12 月 3 日に追加

TLTR ですが、QuanTradder は通貨取引や CFD がコンボではまったくサポートされていないと述べています。うーん…興味深いですね!

[Q] ブラケット注文: なぜ売りとストップが互いにキャンセルされないのですか?

こんにちは、

Java IB を使用してブラケット注文 (買い、売り LMT、STP) を出そうとしています。

API ですが、Sell と STP は互いにキャンセルしません。

買い注文 ID を SELL と STP の両方の親 ID として使用しています

命令。

何が問題なのか何か考えはありますか?

ありがとう、

レベッカ。

こんにちは、

コードは次のとおりです。

Order order = createOrder("BUY", 1, "MKT");

Contract buyContract = createContract("ES", "FUT", "GLOBEX", "USD","20100618",null,0.0);

eClientSocket.placeOrder(orderId++, buyContract, order);

lastOrderId = orderId;

           

Order order2 = createExOrder("SELL", 1, "STP", lastOrderId, 0.0, currentPrice-gain, false);

Order order3 = createExOrder("SELL", 1, "LMT", lastOrderId, currentPrice+loss, 0.0, true);

           

eClientSocket.placeOrder(this.orderId++, buyContract, order2);

eClientSocket.placeOrder(this.orderId++, buyContract, order3);

Where the methods are defined below:

        protected Order createExOrder(String action, int quantity, String orderType, int parentId, double lmtPrice, double auxPrice, boolean transmit)

        {

           Order order = super.createOrder(action, quantity, orderType);

            order.m_parentId = parentId;

            order.m_lmtPrice = lmtPrice;

            order.m_auxPrice = auxPrice;

            order.m_transmit = transmit;

            return order;

        }

        protected Order createOrder(String action, int quantity, String orderType) {

            Order order = new Order();

            order.m_action = action;

            order.m_totalQuantity = quantity;

            order.m_orderType = orderType;

            // order.m_transmit = true;

            return order;

        }

        protected Contract createContract(String symbol, String securityType, String exchange, String currency) {

            return createContract(symbol, securityType, exchange, currency, null, null, 0.0);

        }

   

protected Contract createContract(String symbol, String securityType, String exchange, String currency, String expiry, String right, double strike) {

            Contract contract = new Contract();

            contract.m_symbol = symbol;

            contract.m_secType = securityType;

            contract.m_exchange = exchange;

            contract.m_currency = currency;

            if (expiry != null) {

                contract.m_expiry = expiry;

            }

            if (strike != 0.0) {

                contract.m_strike = strike;

            }

            if (right != null) {

                contract.m_right = right;

            }

            return contract;

        }


結果として、フューチャーが買われ、売り LMT と売り STP の 2 つのオープン注文があり、どちらも送信されたようです。

その後、STP が捕捉されて約定されましたが、SELL LMT 注文は自動的にキャンセルされませんでした。

私が間違っていることは何かありますか?

事前にご協力いただきありがとうございます。

レベッカ

[A1] by Jiang Lingyu2010 年 5 月 31 日

LMT 注文と STP 注文に同じグループ名を設定できます。これによりOCOが発生します

【レベッカ】

試してみましたが、効果はないようです。

例を挙げてもらえますか?

[A2] リチャード・キング著

一見したところ、orderId をインクリメントする placeOrder への最初の呼び出しに問題があると思います。増分は、現在の値が引数として placeOrder に渡された後に発生します。したがって、lastOrderId はエントリー注文の ID より 1 大きいため、子注文のparentId は正しく設定されません。

リチャード

[A3]江陵宇著

差出人: TWSAPI@yahoogroups.com  [メールアドレス: TWSAPI@yahoogroups.com ] 江陵宇を代表して

送信日: 2010 年 6 月 1 日 09:36

宛先: TWSAPI@yahoogroups.com

件名: Re: [TWS API] ブラケット注文

このようなもの:

order2.m_ocaGroup = "グループ1";

order3.m_ocaGroup = "グループ1";

それが役に立てば幸い。

[A4] リチャード・L・キング著

実際、TWS は、parentId が設定されている注文に OCA グループを自動的に割り当てます。

実際、例のように指定したものはすべて無視されます。(少なくとも以前はそうでした。私は最近のバージョンではこれをテストしていません。)

受け入れられた回答

【レベッカ】

ありがとう、問題は解決しました。

私は通常のプログラミングのバグではなく、API の間違った使用法を探していました 🙂

別の問題がありました。

最後のオーダーである LMT が送信を true に設定しているにもかかわらず、STP は送信されませんでした。

最後の注文の送信がすべての人に届くというのは、これが本来あるべき姿であることを理解しています。

すべての注文に対して送信フラグを true に設定した場合にのみ機能しました。

[メモ] by scourt2000

また、成行注文では、特に成行エントリー注文の場合、エントリーと同時にエントリーするため、設定した 2 つのブラケット注文からの距離は 1 ~ 2 ティックずれます。指値注文を使用した場合に起こる最悪の事態は、不安定な市場では、aa ティックでより良いエントリーが得られ、その後、当初望んでいたよりも厳しいストップアウトが得られることです。

私が行うのは、成行注文または指値注文のいずれかを送信し、IB によって報告されたエントリー価格がわかったらブラケットを送信することです。

[注記]

私が知っているのは、ブラケットには一致する OCA が必要であるということだけです

弦。別の括弧には別の文字列が必要です。

[注記]

改めて綴らせて頂きます。私のソフトウェアを使用すると、ロングブラケット注文とショートブラケット注文を行うことができます。両方のエントリー注文が成行注文であるとします。両方とも、発注されるとすぐに約定します。したがって、IB 口座に関する限り、ネットポジションは現在横ばいです。しかし、これは 2 つのストップロス注文と 2 つのターゲット注文にはまったく影響を与えません。これらは (2 つの別個の OCA グループとして) システム内に残り、関連する価格に達した場合に実行されます (そしてそれぞれの残りの半分はキャンセルされます)。

これを試してみてうまくいかなかった場合は、単に何か間違ったことをしただけです。効果があるのですから、効果がないとは言えません。

リチャード

[A5]  by Ed (他の スレッドから)

最後の注文を除くすべての注文に対して Transmit を False に設定する必要があります

最初に親の注文を送信し、次に子を送信します。最後の子の注文について

Transmit を True に設定すると、ロット全体が送信されます

— エドからの良いコメントも —

あなたが何を達成しようとしているのかはわかりませんが、少なくとも

2 つのアイデア:

1) 標準の親/子の設定を使用し、後で子の価格を調整します。

親が実行する

2) 通常の入場オーダーを送信し、OCA グループを使用して入場します。

エントリー実行後の利益/逆指値注文

【Q】ブラケットオーダー:お子様は3人以上ですか?孫?逆指値注文をエントリーとして?

私は初心者なので、アドバイスをお願いします。

API リファレンス ガイドから検索すると、ブラケット注文に 3 つの注文 (1 つの親と 2 つの子) があることがわかります。

entry order (parent), market or limit, transmit = false

  stop order (child1), stop, transmit = false

  target order (child2), limit, transmit = true

逆指値注文をエントリー注文として使用できますか?

子供は一人しか産めないの?3人目以降の追加注文は可能ですか?

child1 を親とする孫の注文を追加することはできますか?

ありがとう

[A1]  Richard L King 著 (この スレッドから)

あなたへの私のアドバイスは、この種の質問に対する答えを自分で見つけ出すことです。

小さなテスト アプリの作成に必要なコードの量はそれほど多くないため、テスト アプリの作成は良い練習になります。基本的な作業フレームワーク (接続、エラーのログ記録など) を作成したら、新しいテスト アプリ用に数秒で簡単に複製できます。

あるいは、IB が提供するサンプル アプリを使用してこれらを試すこともできます。これらのプログラムのいずれかの使用方法を学ぶことを強くお勧めします。これらのプログラムを使用すると、時間を節約でき、正しい答えを得ることができますが、ここに投稿すると、回答を受け取るまでに長い時間がかかる可能性があり、提供された回答が正しいという保証はありません。

そうは言っても、次のことが言えます。

– エントリーに逆指値注文を使用することができます

– 私の知る限り、子注文はいくつでも使用できます。最後に配置するものを除くすべてに必ずtransmit-falseを設定してください。最初のブラケット注文 (または単一注文) が発注された後に、子注文を追加できることにも注意してください。

– 子の注文を親として使用できるかどうかはわかりませんが、使用できない理由はわかりません

しかし、このことについて私をただ信じないでください。ご自身で試してみてください。

リチャード

[A2]  orionn2 作 (同じ スレッドから)

4 つの質問すべてに対する答えは「はい」です。ただし、問題を避けるために、transmit = true でストップロスを最後に配置します。親とターゲットは、transmit = false でストップロス注文の前に配置する必要があります (これは、ストップロス注文が一定時間設定できない場合、エラーにより配置/送信に失敗する可能性があるストップロス注文なしでポジションに入るのを避けるためです)その場合、他の注文は取引所に送信されません)。

[Q] ブラケットオーダー: エッジケース

ブラケットオーダーを使用している人へ(コーディングについて尋ねる別のメールを見たところです)

例)、以下の質問に答えてもらえますか?

1. 親注文が指値注文で、部分的に約定された場合、

2 人の子供がまだアクティブ化されていますか? それとも親がいっぱいになったときだけですか?

2. 二人の子供たちは OCA の命令に従って働いていますよね?まだ部分的な塗りつぶしについてですが、

1 人の子供は部分的に満たされましたが、IB は別の子供の質を調整しますか?

3. 親がキャンセルされた場合、IB は自動的に子をキャンセルしますか? 

親が部分的に埋まった場合はキャンセルされますか?

私は指値エントリー注文を使用しているため、部分約定が頻繁に発生します。

ブラケット注文を使用すればすべてのエッジケースをカバーできるかどうか疑問に思っていますか? もし

そうではなく、むしろ自分で処理したいと思っています。

ありがとう!

ジアン

[A]クリスチャン・グロス著 (この トレッドより)

ブラケットをやるのは久しぶりです。しかし、ここで、誰でも自由に私を訂正してください。

1) はい

2) 依存します。デフォルトでははいですが、在庫を確認します (在庫があると想定) OCA グループのプリセット

3) はい、子供たちはキャンセルされます。キャンセルしたと仮定します。ただし、ルールには例外があります。部分的に約定があり、注文が約定された直後にキャンセルした場合、キャンセルは受け付けられません。存在しない順序のエラーが発生します。

[Q] ブラケット注文: API 経由でブラケット注文を行う方法 (要約)

2015 年 4 月 28 日に追加

[A] リチャード L キング著 (ここにあります)

API を使用してブラケット注文を作成する方法については、何度も議論されてきました。

確かにそれは可能です(そして非常に簡単です)。

その方法は次のとおりです。

1. エントリーオーダーを作成し、transmit を false に設定して、オーダーを出します。

2. ストップロス注文を作成し、そのparentIdをエントリー注文の注文に設定します

ID、送信設定を false のままにして、注文します。

3. ターゲット注文を作成し、そのparentIdをエントリ注文の注文IDに設定します。

送信を true に設定し、注文します。

送信設定により、TWS から TWS にオーダーが送信されないことが保証されます。

すべての注文が設定されるまで IB サーバーにアクセスします。その後、すべての注文が設定されます。

一緒に送りました。これを行う必要はありませんが、そうしないと次のような問題に直面することになります。

ストップロスの前にエントリーオーダーが約定されるという潜在的な問題と、

目標の注文が送信されました。

ストップロス注文とターゲット注文の両方を持つ必要はありません。そしてもしあなたが

両方が必要です。作成する順序は関係ありません (もちろん、

最初にエントリーオーダーを作成して配置する必要があります)。

OCA グループをストップロスやターゲット注文に設定しようとしないでください。

TWS はそれを自動的に実行し、実際に実行するため、必要ありません。

設定したものはすべて無視します。

ブラケットのメンバーは、他のブラケットと同じ方法で個別に変更できます。

他の注文。

リチャード

[Q] ブラケット注文の価格を変更するにはどうすればよいですか?

[A] by Josh (ここにあります)

2017 年 5 月 10 日に追加

ブラケット注文の場合も同様です。変更したい括弧内の注文に対して個別に placeOrder を呼び出すだけです。

注文(株式)

[Q] その時点ですべての ID が 0 の場合、openOrders でこれらの手動取引がポップアップ表示されたときに、それらの手動取引への参照を保持するにはどうすればよいですか?

[A] by Joshオンラインで表示/返信 (#40989)

2018 年 11 月 1 日に追加

「注文参照」フィールドを使用して、注文に手動でラベルを付けることができます。例えば、TWS クラシック・ビューのタブを右クリックして「設定」を選択すると、そのタブで作成されたすべての注文のデフォルトとなる「注文参照」フィールドを入力できます。この文字列は、Order.OrderRef の API にアクセスできるようになります。

[Q] 「注文が無効」とは具体的にはどういう意味ですか?

[A] 

  • ES 先物を注文しようとすると、openOrder と orderStatus から「Inactive」というメッセージが表示され、注文が拒否されたというエラー メッセージが表示されます。しかし、注文ステータスが「キャンセル済み」になることはありません。
  • ここでは問題ではない拒否の理由に関係なく、openOrder と orderStatus だけでは、注文が確実に拒否されたのか、それとも何らかの理由で禁止されているだけでおそらく受け入れられる可能性があるのか​​を、openOrder と orderStatus だけから判断することはできないというのは本当ですか?後の時間ですか?
  • PS: この質問はすでに IB フォーラムに投稿しましたが、回答はありませんでした。
  • 返事
  • リチャード・L・キング
  • 2010 年 8 月 13 日
  • ソースを表示
  • 配置される順序に何か問題がある場合にこれが表示されます
  • 右。修正して再送信する機会が与えられます。
  • もちろん自動プログラムではおそらく修正できないでしょうが、
  • そうでなければ、そもそも間違って送信されることはなかったでしょう。
  • おそらく注文をキャンセルしたいと思います。ただし、この API は多くのマニュアルでも使用されています
  • 取引クライアントのため、ユーザーが何か間違った指定をした可能性があります。
  • 順序を正しく設定できるかもしれません。
  • 「非アクティブ」とは、まさに次のことを意味します: 注文は TWS 内に無期限に存在します。
  • さらなる指示を待っています。そうしないと、どういうわけか再びアクティブになることはありません
  • ユーザーまたは API クライアントの介入。
  • 差出人: TWSAPI@yahoogroups.com  [メールアドレス: TWSAPI@yahoogroups.com ] 代理
  • アレクサンダー
  • 送信日: 2010 年 8 月 13 日 12:09
  • 宛先: TWSAPI@yahoogroups.com
  • 件名: [TWS API] 注文拒否は注文ステータスではありませんか?
  • ES 先物を注文しようとすると、「無効」というメッセージが表示されます。
  • openOrder と orderStatus から、注文が次のとおりであるというエラー メッセージが表示されます。
  • 拒否されました。しかし、注文ステータスが「キャンセル済み」になることはありません。
  • 拒否の理由に関係なく、それはここでは問題ではありません。
  • openOrder と orderStatus だけからは、
  • 注文が確実に拒否されたか、単に禁止されただけの場合
  • 何らかの理由があり、後で受け入れられる可能性はありますか?
  • PS: この質問はすでに IB フォーラムに投稿しましたが、回答はありませんでした。
  • [このメッセージのテキスト以外の部分は削除されました]
  • 返事
  • カート・ビグラー
  • 2010 年 8 月 13 日
  • ソースを表示
  • これについてリチャードが言ったこととは反対に、私はいくつかの論文で次のことを発見しました。
  • エラーが発生すると注文は「非アクティブ」になりますが、「できない」状況です。
  • 変更して再送信します。重複した注文 ID を取得したと思います (確信はありません)
  • 試してみると。
  • 確かに、あなたが言ったように、「非アクティブ」かどうかを知る方法はまったくありません。
  • は、1 つのこと (修正して再送信する) またはその他 (から新しい注文を作成する) を意味します。
  • 傷)。これは明らかなバグですが、私はこれまでわざわざ報告したことがありませんでした。
  • 私は自分が取り組み始めたことを信じています(その状況は忘れました)
  • 開発)は、エラーコードに基づいて区別し、修正することです。
  • 注文ステータス。
  • (時々、IB にバグを報告することに落胆し、ただ報告しようとすることもあります)
  • 自分なりの修正を見つけてください。これはかなり一般的な態度のようです
  • このリストで私が聞いてきたことから、人々にとって。)
  • さらに別の種類の問題が発生する可能性があります。注文が可能です
  • エラーのため非アクティブであり、再送信は受け入れられますが、
  • フィールドが間違っていてもエラーは解消されません。これは設定 (または
  • FA の単一アカウント注文のアカウント フィールドを設定できませんでした
  • シナリオ。どうやらIBのコードは最初の呼び出しでアカウントフィールドを読み取るようです
  • placeOrder に送信され、後続の placeOrder 呼び出しでは更新されません。それで、もし
  • アカウント コードが省略されました。後で追加することはできません。順序は次のとおりです。
  • 廃棄された。
  • -カート
  • メッセージ履歴を表示する
  • 返事
  • アレクサンダー
  • 2010 年 8 月 16 日
  • ソースを表示
  • OK、注文拒否は注文ステータスとしては存在しないらしく、「注文非アクティブ」が実際に何を意味するのか正確にはわかりません。
  • これは、十分なマージンなしで ES 2010 年 9 月の注文を発行したときに受け取ったものです。時系列順に示します。
  • openOrder(…) ステータスが非アクティブ
  • orderStatus(…) ステータスが非アクティブ
  • エラー(…) 204 注文が拒否されました
  • openOrder(…) ステータスが非アクティブ
  • orderStatus(…) ステータスが非アクティブ
  • 注文は TWS ではハングしませんが、まったく表示されません。(なぜ openOrder と orderStatus を 2 回繰り返すのでしょうか?)
  • 機関投資家のマルチアカウントはシミュレーションアカウントとして利用できないため、これをF&Aシミュレーションサブアカウントでテストしました。
  • 当面は、私のプログラムが必須情報が欠落している注文を発行しないと仮定して、「非アクティブ」ステータスを返す注文は拒否され、事実上存在しないものとして扱います。
  • カートとリチャード、ご意見ありがとうございました。
  • アレクサンダー
  • 返事
  • カート・ビグラー
  • FWIW、私のコードを見て、以前に開始した情報を完成させたほうがよいでしょう。エラー 204 はまだ見ていません。接頭辞として 201 がリストされています。
  • 2010 年 8 月 16 日
  • アレクサンダー
  • 2010 年 8 月 22 日
  • ソースを表示
  • エラー 204 はタイプミスでした。201 である必要があります。拒否の理由は購買力が不十分でした。いいえ、同じ orderId で注文を再送信しようとは決してしません。常に新しい orderId を使用します。TWSのレッドオーダーは遅かれ早かれ消えるでしょう。
  • リチャードが指摘したように、ステータスが非アクティブになっている注文は後で有効になることはないので、拒否されたものとして扱うことができることを知っておくと良いでしょう。
  • エラー 201 が発生せずに注文ステータスが非アクティブになったことがある人がいる場合は、それを知りたいと思います。
  • アレクサンダー
  • メッセージ履歴を表示する
  • 返事
  • カート・ビグラー
  • 2010 年 8 月 22 日
  • ソースを表示
  • 私は間違いなくエラー201なしで非アクティブでした。私にとっては「拒否されました」
  • 「キャンセル」ではなく「非アクティブ」という結果になったのは新しくて異常でした
  • 以前は動作していたコードを壊す異常な動作がいくつか書かれていました
  • 何年も前に。
  • 201 は特に「拒否」されます。次の理由により注文が非アクティブなままになっています
  • 「拒否されました」と表示されなかったエラーまたは警告。(でも私はIBだと思います)
  • この種の行動は変化し続けます。) 私が注文するたびに、私は確信しています。
  • 送信 false で送信され、注文ステータス メッセージの生成に使用されます
  • "非活性"。しかし、私の記憶が正しければ、そのような命令はもう何も生じません
  • 注文ステータスメッセージがまったく表示されないため、独自の注文ステータスを設定するためにアプリを再コーディングしました
  • API アプリだけが知っていると思われるこの状況では、コード「Local」を指定します。
  • 注文について。要するに、以前は「非アクティブ」だった
  • TWSで「灰色」と表示される注文に対応しており、注文も含まれます
  • 送信されることはなく、「ソフト」に拒否された注文は拒否されました。以前は注文を受けていました
  • すべての場合 (未送信を含む) のステータス メッセージを表示します。
  • 場合によっては行われなくなりました。それは一種のお尻の痛みです
  • TWS から私の未送信メッセージを受信したというフィードバックがないことを意味します
  • 注文。したがって、transmit=trueで再送信すると、事前に意味がありません。
  • 以前のように、すべての注文フィールドがすでにチェックされていて、
  • 送信すると飛んでしまいます。
  • だからこの行動は最低だけど、IBが生み出すゴミにはとてもうんざりしている
  • 私は飛ぶのではなく、諦めた憂鬱にさらに少し垂れ下がっただけだということ
  • 以前のように激怒しました。
  • -カート
  • メッセージ履歴を表示する
  • 返事
  • アレクサンダー
  • メッセージ 8/8、2010 年 9 月 2 日
  • ソースを表示
  • IB の API サポートからの返信:
  • こんにちは、アレクサンダー、
  • あなたが正しいです 。注文が拒否された場合、OrderStatus イベントは「無効」ステータスを示し、Error イベントは詳細な説明を含む拒否メッセージを配信します。OrderStatus イベントと Error イベントの両方を監視して、注文が正常に行われたかどうかを判断することを強くお勧めします。
  • よろしく、
  • レイマンド
  • IB APIのサポート

[Q]指値注文を送信するにはどうすればよいですか。一定時間が経過しても注文が約定されない場合、注文はキャンセルされ成行注文になりますか?

基本的に、これは 1 回の API 呼び出しで行うことができますか、それともコードで注文をキャンセルし、成行注文として注文を再送信する必要がありますか? (Q 2013 年 11 月 18 日月曜日、午後 6 時 38 分に、< qjohnny2000@yahoo.com > が書きました:)

[A1] (A by Brant Hahn brhahn@gmail.com via yahoogroups.com )

最初の指値注文では、次の値を設定します。

m_goodTillDate; // フォーマット: 20060505 08:00:00 {タイムゾーン}

TWS からキャンセルされたコールバックを受け取ったら、新しい成行注文を送信します。

[A2] ロブ・テルピロウスキーrterp99@yahoo.com >

時間しきい値が経過した後、注文タイプを LMT から MKT に変更できる場合もあります。

[Q] order.m_account = null ?!

orionn2  <no_reply@yahoogroups.com>より:

openOrder メソッドで注文を受け取ったときに、order.m_account フィールドが null になる状況を経験した人はいますか? この問題により、サブアカウントによる注文のフィルタリングができなくなります。フィードバックを求めています。

[A]  by Kurt Bigler  kkb@breathsense.com

C++ ではフィールドがデフォルトの OPEN_ORDER 処理 (バージョン 9.67 の場合) によってデコードされていることがわかります 。したがって、この点に関しては問題ないはずです。

しかし、さまざまな理由から、私は自分の注文情報を保存/アーカイブすることが良い考えであると判断しました。あなたの場合、受信した openOrder メッセージを orderId で保存された注文情報と関連付けることができ、元のアカウント フィールドを復元できるようになります。

あなたの場合にそれが必要かどうかはわかりません。これを行う理由は、注文はplaceOrder falseでTWSに送信でき、そのような注文はreqOpenOrderなどによって報告されないため、APIアプリが独自の注文を保存せずに終了するとAPIアクセスから孤立してしまうという事実に関連していることがわかりました。状態を維持し、起動時にそれを復元します。これに関連するいくつかの問題も、ある時点で (IB の改善の 1 つで) 悪化し、問題が発生しました。

-カート

[A2] vanx23@outlook.com より

これは私には疑わしいように思えます。

私は個人アカウントを 2 つ持っています。アプリケーションが処理する各 OpenOrder メッセージについて、フィールド「AccountID」が NULL または空になることはありません。

[A3] orionn2 著 <no_reply@yahoogroups.com>

 注文が作成され、最新の TWS バージョンを使用して 3 つのサブアカウントに自動的に分割/割り当てされるときに、これがアドバイザー アカウント (個別のアカウントではなく)で発生することを明確にするためです。

[Q] m_shortSaleSlotのフィールドは?

[A] by カート

C++ のコメントには次のように書かれています。

「1 は株式を保有している場合、2 は他の場所から受け渡される場合です。

Action="SSHORT" の場合のみ

そして、私はSSHORTがそうであると信じています(しかし、それを述べているドキュメントは見つかりません)

制度上のみ。とにかく理にかなっています。

これは、フィールドを何に設定する必要があるかを具体的に示しているわけではありません。

当てはまりません。このような場合、TWS API ではデフォルトの初期化を使用します。

フィールドの値によって使用する値が決まります。shortSaleSlot はデフォルトで 0 に設定されます。

C++ コンストラクター。したがって、適用されない場合はフィールドを設定しないでください。

デフォルトが正しいはずです。

-カート

オプション注文

[Q] IBが使用するオプションモデルのIVとは何ですか?

[A]オンラインで閲覧・返信

2021 年 1 月 25 日に追加

TWS API ドキュメントに切り替えてください。これは、詳細を理解するのに常に役立ちます 😉

https://interactivebrokers.github.io/tws-api/tick_types.html

基本的に、TWS には 4 種類のオプション ギリシャ語 + IV があります。

– グリークスは売値に基づいて計算されます (ID 10 にチェックマークを付けます)

– グリークスは入札価格に基づいて計算されます (ティック ID 11)

– グリークスは最終価格に基づいて計算されます (ティック ID 12)

– グリークスはモデル価格に基づいて計算されます (ティック ID 13)  

モデルは中価格帯 (?? 100% 確信はありません)、HV などを使用します。デフォルトで基礎となるブラックショールズの。独自のオプション価格設定モデルを作成するために変更しない限り ( https://www.interactivebrokers.com/en/index.php?f=14278  / https://www.interactivebrokers.com/php/whiteLabel/Interactive_Analytics/modelEditor/イントロ.html )  。しかし、私はこれまでのところそれを行ったことがないので、TWS 内で独自の価格計算式をモデル化したい場合には役に立ちません 😉

[Q] 市場終了後にオプションBID/ASKとGREEKSを取得するにはどうすればよいですか?

[A] by Joshオンラインで表示/返信 (#47362) 

2021 年 12 月 18 日に追加

市場が閉まった後に市場から最後に入手可能なデータを受信するには、「凍結」データに切り替える必要があります。

https://interactivebrokers.github.io/tws-api/market_data_type.html

reqMarketDataType(2) を使用

[Q] オプションの毎日の出来高を取得するにはどうすればよいですか?

オプションには一日の終わりのデータがないので、私が思いつく最善の方法は、大きなバー(8時間など)を取得し、それらを使用してボリュームがあるかどうかを確認することでした

[A]  by Joshオンラインで表示/返信 (#40025)

2018 年 7 月 10 日に追加

それでうまくいくはずです。他に方法はありません。

[Q] 参照: 特定の将来のオプションを取得するために契約の詳細をリクエストするにはどうすればよいですか?

この Q/A は、ここの「将来」セクションに移動されました。

[Q] 特定の将来のオプションを取得するために契約の詳細をリクエストするにはどうすればよいですか?

2022 年 6 月 12 日に追加

[Q] 貸株可能状況を確認するにはどうすればよいですか?

[A]  by Jack Jost jqjost@gmail.comオンラインで表示/返信 (#39012) 

2017 年 11 月 27 日に追加

( https://ibkr.info/article/2024より引用 )

ストックローンの利用可能性の監視

概要:

IB は、空売りを行う口座保有者を支援するさまざまな方法を提供し、在庫レベルの監視や借入コスト/リベートを支援します。利用可能な詳細レベル、対象となる期間、情報にアクセスする方法は方法によって異なります。それぞれの簡単な概要を以下に示します。

公開ウェブサイト

利害関係者は、ユーザー名やパスワードを必要とせずに、公開 Web サイトに株式貸付データを問い合わせることができます。まず、ここをクリックして 株式が上場されている国を選択してください。利用可能な問題の数が 1 ページに合理的に表示できる数を超える場合、結果はグループ内のシンボルごとに整理され、ハイパーテキスト リンクによりさらにドリルダウンできます。特定のシンボルを直接クエリできるクイック検索ボックスも提供されます。クエリ結果には、製品の説明、額面通貨、および借りられる株式の数量を表示する「在庫状況を確認」というタイトルのリンクが含まれます。

 パブリックFTP

また、パブリック FTP サイトにはアクセスするためにユーザー名やパスワードは必要なく、パイプ区切りのテキスト ファイルを介して株式借用データを一括形式で提供します。ファイルをリクエストするために必要な URL は、以下に示すようにブラウザの種類によって異なります。

1.Mozilla         Firefox

ftp://shortstock:  @ftp3.interactivebrokers.com (shortstock: と @ の間にはパスワードを表すスペースがあることに注意してください)。

認証を必要としない Web サイトに接続しようとしているというメッセージが表示されます。「はい」を選択してください

2.        インターネットエクスプローラー

ftp://shortstock:  @ftp3.interactivebrokers.com (shortstock: と @ の間にはパスワードを表すスペースがあることに注意してください)。

認証を必要としない Web サイトに接続しようとしているというメッセージが表示されます。「はい」を選択してください

3.        グーグルクローム

ftp://ftp3.interactivebrokers.com

ユーザー名:ショートストック

パスワード: 空白 (該当なし)

サイト内では、個々のファイルがリストの国ごとに整理され、希望するファイルを指定するためのチェックボックスが表示され、[送信] ボタンを選択することで 1 つのファイルにダウンロードできます。

 

 

以下に概要を示すサンプル ファイル出力のスナップショットには、銘柄記号、額面通貨、名前、契約識別子 (IB および ISIN)、リベートおよび手数料率、利用可能な株式が含まれています。このファイルは、並べ替え、フィルタリング、分析の目的で Excel などのアプリケーションにインポートすることもできます。

 

株式ローン借入 (SLB) ツール

IB アカウント所有者は、アカウント管理 ([サポート]、[ツール] メニュー オプション) へのログインを通じて SLB ツールを利用できるようになります。このツールを使用すると、単一の株に関する情報だけでなく、一括レベルでも情報を照会できます。単一銘柄の検索は、シンボル/取引所、ISIN または CUSIP 番号によって実行できます。単一の証券レベルでは、クエリ結果には、利用可能な数量、貸し手の数、およびリベート率の指標 (負の場合は年率で表される借入コストが推測され、正の場合はローンを保証する現金収益に対して支払われる利息リベートが推測されます) が含まれます。最小しきい値を超えています)。最新および過去 30 分単位で 1 日を通して借りられる株式の数量に関する情報も利用可能です。

 

さらに、過去 10 日間の金利の傾向に興味のある借り手は、毎日の最低金利、最高金利、平均金利を表示できます。

このツールを使用すると、テキスト ファイル (銘柄/取引所または ISIN の詳細を含む) をアップロードし、単一のクエリ内で複数の株式の在庫状況を一括で検索することもできます。これらの一括リクエストにより、パブリック FTP サイトから利用できるサンプル ファイル出力と同様の .CSV ファイルが生成されます。

関連記事

(/引用)

[Q] SLB情報はどうやって調べますか?

API経由でSLB(空株ローン/借入)の手数料率を取得したいと考えています。

どこにも見つかりません(ティックデータ、ロイターのファンダメンタルズデータレポートなど)。

それが可能かどうか知っている人はいますか?

[A] 投稿者: mattpearson911@yahoo.com

2016 年 10 月 7 日に追加

ここからダウンロードできます。

ftp://ftp3.interactivebrokers.com/

ログイン: ショートストック

パスワードなし (空白のまま)

[Q] TWSとオプションスプレッド

[A]スレッド 全体を読む 

[Q] 奇妙なシータ

TWS API によって返された非常に大きなシータを見た人はいますか? tsla 195C の theta 1.7976931348623157E+308 を入手しました。twsサーバー側のエラーですよね?ところで、他のギリシャ語はすべて正解でした。

[A]  by カート

max double 値は、未定義またはデータなしを意味するために使用されていませんか? これは非常に見慣れた数字であり、このフォーラムの質問で驚くほど何度も出てきます。ウィキペディアには次のことが示されています。

    7fef ffff ffff ffff 16    = (1 + (1 – 2 -52 )) × 2 1023 

                        ≈ 1.7976931348623157 × 10 308  (最大 2 倍)

データなしの場合にどの値が使用されるかについて、IB の引用符内に一貫性がありません。–1 の場合もあれば、-.99 の場合もあり、0 の場合もあり、「最大」値の場合もあります。

現時点では、私のアプリでは、今日期限切れになる多くの TSLA 呼び出しに対して未定義の値が表示されています。私のコードは、特別な値を表示可能な値に変換します。他のいくつかの有効期限を確認しましたが、それらは正常な値でした。

IB の戦略は、計算が安定していない場合にはギリシャ語を未定義にすることであり、シータの場合は満了日に驚くことではありません。

-カート

- また -

丁さん、

[これらのコメントは C++ に適用されます。]

問題の値は DBL_MAX です。または、これはコード内で参照できる 1 つの方法であり、IB がソケット インターフェイス層コード (EClientSocketBase::EncodeFieldMax など) で参照する 1 つの方法でもあります。

    #define UNSET_DOUBLE DBL_MAX

場合によっては (EClientSocketBase::DecodeFieldMax など、矛盾が見られる場合など)。

API がギリシャ語に対して DBL_MAX を返すことはまったく奇妙ではありません。その値は常に取得されるため、API からギリシャ語の値を使用している場合は、DBL_MAX を確認する必要があります。コードを確認したところ、実際に DBL_MAX であることを確認し、通常の方法 (TWS API の場合) で値が利用できないことを意味すると解釈しました。ticOptionComputation コールバックへの次の引数の場合に、DBL_MAX をチェックします。

    暗黙のボリューム

    デルタ

    ガンマ

    ベガ

    シータ

    オプト価格

TWS がまだ値を表示している場合でも、これらの値が API で発生するのは事実かもしれません。おそらく、TWS は何か (有効かどうか) を表示することにそれほどうるさくありませんが、IB は、誰かが自動的に取引する可能性があるときに、不安定な値を API に送信するリスクを負いたくないのかもしれません。

そういえば、オプショントレーダーには必ずギリシャ語が表示されていた記憶があります。間違っている可能性もありますが、列がまばらに空白だった記憶はありません。一方、私は API アプリで空のギリシャ語列が (DBL_MAX の発生に基づいて) 値が提供されている他のギリシャ語列と混在しているのを頻繁に見ることに慣れています。

私のコードでは、手数料やさまざまな注文フィールドの UNSET_DOUBLE (DBL_MAX と同じ値) もチェックしていることがわかります。この値 (整数の場合は UNSET_INTEGER = INT_MAX) は多くの場所で使用されます。

この値はほぼすべてのティック (引用符) フィールドに使用できるのではないかという印象がありましたが、現時点ではその証拠は見つかりません。TICK_PRICE/tickPrice の場合、DECODE_FIELD_MAX ではなく DECODE_FIELD が使用されます。DECODE_FIELD_MAX は OPEN_ORDER にのみ使用されるようです。DECODE_FIELD_MAX は実際には、IB がソケット上でヌル文字列を送信し、それが DBL_MAX を意味することを許可するためにのみ使用されます。DBL_MAX はいつでもソケット上で直接送信できます。ギリシャでは DECODE_FIELD_MAX ではなく DECODE_FIELD が使用されているため、明らかにそれが行われています。

ただし、上記の場合を除いて、私のコードには特殊ケースや DBL_MAX または UNSET_DOUBLE の兆候は見られません。

-カート

[Q] API クライアントは、TWS で手動で実行されるオプション行使をどのように検出する必要がありますか?

こんにちは、

API クライアントは、TWS で手動で実行されるオプション行使をどのように検出する必要がありますか?

API クライアントはオープン注文イベントを受け取りますが、厄介なことに、その注文イベントは論理的な「売り」ではなく常に「買い」です (オプション行使はロング オプションでのみ実行できます。ロング ポジションをクローズする方がより適切に特徴付けられます)私の考えでは、購入よりも販売と考えています):

5;34;-279;283326534;DIA;OPT;20171020;231;C;100;SMART;USD;DIA 171020C00231000;DIA;購入;100;LMT;0.0;0.0;DAY;;U###;C; 0;;0;1689659455;0;0;0;;1689659455.0/U###/100;;;;;;;;;;0;;-1;0;;;;;;;0;0; 0;;3;0;0;;0;0;;0;なし;;0;;;;?;0;0;;0;0;;;;;;0;0;0;;;; ;0;;IB;0;0;;0;0;非アクティブ;1.7976931348623157E308;1.7976931348623157E308;1.7976931348623157E308;;;;;;0;0;0;なし;1.7976931348623157E30 8;1.7976931348623157E308;1.7976931348623157E308;1.7976931348623157E308 ;1.7976931348623157E308;1.7976931348623157E308;0;;;;1.7976931348623157E308

注文イベントが売りの場合は、TWS から受信した他の注文イベントと同様に簡単に処理できます。

あるいは、注文イベントがどういうわけか行使として特定された場合は、買いを売りに切り替えることもできます。

しかし、現状では、注文イベントには練習として示されるものは何も表示されず、受け取ったすべての注文イベントで買いと売りを交換することもできません…

ありがとう!

ジミー

[A] by Josh:オンラインで表示/返信 (#38869)

ジミー、

最も直感的ではないことには同意しますが、オプション行使の指示は、orderStatus に対して常に注文側 = "BUY" として表示されます。reqOpenOrder または reqAllOpenOrder を呼び出した後には orderStatus は返されず、警告メッセージのみが返されるため、注文ステータスの動作も異なります。

行使リクエストは、コンボ契約を含まない他の注文では不可能であるため、指値「0」によって識別できます。

ジョシュ

[Q] オプションの行使価格を確認するにはどうすればよいですか?

たまたま次の質問と同じです。

[Q] 有効なオプションをすべて取得するには(オプションチェーンをスクレイピングする)どうすればよいですか?

[A] (Python を使用) by Juergen juxeiier@gmail.comオンラインで表示/返信 (#46782) 

2021 年 3 月 20 日に追加

こんにちは、

(うまくいけば) 簡単な方法でオプションチェーンをスクレイピングできる小さなライブラリを作成しました。

このトピックはここで議論されています

https://groups.io/g/twsapi/message/46566

https://groups.io/g/twsapi/message/42241

https://groups.io/g/twsapi/topic/81356218

ソース コードとインストールの詳細は、https://github.com/juxeii/ibtoolsにあります。

使い方は次のように簡単です。

チェーン = ibt.getOptionContractsUpUntilDays(aapl, 60)

または

aapl=株式(symbol='AAPL',exchange='SMART/AMEX')

チェーン = ibt.getOptionContractsUpUntilDays(aapl, 60)

私のサイトでは動作しますが、非常に新しいので、おそらくいくつかの欠点があります 🙂

誰かがそれをテストできたら素晴らしいでしょう。

乾杯、

ユルゲン

[A2] (ルビを使用) by Hartmut Bischoff

2021 年 3 月 20 日に追加

こんにちは、

ib-ruby (https://github.com/ib-ruby) には、atm、itm、および otm-option-chains で動作する機能があります。

ドキュメンテーション

https://ib-ruby.github.io/ib-doc/atm_options.html

実装

https://github.com/ib-ruby/ib-extensions/blob/master/lib/ib/option-chain.rb

プログラムを完成させるために、一度見てみる価値はあるかもしれません

【Q】オプションチェーン全体を引くにはどうすればいいですか?

[A]  by Kurt (この スレッドから)

「ちょうど」ストライクを獲得する方法はありません。可能な限りのストライクを得るには

考えられるすべての有効期限にわたって、オプションチェーン全体をポーリングする必要があります。

欲しいものだけをメモして、残りは捨ててください。

これを行うには、あいまいなコントラクトで reqContractDetails を使用します。

仕様、つまりストライク、有効期限、権利の範囲外であれば、単に *設定* しないだけです。

ワイルドカードを使用するフィールド。次に、一連の内容全体が返されます

単一のリクエストからのcontractDetailsレスポンス。これは次の方法で追跡できます。

リクエストID。チェーン全体を受け取った時点で、

そのリクエストIDに対してcontractDetailsEndメッセージが到着します。

このメソッドでは、有効期限と権利 (「C」または「P」) を指定して取得することもできます。

すべてはその有効期限と権利に対してストライキされます。お好みの組み合わせでどうぞ。しかし、そこに

有効期限の独立したリストやストライクの独立したリストはありません。

組み合わせ。右側を未設定 ("") のままにすると、両方の呼び出しが行われます。

そして置きます。

最後にテストするときは、日付を部分的にワイルドカードにすることもできます。たとえば、

年のみを含む日付の先頭部分のみを指定します。

または、指定せずに年と月だけ (例: "201201")

完全な日付コード。現在は有効期限が週ごとに設定されているため、それほど便利ではありません

(私に言わせればお尻が痛いです)。有効期限が多すぎ、ストライクが多すぎます。

(そして、*他の誰か*が裁定取引に関与することになります。)ああ、良かったですね。

昔。

-カート

[A2]  Kurt によるこのスレッド からの引用

試す:

conId=0 シンボル = "AAPL" secType = "OPT"

expiry="20110415" Strike=345 right="C" multiplier=""

Exchange="SMART" PrimaryExchange="" 通貨="USD" localSymbol=""

includeExpired=0

または:

conId=0 シンボル = "AAPL" secType = "OPT"

expiry="" Strike=0 right="" multiplier=""

Exchange="SMART" PrimaryExchange="" 通貨="USD"

localSymbol="AAPL 110416C00345000"

includeExpired=0

有効期限と OSI の日付には 2 つの異なるバリエーションがあることに注意してください。

シンボル。

先物については、ここで誰かがシンボルを省略できると言ったと思います。

localSymbol でコントラクトを完全に指定しますが、OSI では試したことはありません

オプション。

その間に、他に実行できることをいくつかお伝えしておきます。

の中へ:

* オプション チェーンは、いくつかのフィールド (例:

ストライキ、権利、および/または有効期限)は、ワイルドカードとして機能するために省略されています。道はない

有効期限または権利行使のリストだけをリクエストする場合、一致するリストの完全なリストのみをリクエストする場合

契約。

* 場合によっては、より信頼性の高い結果が得られる場合があります (特定の種類を避ける)

エラーの数)、reqContractDetails 経由で conId を取得し、その conId を使用する場合

他のフィールドの *代わりに * reqMarketData のコントラクトを指定し、

reqHistoricalData、そしておそらく最も重要なのはplaceOrderです。これはもしかしたら

今は昔ほど真実ではありませんが、以前はplaceOrderのほうが多かったです。

他の要求よりもうるさく、他の要求による契約を拒否するでしょう。

リクエストを受け付けました。おそらく、reqContractDetails であることは依然として真実です。

ワイルドカードの可能性があるため、他のものよりも複雑ではありません。

たとえ一致が 1 つしかなかったとしても、それを考える (推測する) ことは当てはまるかもしれません。

-カート

[A3]  by dthayer

オプション データを取得するために使用するコードのカット アンド ペースト。Strike=0.0、expiry=0.0、および right="" を設定すると、プットとコールの両方のチェーン全体が取得されます。

        Contract *C = new Contract();

        C->symbol        = "KMB";

        C->currency        = "USD";

        C->secType = "OPT";

        C->expiry = "20130621";    

        C->strike = 95.0;                        // Define as 0.0 to get entire option chain

        C->right = "P";                                // Put no string, 2 double quotes, if want both put and call

        C->exchange        = "SMART";

        C->multiplier = "";

        C->primaryExchange = "";

        C->localSymbol = "";

        C->includeExpired = 0;

        m_pClient1->reqMktData(msgID,

C,"233",false);        // false – start stream, get tick types

                                                                        // Wait in TWS::contractDetails for reply from TWS

        //m_pClient1->reqMktData( msgID,C,"",true);        // true – get snapshot, don't specify tick types.

[A4]  by rholowczak

ここでは、単純な Java プログラムと IB Java API を使用して、原株 (オプション チェーン) のすべてのオプションの契約詳細を取得する方法の簡単なチュートリアルを示します: コンソールアプリケーションでのインタラクティブ ブローカー Java API のプログラミング – 契約の詳細

Python と Ruby を使用した実装例については、「[Q] すべての有効なオプション (スクレイピング オプション チェーン) を取得するにはどうすればよいですか?」を参照してください。

[Q] オプションチェーンデータが遅れる(場合によっては1分程度)のはなぜですか?

 IB サポートによる[A] : ( joe@higgs-tx.comに感謝)

2016 年 4 月 18 日に追加

残念ながら、これはクライアントがサーバーに大きなストレスをかけないようにするためのペーシング制限の仕様です。オプション チェーンの契約詳細をリクエストする場合、contractDetails () コールバック メソッドは追加リクエストごとにバッファリングされます。以下は、contractDetails バッファリングの内訳例です。

たとえば:

*************************************

If Expiry = Blank or NULL

Symbol = “IBKR”;

secType = “OPT”;

Expiry = “” ;

Exchange = “SMART”;

Currency = “USD”;

Above example, if the expiry is assigned to null or empty string, the delay is 1 minute.

*************************************

*************************************

If Expiry = YYYY (e.g. 2016)

Symbol = “IBKR”;

secType = “OPT”;

Expiry = “2016” ;

Exchange = “SMART”;

Currency = “USD”;

Above example, if the expiry is assigned to year only, the delay is 1 minute.

*************************************

*************************************

If Expiry = YYYYMM (e.g. 201603)

Symbol = “IBKR”;

secType = “OPT”;

Expiry = “201603” ;

Exchange = “SMART”;

Currency = “USD”;

Above example, if the expiry is assigned to year and month format (YYYYMM), the delay is 5 seconds.

*************************************

*************************************

If Expiry = YYYYMMDD (e.g. 20160318)

Symbol = “IBKR”;

secType = “OPT”;

Expiry = "20160318"

Strike = "31";

Right = "C";

Multiplier = "100";

/TradingClass = "IBKR";

Exchange = “SMART”;

Currency = “USD”;

上の例では、有効期限が年に月と日を加えた年 (YYYYMMDD) に割り当てられ、かつストライク、アンド ライト、およびマルチプライヤーまたは TradingClass が含まれている場合、遅延は発生しません。

これは前月オプション契約でのみ機能し、最初の 8 リクエストのみで機能することに注意してください。前月をリクエストしておらず、8 件を超えるリクエストをリクエストしている場合は、デフォルトの 1 分の遅延に戻ります。

—- jb201448@yahoo.comからも — 

 ベータ版には、オプション チェーンをより速く返す新しい関数 reqSecDefOptParams()もあります。

-ジョシュ

[Q] IB のモデルは信頼できるのでしょうか、それとも役に立たず、すべての計算を自分で行う必要がありますか?

[A]

このスレッドを参照してください: https://groups.io/g/twsapi/topic/4045086#21842

【Q】空売りをした場合、借りた株式の配当は支払わなければなりませんか?

[A] フランク・ベル著

配当義務は、その日の市場終了時にポジションが保有されている場合にのみ発生します。

配当落ち日の前。これはスピンオフやその他すべての企業に当てはまります

イベント。

[Q]空売りできる銘柄と空売りできない銘柄はどれですか?

[A] byジェイソン

のリストについては、

IB で空売り可能な株式 (すべての国)、ここにアクセスできます:

http://www.interactivebrokers.com/en/p.php?f=shortableStocks。 完全な

空売り可能な米国株のリストは、ここからアクセスできます。

http://www.interactivebrokers.com/en/trading/ViewShortableStocks.php?cntry=usa&tag=United%20States&ib_entity=llc&ln=。

最後に、規制上の理由により空売りできない米国株のリストについては、

ここに行くことができます:

http://www.interactivebrokers.com/en/trading/ViewShortableStocks.php?cntry=regSHO&tag=Reg%20SHO&ib_entity=llc&ln=  (ただし

このリストの一部の銘柄は、引き続き IB 経由で空売りできる可能性があります)。

【Q】借りられないのですが?

[A] フランク・ベル著

注文が完了するまで、注文を借りられなくなった場合にサイズを繰り返し縮小できます。

成功するか、最小注文サイズに達します。また、開いていることにも注意してください。

借入を失った場合、ショートオーダーは送信済みから事前送信される可能性があります。

[Q] オプションの価格設定ステップはどのように決定すればよいですか?

こんにちは、

一部のオプションの価格にはギャップがあります (たとえば、価格ステップが 5 の場合)

セントで、1.02 ドルのオプションを購入する注文を送信すると、注文は次のようになります。

有効な価格は $1.00 または $1.05 であるため、拒否されました。

さて、コードやプログラムで有効な価格を決定する方法はありますか?

式 (プログラミング言語は関係ありません)

よろしくお願いします

– JW

[A]  by カート

ContractDetails 構造体の minTick フィールドについてお読みください。

-カート

[Q] placeOrder() リクエストに対するセキュリティ定義が見つかりませんでした

[A] [Q] を参照エラーコード(200) リクエストのセキュリティ定義が見つかりませんでした

[Q] 重複したイベントが時々発生します。

[A] IB のドキュメントより:

注:   orderStatus() が重複したメッセージを返す可能性がありますそれに応じてメッセージをフィルタリングすることが重要です。

[A]オンラインで表示/返信 (#44827)

2020 年 11 月 29 日に追加

受け入れられた回答

注文ステータスについては、残りの数量が変更されたメッセージのみを処理することで重複を破棄できます。

[A2] カート著

ただし、この場合、イベントが重複しても問題はないと思います。帯域幅がわずかに増加すること以外にこれが気になる場合は、注文ステータスにモデルを使用していない兆候である可能性があり、そうすることは有益だと思います。最後に受け取ったステータスからモデルを更新するだけでよく、もちろんシステムの要求に応じてステータスのすべての変更を処理します。結局のところ、以前に受信して保存したステータスに対して変化が発生したことを検出するのは非常に簡単です。注文ステータスは、これまでのすべてのアクティビティの累積結果です。そのため、注文ステータスの重複によって問題が発生する場合は、アルゴリズムに簡単な変更を加えて、それに対する影響を排除する必要があります。とにかくそうするのが良い習慣です。  

【A3】

また、興味深いのは、重複した実行イベントを送信せず、重複した注文ステータス イベントのみを送信することです。

【Q】添付注文

[A]

エントリ順序には .transmit=0 を設定し、エントリ順序には .transmit=1 を設定する必要があります。

添付の注文。

両方に .transmit=1 を設定すると、TWS はエントリー順序をその前に送信します。

接続された注文については何でも知っており、注文が実行される前に実行される可能性があります。

添付された注文が TWS に到着します。その場合、説明したエラーが発生します。

起こる。

[Q] 株式オプションのスプレッド不良(ビッド・アスクが大幅に拡大しているようです)

[A]スレッド全体を読んでください

注文(先物)の発注

【Q】先物取引にSMARTは利用できますか?

【A】rwk2095

SMART ルーティングは先物には適用されません。取引所を指定する必要がありますが、その際に追加の手数料はかかりません。

[Q] 特定の将来のオプションを取得するために契約の詳細をリクエストするにはどうすればよいですか?

みなさま

特定の先物の Contract オブジェクトと ContractDetails オブジェクトを取得したので、 reqContractDetails メソッドを使用してその先物のオプション チェーンを取得するために契約の詳細をリクエストしたいのです、Contract オブジェクトを作成するときに基礎となる Future を指定する方法がわかりません。このリクエストのために。コントラクトオブジェクトには基礎となるシンボルフィールド/メソッドしかないので、そのフィールドに未来をエンコードする必要があると思いますが、どうすればよいでしょうか? その将来について受け取った契約/契約詳細に、シンボルを直接設定するために使用できるフィールドはありますか?

Contract createContractForOptionsChainRequest(ContractDetails futureContractDetails) {

    Contract contract = new Contract();

    contract.secType("FOP");

 

    // Can I use any field from futureContractDetails to set the symbol?

    contract.symbol(???);

       

    // What else needs to be set?

       

    return contract;

}

 

有効期限/無効期限情報を取得するための別の呼び出し ( reqSecDefOptParams )があることは知っていますが、それを使用することに興味はありません。

reqContractDetails () がデータを返すのが遅いことも承知していますが、それでも問題ありません。

[A] リチャード L キング著オンラインで表示/返信 (#49441)

2022 年 6 月 12 日に追加

reqContractDetails 経由で完全なオプション チェーンを返したい場合は、次のような設定でコントラクトを指定するだけです。

Sectype="FOP" Symbol="ES" LastTradeDate="202206" Exchange="GLOBEX" Strike="0" Right="CALL"

これにより、2022 年 6 月に期限が切れるすべての ES 将来オプション コール契約が返されます。今朝は 2,300 件ありました。さまざまな取引クラスがあるため (たとえば、毎週有効期限が切れるクラスがあるなど)、このリストには重複したストライクが多数あることに注意してください。「標準」コントラクトのみを取得するには、次を追加します。

TradingClass="ES"

リクエスト契約へ。これにより、リストはより妥当な 280 契約に減ります。

興味深いのは、一部の先物 (FTSE 100 Z 先物など) では、オプションを次のように指定する必要があることです。

Sectype="OPT"

なぜそうなるのか分かりません。

リチャード

[Q] 先物 – 証券定義が見つかりません

[A] リチャード・L・キング著

2021 年 12 月 18 日に追加

ZFはGLOBEXではなくECBOT取引所に上場しています。

 

SMART は先物には無効です。適切な取引所名を使用し、primaryExchange を設定しないでください。

 

3 部構成のローカル シンボルの場合、最初の部分は次のように 4 文字 (その後にスペース) である必要があります。

 

ZF{スペース}{スペース}{スペース}MAR{スペース}21

 

あなたが望んでいるのは:

 

ZF 3 月 21 日

F1U 3 月 21 日

 

ドイツの DAX 先物についても同様です::

 

FDAX 3 月 21 日

[Q] 将来の MOC 注文はできますか?

[A] ロブ・テルピロウスキー著

MOC 注文は、私が知っている取引所の先物には存在しません。

[A2] フランク・ベル著

MOC は ES ではサポートされていません。私がやっているのは、後が良い成行注文を出すことです

時刻は16時14分58秒。おそらく時間を 16:14:59 に設定することもできますが、私はそうするのが好きです。

IBに少しの猶予を与えてください。

フランク

[Q] API経由の先物オプションデータ

[A]  by souqmate (ここで見つかります)

これは、IB の米国先物 (FOP) オプションのジャングルを戦い抜くためのロードマップです。

FOP の履歴データは期限切れの契約では利用できません (古いデータが記録されている場合は、喜んで取引します)。

毎週のオプションは常にヨーロッパスタイルです。それらは外国為替 (AUD CAD CHF EUR JPY)、レート (ZT ZF ZN ZB)、指数 (ES NQ SPX) に対して存在します。

外国為替: 毎月のアメリカ/ヨーロッパオプションがあります: 6A/XA 6B/XB 6C/XD 6E/XT 6J/XJ 6S/XS (実際: XA はありません。IB は忘れましたか?)。

NG: 毎月のアメリカ/ヨーロッパオプションのクラスを ON/LNE にします (ただし、LNE のフィードや履歴データはありません – ただし液体は 4* 多くなります)。

ES: ウィークリー (EW1 EW2 EW4)、月次 (EW3 の代わりに ES)、および EoM (EW、月の最終日に期限切れ) があります。

NQ: ウィークリー(QN1 QN2 QN4)、月刊誌 (NQ)、および EoM (QNE) があります。

SPX (fut): ウィークリー (EV1 EV2 EV4)、月刊誌 (SP)、および EoM (EV) があります。

ZC ZS (ZW ではありません): 通常のマンスリー (OZC OZS) と、12 月に基礎期限が切れるマンスリー (OCD OSD) があり、どちらもアメリカ式です。

ユーロドル オプション (GE@Globex): GE GE0 GE2 GE3 GE4 (Globex)、ED E0 E2 E3 E4 (CME)。ウィークリーはなく、マンスリーのみです。すべての原先物は、同じ年 (GE) または翌年 (GE0 GE2 GE3 GE4) に (四半期ごとに) 満期を迎えます。全部アメリカンスタイル。なぜ GE0 が GE1 と呼ばれないのかはわかりません。  

GE の有効期限は、12 月の GE0 ~ GE4 の有効期限とは異なる場合があります (例: 20131216 と 20131213)。

minTick は有効期限に依存する可能性があります。たとえば、20131011 では、GE の 201406 の minTick=0.005、201403 の 0.0025 が決まります。

StrikeIncrement は有効期限に依存できます。たとえば、ZM: 最初の有効期限は 5 ずつ増加し、2 番目は 10 ずつ増加します。

StrikeIncrement は、ATM では小さく、ATM から離れると大きくすることができます。GF では、ATM の近くでは StrikeIncrement=0.5、ATM から離れると 1 になります。ED は、ATM に近いところでは StrikeIncrement=0.125、ATM から離れると 0.25 です。

SI: 実際のストライクインクリメントはマネー付近で 0.05 ですが、0.25 のみが使用されているようです。

ZC ZL ZS ZW GF LE HE (ZM は除く): ストライクの係数が 1/100 です。API のみであり、TWS ではありません。IBでもそれは変わりません。

NKD PA PL VIX の IB には FOP はありません。

localSymbol には標準化された構文がありません。たとえば、AUD@GLOBEX の場合は「6AZ3 P1075」ですが、YM@ECBOT の場合は「C OYM SEP 14 11600」です。

reqMktData または reqHistoricalData のクエリでコントラクトを指定する 3 つの方法:

———————————-

symbol = GBP

secType = FOP

expiry = 20131108

strike = 1.55

right = P

tradingClass = 6B

exchange = GLOBEX

————————————-

currency = USD

conId = 132707825

exchange = GLOBEX

————————————-

localSymbol = 6BX3 P1550

secType = FOP

exchange = GLOBEX

————————————-

これらは API 9.69 以降 (2013 年 7 月以降) で動作し、tradingClass は ContractDetails から Contract にプルされています。

API 9.68 以前の場合: これらのクエリの最初のクエリのみが機能します。Strike、Expiry、right は必須であるため、conId の指定は冗長です。したがって、NG、外国為替、および GE オプションの場合: 月次のヒスト データをクエリするときに、アメリカ/ヨーロッパ スタイル (外国為替、NG) またはミッドカーブ オプション (GE0 GE2 GE3 GE4) の間の曖昧さを区別するために、localSymbol を指定する必要があります。conId はここでも役に立ちません。tradingClass とmarketName も同様です。  

迷惑な localSymbol 構文: 外国為替 (「6SH4 P0950」) または GE (「GEV3 C0112」) の場合、localSymbol の末尾には常に 4 桁がありますが、NG (「ONX3 C900」または「ONX3 C1000」) の場合は 3 桁または 4 桁です。この数字は外国為替およびNGでは1000*ストライクですが、JPYでは1e5*ストライクです。GE の場合、ストライク = 99.875 の場合は「GEV3 C9987」ですが、ストライク = 101.125 の場合は「GEV3 C0112」になります。printf("%04d\n",100*strike %1e4) も同様です。  

ただし、API 9.69 以降では、localSymbol の代わりに tradeClass または conId を使用して曖昧さを解消できます。

IB ファイルの 1 日あたりの取引量は約 100 ドルです。ftp://ftp.cmegroup.com/pub/settle/stl* の CME ボリュームの半分

残りは穴から出てくると思います。

幸せなFOPさん、

スークメイト

【Q】先物前月の入手方法

先物契約の有効月を常に確実に取得するにはどうすればよいですか?

includeExpired = Trueを使用し て日付を確認することもできますが、より堅牢なものが必要です。4 週目に有効期限が切れると、次のメッセージが表示され始めます: ERROR 1 200 リクエストのセキュリティ定義が見つからず 、これをキャプチャするコールバックがありません。

私が使用しているものは次のとおりです。

        def subscribe(self):

            c = ibapi.contract.Contract()

            c.symbol = 'CL'

            c.secType = 'FUT'

            c.currency = 'USD'

            c.exchange = 'NYMEX'

            c.lastTradeDateOrContractMonth = "201706"

            reqId = self.getReqId()

            self._reqId2Contract[reqId] = c

            self.reqContractDetails(reqId, c)

includeExpired=True を使用し、有効期限が切れていない契約に達するまでその月をループすることにしました。

すべての先物有効期限のリストを取得する方法があると考えました。たぶん私が間違っていて、それはオプションチェーン用でした

[A] by souqmate (ここで見つかります)

2017 年 5 月 15 日に追加

reqContractDetails() と

 シンボル="CL" secType="FUT" Exchange="NYMEX" 通貨="USD" includeExpired="1"

97 件の契約を無効にし、そのうち 24 件が期限切れとなった(IB は 2 年分の先物データを保管し、その後破棄します)。

前月が必要な場合は、includeExpired を削除し、出力内の 73 契約のうち最も若い契約を見つけます。それが必ずしも最も多く取引されるものであるとは限りません。

ロールデートの独自のカレンダーを作成することをお勧めします。ここ

[A2] ニック著

(学術研究に限らず) 取引を行う場合、現在の契約が期限切れになる前に、ほぼすべての活動が次の契約に移行します。これは、souqmate が注意するようにアドバイスしているロールオーバー日であり 、私も彼の意見に同意します。

[A3] by マーク

こんにちは、ジャレッド

私は IB API を初めて使用するため、これよりも優れた方法があることはほぼ間違いありませんが、私の解決策は、有効期限を自分で計算し、有効期限が切れたら次の将来に切り替えることでした。

間違った未来をリクエストしても実害はないので、エラーを抑制してリクエストを分散させることができます。

幸運をお祈りしています、

マーク

[A4] JG著

lastTradeDateOrContractMonth を指定しない場合は、すべての先物契約に関する情報を受け取ります。

最終取引日だけでは十分な情報が得られない場合があることに注意してください現物受け渡しのある特定の契約の場合、最初のポジション日より前にポジションを離れる必要があります。詳細については、こちらを参照してください -> http://ibkb.interactivebrokers.com/node/992

[Q] 継続契約のロールオーバースケジュール

利用可能な先物の毎日のデータを使用して、継続的な契約を作成しようとしています。私のコードでは、建玉や出来高ではなく、特定の日付(最初の通知日、または満了前の特定の日など)に基づいて次の契約にロールオーバーする予定です。ただし、ロールオーバールールは将来の契約ごとに異なるため、さまざまな将来の継続契約ロールオーバースケジュールをどこで取得できるかを誰かが見つけるのを手伝ってくれないかと思いました。Google やグループ会話のアーカイブを検索してみましたが、答えは見つかりませんでした。誰かが私を導いていただければ大変助かります。

よろしく、

ファティマ。

[A]  by souqmate ( 古い yahoo グループにありましたが、現在は groups.io に移動し います)

以下は私のロールのカレンダールールです(人によって異なると思います)。

ロイターの RIC を使用しているため、必要に応じて IB シンボルに変換できます。

D 日のロールと言うときは、D 日の朝に新しい契約が取引に使用されることを意味します。

有効期限は reqContractDetails の出力に表示されます。

幸運だ

スークメイト。

STXE FDX FSMI FFI IFS IFX、HMUZ 月のみ、有効期限日にロールされます。

FCE MFXI OMXS30 AEX、毎月、有効期限日にロールされます。

ES NQ YM DM TFS RMF、HMUZ のみ、有効期限前の金曜日にロールされます (つまり、YM の場合は 5 日前 – 木曜日):

CL NG、すべての月、有効期限日の 1 日前にロール:

HO RB、すべての月、有効期限日の 8 日前にロール:

GC、GJMQZ のみ、有効期限月の前の 3 日から末日までロールされます (2 日前の IBprod でした):

SI HG (HKNUZ のみ) は、満了月の前の 3 日から末日までロールされます (2 日前の IBprod でした):

PL、FJNV のみ、ロールオン 3. 満了月の前の末日まで:

PA、HMUZ のみ、ロールオン 2. 満了月の前の月の末日まで:

FGBX FGBL FGBM FGBS NK JNI JNM YAP SXF、HMUZ のみ、有効期限日の 1 日前にロール:

ZB ZN ZF ZT、HMUZ のみ、有効期限月の前の 2 日から末日までにロールオン

FSS FEI FES JEY ED BAX YBA、HMUZ のみ、有効期限の翌日にロールオンし、常に c2 を使用します。たとえば、H7 の有効期限は 20070321 であるため、20070321 までは M7 を使用し、20070322 以降は Z7 を使用します。

FLG CGB (HMUZ のみ) は、有効期限が切れる前の月末の 3 日前にロールされます。

YTC YTT JGB (HMUZ のみ) は満期日にロールされます:

IND、GJMQVZ のみ、有効期限日にロールされます。

CME 農業 (ZC ZW ZS ZL ZM LC FC LH): 有効期限月の前月の最終週にロールインします。

ZC/C: HKNUZ、すべての U 契約をスキップします (U05 20050629-20050713 を除く)。

ZW/W: HKNUZ、ほとんどの U 契約と多くの K 契約をスキップします。

ZS/S: FHKNQUX、(X03 の代わりに) Q03 と U03 を除く FHKNX のみを使用します。

ZL/BO: FHKNQUVZ、FHKNZ (および Q04 までの Q) のみを使用します。

ZM/SM: FHKNQUVZ、FHKNQZ のみを使用します (Q をスキップする場合があります)。

LC: GJMQVZ、

FC: FHJKQUVX、RDTH ボリュームを使用した切り替え (3 つの U 契約を破棄)。U 契約をスキップできます

左:GJKMNQVZ。GJMNQVZ のみを使用します。RDTH ボリュームを使用した切り替え。15.-25をロールオンします。満了月の前月の。

ICE先物:

CC:HKNUZ; ロールイン 2. 有効期限月の前の月の週。

KC:HKNUZ。ロールイン 3. 満了月の前の月の週。

CT: HKNVZ ただし、HKNZ のみを使用します。満了月の前月の 15 日頃にロールします。

SB: HKNV、ロールイン 3. 満了月の前月の週。

LCO/CO: すべて 12m FGHJKMNQUVXZ; 期限切れの 2d 前にロールします (期限切れの 1d 前にロールする CL と同様)。

CME 外国為替: URO BP JY RP SF CD AD KRW MP DX、すべて HMUZ (ただし、KRW の場合はすべて 12m – Kor Fut Exch で)。有効期限の 1 日前にロールします。最後の取引は、限月の第 3 水曜日 (通常は月曜日) の前の第 2 営業日の午前 9 時 16 分 (シカゴ時間) です。

—————————————–

スークメイト、

有益な情報、ありがとう。ロールするときに価格調整の逆伝播も実行しますか? 真の連続契約履歴データ ファイルを作成するには、契約ロールごとに以前の価格を調整する必要があります。むしろ、株式の分割を調整するようなものです。

———————————————-

はい、古い契約と新しい契約の間の決済価格(またはロール日前日の決済時間前の最後の取引価格)の差を使用して、差額によってロールします。これにより、戦略における損益を計算するための継続シリーズが得られます。

スークメイト。

[Q] 継続契約 – オフセットはどのように決定するのですか?

[A] https://groups.io/g/twsapi/topic/4044951

【Q】真の継続契約ヒストリカルデータ(先物)を作成するにはどうすればよいですか?ロールするときに価格調整の逆伝播も実行しますか?

スークメイト、

有益な情報、ありがとう。ロールするときに価格調整の逆伝播も実行しますか? 真の連続契約履歴データ ファイルを作成するには、契約ロールごとに以前の価格を調整する必要があります。むしろ、株式の分割を調整するようなものです。

souqMate の[A] はここにあります

2016 年 8 月 19 日に追加

はい、古い契約と新しい契約の間の決済価格(またはロール日前日の決済時間前の最後の取引価格)の差を使用して、差額によってロールします。これにより、戦略における損益を計算するための継続シリーズが得られます。

スークメイト。

【Q】先物:「ファースト・ポジション・デート」とは何ですか?

[A]マルコム・ヘイロック著

2016 年 8 月 20 日に追加

ロールスケジュールをありがとう。これを維持する必要があることは、明らかに契約の変更に敏感です。

最初のポジションの日付は契約の一部です。IB Web サイトから契約の詳細を開くと、次の情報が表示されます。

https://pennies.interactivebrokers.com/cstools/contract_info/v3.9/index.php

多くの契約では、清算日は最初のポジションの日付によって決まります。

http://ibkb.interactivebrokers.com/node/992

API を介して最初のポジションの日を取得する方法があれば、ロールオーバー戦略の作成がはるかに簡単になります。


0 件のコメント :

コメントを投稿