IB証券TWSのAPIドミトリーFAQ:FX関連、ポートフォリオ情報、その他

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

目次

FX(外国為替)に関するメモ

[Q] APIでFXCONVをサポートしますか?

API ドキュメントで FXCONV (Forex) を検索しましたが、それについての言及はありません。 APIでは全くサポートされておらず、オプションはIDEALPROのみなのでしょうか?

IDEALPRO が悪いのは、手数料が若干高いことと、役に立たない、わかりにくい仮想 FX ポジションが作成されるためです。

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

2021 年 2 月 27 日に追加

はい、サポートされています。(「IDEALPRO」の代わりに) 交換フィールドをそのように設定するだけです。ちなみに、仮想位置レポートを受け取りたくない場合は、設定を通じて仮想位置レポートをオフにすることもできます。

はい、「FXCONV」は、TWS と同様に、注文を行うためだけに使用されます。 TWS には、グローバル設定 -> API -> 設定 -> 「ポートフォリオ送信時に仮想 FX ポジションを含める」という設定があり、これをオフにすると仮想ポジションが返されないようにできます。

[Q] オーダーブックの先頭にある IDEALPRO LMT 注文が約定されません

親愛なるみんな、

皆さんの中にIDEALPROで取引した経験のある人はいるでしょうか。

reqMktDepthEx を使用して、買い注文と売り LMT 注文をオーダーブックの先頭に配置する取引システムをコーディングしました。指値価格はオーダーブックに応じて継続的に更新されます。問題は、私の注文が一日中注文帳の一番上にあるにもかかわらず、システムがまったく取引を行わないことです。 EUR.ILS と EUR.JPY を試してみましたが、同じ結果でした。

この問題を解決する方法について何か提案はありますか?

よろしく

マーティン

この スレッド で[A]が見つかりました

2015 年 9 月 9 日に追加

親愛なるみんな、

助けてくれて、興味深い議論をしてくれてありがとう。ついに、IBで状況を説明してくれる人を見つけました。

以下の引用を参照してください。

 

IB クライアント A が最良の入札 (銀行の流動性プロバイダーより有利) となり、IB クライアント B が売却を希望した場合、彼らはあなたの入札に対して約定することができます。

IB のクライアントのみが、IB クライアント A の入札に積極的に応じることができます。これは、当社が内部注文を外部の第三者に公開しないためです。  

USD.ILS は非常に流動性の低い通貨であるため、しばらくの間は IB クライアント A の入札に興味がなくなる可能性があります。 EUR.USD の場合、これは非常に流動性の高い通貨であるため、これは異なる可能性が高くなります。 IB 内の誰も IB クライアント A の入札に応じなかった場合、入札は別の IB クライアントの注文と照合されるか、銀行流動性プロバイダーのオファーに一致するまでその入札が維持され、その場合は約定されます。  

これにより、私たちのプラットフォームがどのように機能するかについてより多くの洞察が得られることを願っています。

 

重要なのは、IB のクライアントだけが私の注文をヒットできるということです。 EUR.ILS または EUR.HUF を取引する IB の顧客はおそらく非常に少ないでしょう。 IBが命令を外部に公開しないのは残念です。 FX市場全体がIBの顧客のみを作成する状況では、多くのFXペアには流動性がほとんどなく、そのためIDEALPROはそのような種類の操作には使用できなくなります。

IBI によると、DEALPRO は世界の外国為替市場の 78% のシェアをカバーしており、最大手の外国為替取引銀行 14 行が参加しています。残念ながら、私の注文を見ることができるのは世界の為替市場のごく一部だけであるため、この記述は非常に誤解を招きます。

私のモデルは、ブルームバーグとロイターからのティックデータに基づいています。これらのデータは、おそらく IB の顧客が提供するよりも EUR.ILS (および他の FX ペア) での流動性がはるかに大きいことを示しています。私はさまざまなプロバイダーからのいくつかのデータセットをテストしました (私のデータセットの全体的なカバー範囲は世界の外国為替市場の 90% 以上です)。

 

これまでのところ、IB は非常に優れたブローカーであることがわかりましたが、FX の世界市場のカバレッジに関するこの誤解を招く記述は受け入れられません。

 

IB のティック データを取得して、自分のデータ セットと比較することは可能ですか?

よろしく

マーティン

[Q]私のFX計算をチェックしてください!

私はこれを長い間見つめてきたので、いくつかの点で自分自身を完全に混乱させました。ここで誰かが私を正してもらえれば本当に感謝します。

次のことを考慮してください。

public static Contract getEurUsdForex()

{

  Contract contract = new Contract();

  contract.Symbol = "EUR";

  contract.SecType = "CASH";

  contract.Currency = "USD";

  contract.Exchange = "IDEALPRO";

  return contract;

}

 

Order order = new Order();

order.OrderType = "MKT";

order.Account = AccountNumString;

order.TotalQuantity = 80000

order.Action = “BUY”;

ibConn.ClientSocket.placeOrder(nextOrderId++, getEurUsdForex(), order);

 

(FXTrader ウィンドウの EUR.USD の下) 開始ポジションが -40K の場合

質問1:

これを実行し、注文が 1.3900 で約定された場合 (新しいポジションは +40,000 です)、80,000 ユーロをそれぞれ 1.39 ドルで購入したことになりますか、それとも 80,000 ドル相当のユーロをそれぞれ 1.39 ドルで購入したことになりますか?

質問2:

次に、アクションを「SELL」に変更し、注文が 1.3901 で約定された場合 (新しいポジションは -40,000 です)、[この取引で] 純利益は 0.0001 * 80,000 ユーロ (それぞれ $1.3901 で = 8 ユーロ =) になります。 11.1208ドル?

この取引の手数料は 0.00002 * 80K * $1.3901 = $2.224 になりますか?

[A] by vanx23@outlook.com

答え #1:

80,000 ユーロ単位を購入したことになります。合計 111,200 米ドル相当。

答え #2:

売り取引と同様に、買い取引にも手数料がかかります。

80,000 @ 1.39 = 111,200 USD * 0.00002 = 2.224 を購入

80,000 @ 1.3901 = 111,208 USD * 0.00002 = 2.22416 を売る

合計手数料: 4.448 USD

利益/損失 = 8 米ドル

純利益: 3.55 米ドル

注: API を通じて通貨を購入しません。私はその目的で TWS を使用します。

[Q] ドキュメントによると、m_avgPrice には手数料が含まれているはずですが、含まれていません。

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

私は外国為替取引をしないので、間違っている可能性がありますが、IBで外国為替取引を行う場合、手数料はかからないという理解でした。ブローカーの報酬は買値と売値のスプレッドを通じて得られるため、実際にそれを目にすることはありません。

[rwk]

[Q] 為替履歴データが取得できないのですが?

[A] by カート

IB にはネイティブという概念があります (あるいは、より大きな文脈で意味があるかもしれません)。

通貨ペア。ネイティブ ペアのみがサポートされ、反転されたペアはサポートされません。

ペア。ネイティブペアはIBウェブサイトのどこかにリストされていますが、ここでは

これらは conId 値とともに使用するものです (これは使用する必要はありません)

ただし、コピー/ペーストには便利でした)。

米ドル.スイスフラン 12087820

ユーロ米ドル 12087792

ニュージーランドドルUSD 39453441

USD.NOK 37971206

米ドル.円 15016059

米ドル.スウェーデンクローナ 37893486

英国ポンド、米ドル 12087797

オーストラリアドルUSD 14433401

USD.CAD 15016062

USD.SGD 37928772

USD.MXN 35045199

米ドル.香港ドル 12345777

KRW.USD 27717934

-カート

[Q] 「リアルタイム」FX ティッカーから TRADES を取得できないのはなぜですか?

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

申し訳ありませんが、役立つコードがありません。他の人が使ったことがある

FX契約を指定するにはさまざまなアプローチがありますが、私が使用する方法は

EUR.USD の例では、記号として EUR、記号として USD を指定します。

通貨、証券タイプとして CASH、取引所として IDEALPRO。

すべてのFXペアは一方向の履歴データのみを提供すると思いますが、

つまり、ティック データと

実行は両方に提供されます。また、グラフ化できるのは IDEALPRO のみです。

理想的。

またFXではTRADESのデータは取得できず、BID、ASK、BID_ASK、および

中間点。

最後に、一部の FX ペアには履歴データがまったくありません (私の知る限り)。

HKD.USD (または USD.HKD) など。 HKD.USD は IDEAL のみ、USD.HKD は

IDEALPRO ですがチャート化できません。

-カート

[Q] 外国為替ポジションを追跡しますか?

[A] by カート

  • updatePortfolio() が返す値を調べ始めたところです。私
  • /考えました/ 'positions' は数量を返すと思いますが、私の数値は返されません
  • それには大きすぎます。
  • 例: AUD.USD の外国為替ポジション数量=154171 BOT が約定されました
  • 00:09:03 (TWS の「取引」ページによる)
  • m_localSymbol=AUD.USD を持つ最初の updatePortfolio() イベントは、次の場所に到着しました。
  • 00:14:17 とレポート
  • 位置=-13440588
  • この位置の値は何を意味するのでしょうか? (記録のために、IB のドキュメント
  • 「この整数は契約上のポジションを示します。ポジションの場合
  • が 0 の場合、ポジションがクリアされたばかりであることを意味します。」)
  • 参考までに、この結果は紙取引、IB API バージョン 9.4 によるものです。
  • ありがとう
  • [このメッセージのテキスト以外の部分は削除されました]
  • 返事
  • カート・ビグラー
  • 2010 年 6 月 5 日
  • ソースを表示
  • 2010 年 6 月 4 日午前 9 時 41 分、「Barnet Wagman」< b.wagman@… > は次のように書きました。
  • > updatePortfolio() が返す値を調べ始めたところです。私
  • > /考え/ 'positions' は数量を返しますが、私は数値を返します
  • > それをするには大きすぎます。
  • >
  • > 例: AUD.USD の外国為替ポジション = 154171 BOT が約定されました
  • > 00:09:03 (TWS の「取引」ページによる)
  • >
  • > m_localSymbol=AUD.USD を持つ最初の updatePortfolio() イベントは、次の場所に到着しました。
  • > 00:14:17 とレポート
  • >
  • > 位置=-13440588
  • >
  • > この位置の値は何を意味しますか? (記録のために、IB のドキュメント
  • > は、「この整数は契約上のポジションを示します。ポジションの場合
  • > が 0 の場合は、ポジションがクリアされたばかりであることを意味します。」)
  • >
  • > 参考までに、この結果は紙取引、IB API バージョン 9.4 からのものです。
  • 他の人もペーパートレーダーでのポジションをまぐれで報告した可能性があると思いますが、
  • しかし、詳細は思い出せません。ペーパートレーダーは一切利用しません
  • 深刻な。 😉
  • しかし、TWSには、事件における立場の概念について重大な偶然もあります
  • FXの。 FX ではポジションを「取得」することはできません。 「仮想ポジション」を取得するか、
  • 何か。に関して取ったネットポジションを取得します。
  • 問題の*特定の*通貨ペア、そして何年も経つと、
  • 正確にどのようなシーケンスが発生するかによって異なりますが、それをゼロにすることは決してできません。
  • その間に取引した通貨ペア。
  • 個人的には、updatePortfolio の結果を無視して、
  • 代わりに updateAccountValue の結果が表示されます。 CashBalance の値を調べます。
  • 各通貨 (BASE を除く) でその *通貨* のネットポジションを決定します
  • (ペアではありません)。また、ExchangeRate 値を使用して、効果的な値を決定します。
  • 私のベースに関連したその通貨の表示可能な市場価値、および
  • 私のベース内の位置の値を計算します。
  • ディスプレイ用としては十分機能します。取引の場合は、おそらく独自のモデルを作成する必要があるでしょう。
  • 注文ステータスと約定レポートに基づくポジション値、およびおそらく
  • 多少遅れた updateAccountValue に対して動的に調整します。
  • 時々何かが欠けているので、情報が入ってくるたびに
  • データ ストリームから、正しいモデルを取得する必要がある可能性があります。
  • ポジション。
  • 私は個人的には、仮想 FX ポジションをわざわざ使用するつもりはありません。
  • API。 TWS自体を取引するとき、私はそれに引っかかってしまい、次のようにします。
  • しますが、年が経つにつれて悪化します。
  • -カート
  • 返事
  • カート・ビグラー
  • 2010 年 6 月 6 日
  • ソースを表示
  • 元の質問に答えるには…
  • 最初に大きな負の数字を見たとき、あなたが今逃げ出したばかりだと思いました
  • バグに陥る。そのペアの「仮想」FX ポジションは、
  • あなたの純活動が次の場合、ペーパートレーダーではマイナス1,300万になる可能性があります
  • AUD.USD はその通貨ペアを空売りすることになりました。しかし、シングルトレードの場合は、
  • あなたが行った AUD.USD での取引は名前付きの唯一の取引でした。その場合、それはすべきではありません。
  • この事件を見て、私はそれがバグであるという考えに戻りました。それか、それとも
  • API メッセージの解析または使用しているコードで問題が発生しました
  • ログ値 – ただし、Java では表示されるべきではありません (C/C++ では表示される可能性があります)
  • printf 内の弱いコンパイラ警告)。
  • 興味深いことに、通貨の使用について言及したのは (最近) 2 人目です。
  • ペア名をローカルシンボルとして使用します。つまり、
  • 通貨フィールド。さらに興味深いのは、updatePortfolio 経由で表示されることです。
  • この形で、私は予想していませんでした。最後は別の人
  • 数週間後、これに関連して最近行動が変化したことが示されました
  • FX約定を指定する際に「機能」を指定しますが、適用されるかどうかはわかりません
  • 9.4 に影響します。
  • -カート
  • メッセージ履歴を表示する
  • 返事
  • バーネット・ワグマン
  • 2010 年 6 月 6 日
  • ソースを表示
  • updatePortfilio に関する情報をありがとう – 絶対に避けます
  • それ。現在、注文執行に基づいて独自の残高を維持していますが、
  • あなたが示唆するように。 updateAccountValue メッセージを聞いてうれしいです
  • 少なくとも自分の数値をチェックするためには役に立ちます。
  • 「ローカル シンボル」については、次のようになります。
  • 外国為替取引を識別するために「ローカルシンボル」を使用します。
  • IB 外国為替注文が表す実際の「契約」を反映します。
  • たとえば、EUR.USD の注文は EUR の数量として指定されます。で
  • IdealPro では、USD.EUR の「契約」は存在しないため、USD を EUR で購入するには、
  • EUR.USDを売却するために必要です。私が理解しているところによると、IdealPro には、
  • 少なくとも通貨ペアごとに 1 つのコントラクト (ローカル シンボル) のみ
  • 現在では(私が読んだところによると、かつてはもっと多くのペアがありました)。
  • ローカルシンボルを使用すると、作業が少し簡単になります。
  • ただし、Contract オブジェクトを作成するときは、すべての通貨フィールドを設定します。
  • 契約.m_通貨
  • 契約.m_symbol
  • Contract.m_localSymbol
  • 3 つすべてを設定する必要があるかどうかはわかりませんが、機能するようです。
  • モノクロ
  • カート・ビグラーはこう書いている。
  • >
  • >
  • > 元の質問に答えるには…
  • >
  • > 最初に大きな負の数を見たとき、あなたが持っているものだと思いました
  • > ただ走ってください
  • > バグに陥りました。そのペアの「仮想」FX ポジションは、
  • > 純活動が次の場合、ペーパートレーダーではマイナス 1,300 万になる可能性があります。
  • > AUD.USD はそのペアを空売りすることになりました。しかし、シングルトレードの場合は、
  • > あなたが行った AUD.USD での取引は指定されたものだけでした。その場合、それはすべきではありません。
  • > この事件を見て、私はそれがバグであるという考えに戻ります。それか、それとも
  • > API メッセージの解析または使用しているコードで問題が発生しました
  • > ログ値 – ただし、Java では表示されるべきではありません (C/C++ では表示される可能性があります)
  • > printf での弱いコンパイラ警告)。
  • >
  • > 興味深いことに、通貨の使用について言及したのはあなたが (最近) 2 人目です
  • > ペア名をローカルシンボルとして使用します。つまり、
  • > 通貨フィールド。さらに興味深いのは、updatePortfolio 経由で表示されることです。
  • > このような形で、私は予想していませんでした。最後は別の人
  • > 数週間、これに関連して最近行動が変化したことが示されました
  • > FX約定を指定する際に「feature」とありますが、そうなるかはわかりません
  • > 9.4 に影響します。
  • >
  • > -カート
  • >
  • > 2010 年 6 月 4 日午前 9 時 41 分、「バーネット ワグマン」 < b.wagman@… 
  • > <mailto:b.wagman%40comcast.net>> は次のように書きました:
  • >
  • > > updatePortfolio() が返す値を調べ始めたところです。私
  • > > /考え/ 'positions' は数量を返すと思いますが、私は数値を返します
  • > > 取得するには大きすぎます。
  • > >
  • > > 例: AUD.USD の外国為替ポジション = 154171 BOT が約定されました
  • > > 00:09:03 (TWS の「取引」ページによる)
  • > >
  • > > m_localSymbol=AUD.USD を持つ最初の updatePortfolio() イベントは、次の場所に到着しました。
  • > > 00:14:17 とレポート
  • > >
  • > > 位置=-13440588
  • > >
  • > > この位置の値は何を意味しますか? (記録のために、IB のドキュメント
  • > > は、「この整数は契約上のポジションを示します。ポジションの場合
  • > > は 0 で、ポジションがクリアされたばかりであることを意味します。」)
  • > >
  • >> 参考までに、この結果は紙取引、IB API バージョン 9.4 からのものです。
  • > >
  • > > ありがとう
  • >
  • >
  • [このメッセージのテキスト以外の部分は削除されました]
  • 返事
  • カート・ビグラー
  • メッセージ 5/5 、2010 年 6 月 6 日
  • ソースを表示
  • 2010 年 6 月 6 日午後 2 時 42 分、「Barnet Wagman」< b.wagman@… > は次のように書きました。
  • > updatePortfilio に関する情報をありがとう – 私は絶対に避けます
  • >それ。
  • FX専用!
  • また、ライブ市場データを使用して、市場価値の最新情報を通常よりも速く取得できます。
  • 市場データがない場合は、updatePortfilio 経由で取得します。
  • updatePortfilio の場合、少なくともあなたが保持しているポジションについてはそれを提供します。
  • > 現在、注文執行に基づいて独自の残高を維持していますが、
  • > ご指摘の通りです。 updateAccountValue メッセージを聞いてうれしいです
  • > 少なくとも自分の数値をチェックするためには役に立ちます。
  • >
  • > 「ローカル シンボル」について:
  • > 外国為替取引を識別するために「ローカルシンボル」を使用します。
  • > IB 外国為替注文が表す実際の「契約」を反映します。
  • >
  • > たとえば、EUR.USD の注文は EUR の数量として指定されます。で
  • > IdealPro、USD.EUR の「契約」は存在しないため、EUR で USD を購入するには、
  • > EUR.USDを売却するために必要です。
  • はい、しかしそれは米ドル通貨でユーロを売ることだと思います。それは記号ユーロです、
  • 通貨は米ドル、ローカルシンボルはありません。ローカルシンボルフィールドを使用したことはありません
  • 契約(FXの場合)。しかし実際には、私は API 経由で通貨取引をしたことはありません。
  • TWS経由なので、何かが足りないかもしれません。ただし、TWS であっても、
  • 「FX Trader」ウィンドウは、今説明した用語で考えているようです。お先にどうぞ
  • EUR と入力し、リストから通貨 USD (および IDEALPRO または IDEAL) を選択します。
  • API 経由で契約情報と市場データを取得し、説明したとおりに実行します。
  • (ローカルシンボルはありません)。人々が地元のシンボルを使用していることに本当に興味があります
  • IB がそうしなかったので、これは単なる「歴史的」理由によるものなのでしょうか。
  • 「初期の段階で」物事を一貫して実装する。
  • > 私が理解しているところによると、IdealPro には、
  • > 少なくとも通貨ペアごとに 1 つのコントラクト (ローカル シンボル) のみ
  • > 現在では(私が読んだところによると、かつてはもっと多くのペアがありました)。
  • 時々見たことがあると思います。しかし、私は両方でいくらかを交換したと信じています
  • 指示は、私にとって非常に複雑だったと思うので、後で非常に残念に思います
  • TWS の「仮想」位置シナリオ。確かに市場データは次のように表示されます。
  • 通貨ペアは両方向を示しました。流動性が感じられないことが多い
  • それは同じであり、市場は誰もやっていないように、明確に区別されているようにさえ見えます。
  • 裁定取引、これには当惑しますが、「スポット」とスプレッドの性質かもしれません。
  • 誰も利益を上げられない場合、手数料によって価格が変動する余地が残る可能性があります。
  • それを平等にするのはお金です。これについての意見/説明を聞きたいです。
  • 私は大規模な通貨トレーダーではありません。長期的なヘッジに使用しています。
  • 取引はたまにしか行わず、IDEALPRO の数量では決して行われません。使わなければなりません
  • IDEAL には履歴データがないため、IDEALPRO で履歴データを取得します。
  • > ローカルシンボルを使用すると、作業が少し簡単になります。
  • どのように簡単になるのかはわかりません。似ていないほうがより複雑に見える
  • 非FX。そこで、追加の特典が得られるかどうかを明確にしていただけますか?
  • ローカルシンボルを使用した機能。
  • > ただし、Contract オブジェクトを作成するときは、すべての通貨フィールドを設定します。
  • >
  • > 契約.m_通貨
  • > 契約.m_symbol
  • > 契約.m_localSymbol
  • そうですね、これはローカルを使用するという以前の発言を否定するように見えるかもしれません
  • 何かを単純化するための記号。議論するつもりはありません、ただ理解してください。
  • ローカル シンボルは Contract オブジェクト内にのみ *存在*し、それを設定しても、
  • は無視されます (下記を参照)。その場合、次のいずれの要素も考慮されません。
  • あなたが経験する機能は、したがって「よりシンプル」ではありません。
  • あなたのアプローチがどのようにして通貨ペアを作ることができるかを想像しようとしていました
  • おそらく一方向のみに流動性がある場合、ナビゲートが容易になります。
  • > 3 つすべてを設定する必要があるかどうかはわかりませんが、機能するようです。
  • 通貨コントラクトで無視されるために使用される localSymbol である可能性があります。
  • まだ 9.4 API 経由ですが、最新のものでは無視されなくなりました。
  • エラーが発生するようになりました。 1週間ほど前に別の人が投稿した内容です
  • と示されている。彼は地元のシンボルを設定するのをやめなければならなかったと思います。私は怠け者です
  • 振り返ってください。 😉
  • とにかく、本当に興味深かったのは、地元のシンボルが戻ってくるのを見ることでした
  • レポートごとに、updatePortfilio メッセージ。おそらく表示することはありません
  • FXの分野なので見てみるか、それとももう手遅れかも知れません
  • 私は9.64 APIを使用しているため、最新のTWSは905だと思います。
  • -カート

【Q】IDEALPROの営業時間は?

[A] by クライモン6

IDEALPRO の営業時間は、日曜日から金曜日の 17:15 ~ 17:00 (ET) です。

入札価格 = -1.0 になった時点で市場は終了しました

http://interactivebrokers.com/en/trading/exchanges.php?exch=ibfxpro&showcategories=FX&ib_entity=llc

FX関連のメモ:

はい、BID、ASK、BID_ASK、および MIDPOINT の作業をリクエストします。 IB はFX のTRADES を提供していません。

[Q] IDEALPRO の最小サイズ要件

[A]オリオン

IDEALPRO (トレード) には最小サイズ要件がありますが、

IDEAL (通貨換算) にはありません。最小サイズの場合

IDEALPRO 注文が満たされていない場合は、IDEAL オーダーブックに移動されます。これ

は、実際の取引口座、紙の取引口座、デモ口座用です。

[Q] 最低増額額

[A]  by Joshフルスレッドを参照

2021 年 2 月 27 日に追加

TWS の Global Config -> Display -> Ticker Row -> 「1/10 pips での外国為替取引を許可する」という設定がありますが、デフォルトでは有効になっていません。

http://interactivebrokers.github.io/tws-api/minimum_increment.html

デフォルトは 1/2 ピップです。設定はライブアカウントとペーパーアカウントで別々に保存されます。

更新:この設定に関連する TWS にもバグがあります。少なくとも、5 月末の TWS 972 にはバグがありました。すでに修正されているかもしれませんが、まだ存在する場合に備えて言及しておきます。

 

バグを確認するには、「1/10 pips での外国為替取引を許可する」チェックボックスを設定し、設定を保存します。次に、[グローバル構成] ダイアログを再度開き、設定を確認します。設定は引き続きチェックされます。次に、「グローバル構成」ダイアログの「API 設定」ページに移動し、ダイアログを閉じます (「API 設定」ページで変更を加える必要はありません。ページを開くだけで十分です)。次に、「1/10 pips での外国為替取引を許可する」チェックボックスに再度移動すると、チェックボックスがオフになっていることがわかります。

 

つまり、API 設定ページを開くと、このチェックボックスがオフにリセットされます。

 

リチャード

用語集

NMS は明らかに National Market System です

SCM = 小型株市場

他の

[Q] 管理アカウントの使用: サブアカウントの入金額を設定したりローンを無効にしたりするにはどうすればよいですか?

こんにちは

私のメインの IB 口座はマージンローンをいくつか利用しています。

TWS API で使用するために、証拠金ローンを利用できない (ただし、メイン口座のローンを有効にしたままにする) 接続されたアカウントを開設することは可能ですか?

たとえば、私は次のようなものを持っています –

私のメイン口座では、株式の価値は 100,000 ドル、現金の価値は (-10,000) ドルでした。私は 90,000 ドルを入金し、10,000 ドルのローンを借りました。

接続されているアカウントに 1,000 ドルを入金し、このアカウントのローンを無効にしたいと考えています。

したがって、たとえば、接続されたアカウントで株を購入しようとしたときに、現金が 500 ドルしかなく、株の価格が 600 ドルの場合、注文は失敗します。

したがって、TWS API を使用して 1,000 ドルを超える損失を被る状況はあり得ません。

そして私のメインアカウントでは、これまで通りローンを利用することができます。

出来ますか?どうすれば設定できますか?

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

2020 年 12 月 21 日に追加

はい、複数のアカウントを追加し、各アカウントを個別に構成できます。

アカウントを追加するには: https://www.ibkr.com/faq?id=23299014

アカウントを現金アカウントとして設定するには: https://www.interactivebrokers.com/en/software/am3/am/settings/accounttype.htm

取引権限を設定するには: https://www.ibkr.com/faq?id=27271500

そして: https://guides.interactivebrokers.com/am3/am/settings/tradingpermissions.htm

更新:オンラインで表示/返信 (#48673)

ありがとう!

このような口座で注文しようとして、十分な現金がない場合はどうなりますか?注文はキャンセルされるだけですか?

現金が不足しているため注文が拒否されたことを示すエラー メッセージが表示されます。 「キャンセル」という言葉は、注文が受け付けられて処理され、その後キャンセルされた後にのみ使用されます。ご注文は拒否されるため、処理されません。

[Q] ベストテイクプロフィット注文タイプ

[A] by alpha pmularien@gmail.comオンラインで表示/返信 (#44725)

2020 年 6 月 18 日に追加

私の戦略は次のとおりです。

  • (アルゴリズムがキャッチする前に) 予期せぬ価格の急騰をキャッチするために、リミット・イフ・タッチ注文 (証券の一般的なスプレッドに基づいた適切な指値値を使用) を設定します。
  • 価格が目標に近づいたら、LIT注文をトレーリングストップリミット(TSL)に置き換えます(証券の一般的なスプレッドに基づいた適切なトレール/リミット値を使用します)。

TSL 注文は非常にうまく機能しますが、他のストップ指値注文と同様に、ストップを通過する価格の下落に対して脆弱であるため、その価格またはその付近の価格で取引を獲得する可能性を高めるためには指値が非常に重要です。開始価格は必ずスプレッドの正しい側に設定してください 🙂 — 売りの場合はスプレッドより下、買いの場合はスプレッドより上です。

[Q] 約定→取引所 = "SMART" は機能しますが、約定→取引所 = "NASDAQ" は機能しません。

[A] by Angel (IB サポート)

exchange = NASDAQ は無効です。NASDAQ Exchange を使用するには、ISLAND である ECN を指定する必要があります。

よろしく、

-天使 

IB APIのサポート 

[Q] IB テクニカル サポートの連絡先情報を教えてください。

[A] by 'ce' zadig_1 at excite.com

2016 年 2 月 18 日に追加

お探しの情報はアカウント マネージャー、サポート、連絡先:

 

米国 1 (877) 442-2757 フリーダイヤル

1 (312) 542-6901 直通ダイヤル 08:00 – 20:00 (月曜日 – 金曜日) (アメリカ/ニューヨーク)

13:00 – 19:00 (日) (アメリカ/ニューヨーク)

 

   1/5 技術支援

      1/5/1 ソフトウェアのインストールと接続

      1/5/2 ソフトウェア操作

      1/5/3 ソフトウェアの機能

      1/5/4 API サポート

また、ブルーム IAmBroom (gmail.com):

チャット経由で連絡を取ることもできますが、実際には電話が最適な方法です。 IB はずっと前に電子メール サポートを完全に中止しました。

[Q] Exchange と PrimaryExchange の完全な明確化

[A1]  「リチャード L キング」著rlking@aultan.com

2016 年 6 月 3 日に追加

リュウ

TWS API で Contract オブジェクトを使用すると、実際には

IB の契約データベースにクエリを実行します。この契約データベースには膨大なデータが含まれています。

多数の異なる証券があるため、そのうちの 1 つにのみ興味がある場合

(たとえば、注文するとき) クエリが次のとおりであることを確認する必要があります。

Contract オブジェクトによって表現される は、単一の証券を識別します。

ここで、株式の指向注文、つまり特定の銘柄への注文を行う場合、

交換すると、これは通常非常に簡単です: シンボル、

sectype、乗数、および交換は(株式の場合)十分です。

一意性を確保する (しかし、誰かが次のようなケースを指摘するとは思わない)

それは失敗するので、tradingClass などの別のものを指定する必要があります!)。

ただし、SMART 注文を送信したい場合は、潜在的な問題が発生します。あなたが設定した

Exchange="SMART" ですが、IB には複数の SMART ルーティング インフラストラクチャがあります。

多くの株式は米国と欧州の両方で取引されていますが、IB は異なる取引を行っています。

これら 2 つの大陸 (おそらくは

アジアも同様です)。

したがって、どの SMART ルーターを使用するかを IB に伝える情報を提供する必要があります。

通常、通貨を指定するだけでこれを行うことができます。

ヨーロッパで取引されるものは通常ユーロで取引され、米国で取引されるものはユーロで取引されます。

米ドルで取引されます。ただし、何らかの理由で指定できない、または指定したくない場合は、

通貨の代わりに、またはそれに加えて、primaryExchange を指定できます。

通貨): したがって、primaryExchange="NASDAQ" は IB に USA SMART を使用するように指示します。

注文のルーティングインフラストラクチャ。市場データについても同様です

リクエストを送信すると、IB に対して、すべてのネットワークで最高の入札とオファーを送信するように指示されます。

米国の交換局 SMART ルーティング インフラストラクチャ。

要約すると、primaryExchange は、exchange=SMART の場合にのみ必要になります。

それでも、十分な情報を提供していれば必要ないかもしれません。

どの SMART ルーティング インフラストラクチャを一意に識別するためのコントラクト オブジェクト

必要です。

おそらく、これが確かに本来の目的であったことを付け加えるべきでしょう。

PrimaryExchange ですが、おそらく他の用途にも使われる可能性があるので、

誰かがこれについてさらに詳しい情報を持っているかどうか知りたいと思っています。

ところで、次のことを可能にする小さなユーティリティを作成することは非常に価値があります。

契約クエリの詳細を入力するには、reqContrqactDetails を実行し、

返されたすべての契約詳細を読みやすい形式で表示します。これ

厄介な問題が発生したときに、何が問題なのかを非常に簡単に見つけることができます

エラー200秒など。

リチャード

[A2]こちらの スレッドもお読みください

重要性が高いため、スレッド全体をここにコピーして貼り付けます。

—————————————————————————

これは以前にも話題になりましたが、返答はあまり明確ではありませんでした。

私は Exchange と PrimaryExchange について独自の仮定を立てました。

何年も働きました。しかし、私はいい加減な考え方をしていたと思います。

この理解を完全に明示したいと考えています。

私たちは、契約が必要な場合に、primaryExchange がどのように使用されるかについてよく話し合います。

それ以外の場合はあいまいです。たとえば、通貨が指定されている場合は通常は不要です。

これは、primaryExchange が志向する考え方を奨励します。

契約書を明記すること。

株・オプションの場合はとにかく為替分野だと思います

注文 * または * 市場または要求の概念を指向しているものとして

履歴データが「指示」されています。これは、次のような考えを助長します。

交換フィールドは「演出」に使用されます。 「直接」しない場合は、「SMART」を使用します(

該当する)。

これまでの要約では、交換と交換の区別を示唆しています。

PrimaryExchange は「指示」(注文またはデータ ソース) を区別します。

対「指定」(契約)。

先物の場合(私自身は今のところ使用していませんが)、

取引所の指定は、通常または常に必須です (例: GLOBEX)。これ

先物の場合、取引を特定するには交換が必要であるという考えを奨励します。

先物について賢明な発言ができるほど理解しているのであれば。

それによって 2 つの異なる視点が生まれます。

薄暗い過去のこの質問に対する 1 つの答えは「SMART」を指していましたが、それは単に

原則ではなく例です。 Exchange「SMART」を指定する場合は、次のことが必要になる場合があります。

曖昧な場合には、primaryExchange を指定してください。

場合によっては、単に「監督」の交換を指定できるのはそのときかもしれません。

希望しており、曖昧さが残る場合にのみ*、指定する必要があります

この曖昧さを解決するには、primaryExchange を使用します。その視点は問題を解決します

上記では矛盾があり、Exchange と PrimaryExchchage が機能する可能性があることを示唆しています

(必要に応じて)「指定」するために一緒に使用され、その交換は次の目的で使用できます。

「指示」、ただし、交換が「SMART」(または他のもの)の場合は、という補足が付いています。

"aggregate"?) 交換フィールドの使用により一部の表現力が失われています

「指定」するため、primaryExchagne フィールドは単なるハックです。

交換を「希望しない」場合に指定できるようにする

「指示」を目的とした交換を指定します。

最後のモデルは正しいことが判明しますか?そうでない場合は誰かが来てください

これら 2 つのフィールドの正式な説明のようなものを使用すると、

それについてずさんだったという自分の感覚から私を解放してください(そしてそのため、

私の UI での特定のデザイン決定について安心できますか?)

私は先物を取引したことはありませんが、シンボル入力 UI をテストしました。

そして、primaryExchange ではなく Exchange フィールドを使用します。そうなるのかな

代わりにprimaryExchangeを使用することは可能ですか、それとも何かに依存しますか

「集約」が交換用に指定されていますが、そのような集約は存在しません

米国先物用?

ありがとう。

-カート

—————————————————————————

カート、

私も同じ理解です。Exchange はデータ ソースを表し、primaryExchange は一部の銘柄だけが悩まされている 3 つの要素 (シンボル、取引所、通貨) のあいまいさを解決するためのハックです。 PrimaryExchange はコントラクトの「指定」のみを支援し、取引所への、または取引所からの「指示」には役立ちません。

conId によって曖昧さも解決されるため、このハックは API 9.69 では廃止される可能性があります。

先物に関しては、exchange="SMART" と PrimaryExchange="GLOBEX" を使用することはほとんど意味がありません。(私の知る限り) 集計ソースがなく、出力は単純に Exchange="GLOBEX" と同じだからです。この構文は API 9.69 以降でのみ機能しますが、古い API では「セキュリティ定義がありません」。

スークメイト

—————————————————————————

「SMART」が今後 (API のみで?) 受け入れられるようになったと言っているのであれば、それは理にかなっていて、一貫性が向上すると思います。 「SMART」が常に無方向性を意味し、交換が「方向性」にのみ使用される場合、それは良いことであり、初心者の頭痛の種を軽減し、汎用 UI の開発者が合理化するのが難しい (私の投稿によると) ロジックの代わりに自明なロジックを使用できるようになります。入力フィールドを内部フィールドにマッピングします。

これは「直交性」と呼ばれるもので、通信するエンティティ間の関係の優れた特性であると思います。集約がない場合は、「SMART」を自明なものにしておきます。それは依然として一貫性があり、数学的に有用であり、いわば、優れたプログラミングを生み出します。

したがって、これが正しい場合は、そのようにコーディングし、すべてに機能する適切な入力構文を使用します。

ただし、完全を期すために、現在受け入れられている動作を確実に理解するために、NASDAQ をINTC の取引所として (ダイレクト モードで) 使用すると、新たに必要となる PrimaryExchange を省略できることを確認する必要があります。よかったら答えてもいいですよ。 🙂 それ以外の場合は、すぐに試してみます。

-カート

—————————————————————————

Exchange を SMART 以外に指定した場合、pirmaryExchange を指定することはできません (そうしないと、エラー 200「宛先交換が無効です」が発生します)。 API 9.69 以降の場合は true。

Exchange="ISLAND" (Nasdaq の略) を使用し、primaryExchange="NASDAQ" を省略することもできますが、履歴データの場合、他の取引所からの流動性が失われます。

私が株に対して行っていることは、常にexchange="SMART"とprimaryExchange="…" (構成ファイルから取得) を設定することです。そうすることで、在庫の INTC に驚かれることを避けることができます。株式が Nyse から Nasdaq に移動するとき (たとえば、1 か月前の FCS)、設定ファイルを修正する必要さえありません。primaryExchange はトリプレット (シンボル、シンボル、為替、通貨)は単一の契約を特定しました。 API 9.69 以降の場合は true。 API 9.69 以降、primaryExchange の代わりに構成ファイルから conId を取得できるようになりました。

スークメイト。

—————————————————————————

議論の邪魔をして申し訳ありません。

交換および主要交換の説明の詳細はどこで入手できますか?それともこれらの「SMART」の意味と可能な組み合わせでしょうか?

ありがとう。

—————————————————————————

api@interactivebrokers からの回答:

4. [Exchange] フィールドと [Primary Exchange] フィールドの違いは何ですか?どのような場合に使用されますか?

主要取引所は、特定の株式が上場される主要な取引所です。株式は他の取引所でも取引される場合がありますが、主要取引所は常に 1 つだけです。これは契約の定義の一部として見ることができます。これを無視して、Exchange のみを使用できます。 

5. SMART ルーティングはどのような種類のセキュリティに適用されますか?交流フィールドでのみ効果があるのでしょうか?  

-はい、スマート ルーティングとは、注文がルーティングされる取引所を指します。詳細については、http://individuals をご覧ください。 interactivebrokers.com/en/index.php?f=1685 

—————————————————————————

アプリでは、シンボルを取引する前に UI で指定ステップを必要とするか、それとも例外 (「SMART」に使用される取引所で同じシンボルに対して複数の解釈がある場合) を処理するかを決定する必要があると思います。 )そのような場合にのみ追加の UI を表示します。または、シンボルフィールドを「INTC@NASDAQ」のようなものを入力できる十分な長さにします。 (SMART をサポートする取引所グループに属していない外国取引所で取引されている株式にも同様のものが必要になる場合があります)。

現在の「古い」API (conId を使用しない) では、多くの人 (主に株式とストック オプションのみを取引している人) にとって、より単純な UI と実装が可能です。自己使用 (ただし、INTC はおそらくそれを変更し、他の新しい契約も変更します)。

—————————————————————————

Exchange の構文はすでに "SMART" に設定されているsymbol@exchange を持っていたので、それを拡張してsymbol@exchange@primaryExchangeにしました。これは、たとえばINTC@@NASDAQの場合、必要に応じて単純にsymbol@@primaryExchangeにすることができます。

このアプローチでは、API の完全な特異性が UI 構文で表面化され、「ユーザー」がそれに対処できるようになります。

-カート

—————————————————————————

そうですね、あなたが明らかに指示取引をサポートしていることを考えると(私はまだその利点を発見していません)。

特異点は、「交換」フィールドが注文ではなく契約にあることだと思います。 「defaultOrderExchange」という意味だと思います。ただし、IB が契約を識別するために使用する検索基準に関して考えられる曖昧さも絞り込まれます。 conId を使用すると、注文の実行が高速化されるのではないかと思います。すぐにそれをテストするかもしれません。

—————————————————————————

私が使用している「最新」製品バージョンでは、conId ( INTC の場合は 270639) と「SMART」を指定するだけで十分です。これが最も効率的な方法だと思います。取引所を指定しないとreqHistoricalData は依然としてエラーを出しますが、「SMART」で十分であり、特定の取引所である必要はありません。通貨や「STK」さえも必要ないようです。

—————————————————————————

「defaultOrderExchange」という意味だと思います。ただし、可能性のある曖昧さも絞り込まれます

それだけでなく。これにより、市場データと履歴データのソースが決まります。したがって、それは実際に契約書に記載されている必要があります。

これは、取引所が「ブレイク」し、悪い相場を表示して「SMART」市場データを汚染する場合に重要であることがわかります。それが発生した場合、私は手動で介入し、SMART として注文を送信しながら、相場を受け取る特定の取引所を選択しました。

-カート

—————————————————————————

> それだけではありません。これにより、市場データと履歴データのソースが決まります。したがって、それは実際に契約書に記載されている必要があります。

したがって、「取引所」フィールドは「exchangeToTradeOn」と考えることができると言ったほうが正確です。取引所固有の市場データと履歴データを取引の一部として見ることができます。

また、これは、conId を使用するときに、たとえ一般的には「SMART」であっても「exchange」を指定する必要がある理由も明確にします。 conId を指定する場合、他のフィールドは (「通貨」も) 必要ありません。 (「最新」バージョンでは、reqHistoricalDataを使用してテストします)。

> これは、取引所が「ブレイク」し、悪い相場を表示して「SMART」市場データを汚染する場合に重要であることがわかります。それが発生した場合、私は手動で介入し、SMART として注文を送信しながら、相場を受け取る特定の取引所を選択しました。

たまに「壊れる」だけですか?ああ、なんと。 😉
—————————————————————————

PS: 「primaryExchange」は、たとえば同じ通貨を持つ場合に reqContractDetails によって返される複数の結果を区別する有効な方法であると思われるという意味で、あいまいさを解決するための単なる「ハック」であるとは思えません。その点でハッキングとなるのはむしろ「通貨」です。しかし、おそらく、必要なprimaryExchangeを知るよりも、必要な通貨を知る方が簡単でしょう。
—————————————————————————

これは、相互に関連する機能の動作が直交していない、または一貫していない程度の「ハッキング」と言えるものです。

souqMate がそれを解決するまで、私は直交性を期待していました (このスレッドの 3 番目と 4 番目の投稿)。

    Exchange を SMART 以外に指定した場合、pirmaryExchange を指定することはできません (そうしないと、エラー 200「宛先交換が無効です」が発生します)。 API 9.69 以降の場合は true。

それは単なる一時的な問題かもしれません。しかし、最終的にはパスの問題が優先されます。

-カート

—————————————————————————

はい、私にはそれはサーバー側の実装のバグのように見えます。意図したエクイティが確実に使用されるように、正しい PrimaryExchange を指定できるようにする必要があります。特に組み合わせ (exchange=ISLAND,primaryExchange=NASDAQ) は有効であるはずですが、実際にはsouqMateのような errorCode 200 も発生します。このことを IB に知らせるべきだと思います。回避策として、交換に SMART 以外のものを使用する場合は、primaryExchange を省略できると思います。驚くべき説明がない限り。

—————————————————————————

[A3] 2020 年 1 月の「Exchange」と「primaryExchange」に関する別の最近の議論もあります。

https://groups.io/g/twsapi/topic/69604228#43521

貴重なのでコピペしておきます

「一次取引所」と「取引所」の違いは?

 リチャード・L・キング

1月10日#43511   

プライマリ交換は、2 つ (またはそれ以上) の類似したコントラクトを明確にするために使用されます。

MSFT の例を挙げると、取引所を指定せずに (つまり、symbol=”MSFT” と sectype=”STK” だけを使用する) MSFT の契約詳細を要求すると、25 件の契約が返されます。そのうちの 2 つは Exchange=”SMART” なので、注文を SMART ルーティングしたい場合は、何か追加のものを提供する必要があります。プライマリ交換はこれを行う 1 つの方法です。必要に応じて、これは IB にどちらを伝えるかのヒントになります。当社への SMART ルーティング インフラストラクチャ: 米国のもの (主要取引所 = “NASDAQ”、または欧州のもの (主要取引所 = “EBS”))。

 

プライマリ取引所は、注文の発注や市場データのリクエストなどで取引所として SMART を使用する場合に主に関係します。SMART は株式とオプションでのみ使用できるため、おそらく他の証券にプライマリ取引所を提供する必要はありません。また、特定の取引所に直接ルーティングしている株式やオプションの場合、主要取引所はおそらく完全に無関係です。 (私が「おそらく」と言ったのは、契約の分野では何も確かなことはないようだからです!…)

 

多くの場合、この曖昧さを解消するには他の方法もあります (たとえば、別の通貨コードなど)。

 

さまざまな仕様を試して、何が返されるかを確認することで、コントラクトを検討する価値があります。私は、Contract Inspector というハードワークをすべて実行するプログラムを書きました。このプログラムは、このことを理解するのに非常に役立ちます。これは無料で、GutHub ( https://github.com/tradewright/ibapi-tools/tree/master/ContractInspector ) から入手できます (残念ながら Windows のみ) http://www.tradewright.com/contractinspector/から直接インストールできます

 

ところで、Contract Inspector を使ってプレイすると、すぐに IB の契約リクエストの実装に関する多くの奇妙な点が明らかになります。これは、あなた自身が発見したことです。多くの場合、「なぜ状況 A ではこれが行われ、状況 B では何か違う (またはまったく何も起こらない) のか」に対する答えは次のとおりです。

 

[ このグループの他の誰か (ちなみに?) は、私の C# コードの一部を翻訳し、JavaFX UI を追加することによって、Contract Inspector の Java バージョンを作成しましたが、それがどこにあるのか思い出せません。また、それが何なのかもわかりません。現在のステータスは です。おそらくその人は明確にしたいと思うかもしれません。 】

 

リチャード

 リチャード・L・キング

1月10日#43512     

おそらく、2003 年から取引プラットフォームを開発してきましたが、プライマリ取引所をまったく使い始めたのは昨年になってからであり、オプションを使用して本格的な作業を行うと述べたのはその時であったことを付け加えておく価値があると思います。詳細は覚えていませんが、プライマリ取引所を使用することでのみ曖昧さを解消できるオプション契約をいくつか見つけたと思います。

 

それまでは、プライマリ取引所を使用する正当な理由が見つかりませんでした。利用可能なより良いソリューションが常にあるように見えましたが、おそらく、私のプラットフォームからアクセスできない契約がいくつかあったことを意味していました。

 

R.

 アルフ

1月10日#43513     

ご説明いただきありがとうございます。

1 つの質問: MSFT は 正式にはNYSE ではなく NASDAQに上場されているため、次のクエリを使用すると予想されます。

契約 c = 新しい契約();

c.symbol("MSFT");

c.secType(SecType.STK);

c.primaryExch("ナスダック");

c.currency("USD");

またはこのクエリ:

契約 c = 新しい契約();

c.symbol("MSFT");

c.secType(SecType.STK);

c.exchange(「ナスダック」);

c.currency("USD");

適切な契約を返します。しかし、IB はこれらのクエリのいずれにもコントラクトを見つけられませんでした。 「NASDAQ」を「NYSE」に置き換えた場合のみ、正しいものが見つかり、「m_primaryExch」が「NASDAQ」に設定された MSFT が返されます。では、なぜ IB は「NASDAQ」で MSFT を見つけられなかったのでしょうか?   

 Rwk

1月 10 日#43514     

2020年1月10日金曜日午前10時18分に、alfは次のように書きました。

1 つの質問: MSFT は 正式には NASDAQ に上場されており、NYSE には上場されていません。

私はシンボルユニバース、シンボルの変更、分割や株式配当のための価格調整を提供する外部データベースを使用して米国株を取引しています。私はデータを電力のようなユーティリティとして捉えており、それについて考えたくありません。私のデータベースは Telechart TC2007 ですが、他にも正常に動作するデータベースがあります。

私は交換には「SMART」、一次交換には「ARCA」を使用しています。 Telechart で予備スキャンを実行し、IB からのリアルタイム データでそのセットを更新します。この方法で選択したシンボルの IB データの取得に失敗したことはありません。完璧ではありませんが、安価で信頼性が高く、プログラミングも簡単です。私は注文約定の品質と理論上のパフォーマンスからの逸脱を研究するために広範なテストを行ってきましたが、精度とコスト、利便性、信頼性の間のトレードオフに満足しています。

人それぞれ独自のアプローチがあるので、私のアプローチが最善であるとは言えません。利益を生む取引は見た目よりもはるかに難しく、インフラストラクチャの構築は最も重要なことから大きく気をそらしてしまうことに気づきました。シンプルにしてコストをコントロールするよう努めています。

頑張ってください…答えはすぐそこにあります!

[rwk]

 リチャード・L・キング

1月10日#43515     

まず、私の知る限り、取引所に「NASDAQ」を使用することはできません。この理由についてはよくわかりませんが、実際には関係ありません。

  • 注文をスマート ルーティングするに は「SMART」を使用します (この場合、米国のスマート ルーティング インフラストラクチャを確認するように IB に通知するプライマリ交換フィールドを指定できます。rwk が指摘したように、プライマリ交換として「ARCA」を使用します) 「NASDAQ」、「AMEX」、「BATS」、「CBOE」などと同様に、常に機能します。
  • または、 ISLAND などの特定の交換を指定し、プライマリ交換を指定しません。

 

最初のケースでは、取引所をまったく指定していないため、IB はあなたが何を言っているのか理解していないと思います。 2 番目のケースでは、間違った取引所を指定しました。ただし、「BOZO」のような意味のない取引所を指定すると、「無効な宛先取引所が指定されました」というエラー メッセージが表示されるため、「NASDAQ」が取引所名として明確に認識されることに注意してください。 、関連性があると考えられるものは1つもありません。

 

それで、私が言ったように、誰が知っていますか?

 

 

引用メッセージの切り替え

引用されたテキストを表示

 アルフ

1月10日#43516     

ありがとう。

これは機能します:

契約 c = 新しい契約();

c.symbol("MSFT");

c.secType(SecType.STK);

c.exchange("SMART");

c.primaryExch("ナスダック");

c.currency("USD");

NASDAQ は「取引所」 として設定するには不特定すぎるようですので、 「ISLAND」のようにより具体的にする必要があります。ただし、「 primaryExchange」の使用を避けるには、上記と同じ結果を返す以下を使用するのが最善と思われます。

契約 c = 新しい契約();

c.symbol("MSFT");

c.secType(SecType.STK);

c.exchange(「アイランド」);

c.currency("USD");

 ニック

1月10日#43517   

あなたが一次取引所に対してどのような嫌悪感を抱いているのかわかりません。

自分の戦略に適したルーティングの種類を決定し、それを API で使用する必要があります。

スマート ルーティングはダイレクト ルーティングと同じではありません。 API にどのフィールドを入力する必要があるかに基づいてルーティングを選択するのは意味がありません。

 リチャード・L・キング

1月10日#43518     

いいえ、同じではありません。

最初の契約はスマート ルーティングされます。つまり、これを使用して発注された注文は、北米の取引所の中で現在最良のビッド/オファーを持っている取引所で約定されます。

2 番目は ISLAND でのみ実行されるため、最適なフィルが得られない可能性があります。

IB の SMART ルーティング機能をより深く理解する必要があるようです。

リチャード

 

 アルフ

1月10日#43519   

わかりました。ありがとう!

実は注文手順については詳しく調べていませんでした。当初は、 reqContractDetails() メソッドで「シンボル」、「セキュリティタイプ」、「通貨」、「為替 を指定して契約の共通詳細を取得したいだけでした。ただし、ご覧のとおり、交換は SMART ルーティングが可能であるため、IB では特別に扱う必要があります。

改めてご説明いただきありがとうございます!

 アルフ

1月10日#43520     

公式 API ドキュメント ( https://interactivebrokers.github.io/tws-api/basic_contracts.html )でこの短い文を見つけました。

//API 側では、NASDAQ は常に ISLAND として定義されます

これは、API 側では常に「ISLAND 」を代わりに置く必要があることを意味しますか、それとも

「 NASDAQ 」を表すprimaryExch ?したがって、NASDAQ と言いたい場合は、 ISLAND」を使用する必要があります。

ヤイール・アルトマン

1月11日#43521     

ほぼ正しい – API を使用する場合は、Exchange='NASDAQ' ではなく、'ISLAND' (または 'SMART') を使用する必要があります。ただし、これは明らかに株式やその他の取引可能な契約にのみ適用されます。 SecType='IND' を使用する場合は、実際に Exchange='NASDAQ' を使用できる/使用する必要があると思います。確かに紛らわしいですが、文書化されていないことは間違いなく、IB の API サーバーによって予告なくいつでも変更される可能性があります。 API プログラミングは楽しくないなんて誰が言ったでしょうか? 🙂

 返事

 のように

 もっと

 ミザントループ

1月16日#43579     

さらに混乱するのは、reqPositions などの一部のリクエストがプライマリ エクスチェンジを他の場所のような「primary_exch」ではなく「exchange」として返すことです。コントラクト オブジェクトは本来あるべきように自由に移動できないため、一貫性がありません。 IB に問い合わせると、通常の「それは機能であり、バグではありません」という応答が返されました。ローカルで簡単に修正できますが、それでも面倒で混乱します。

 返事

 のように

 もっと

 1人が 「いいね!」と言っています

[Q] 深夜のデバッグのために活発に取引されている株式が必要です

[A] ドミトリー著

オープンマーケットをチェックしてください: http://www.worldtimezone.com/markets24.php

または: http://www.isthemarketopen.com/

香港取引所を選択した場合は、IB 契約検索エンジンを使用します。

契約およびシンボルのデータベース – インタラクティブ・ブローカーズ

または、香港取引所で最もアクティブなシンボルを Google で検索してください。

[Q] 最新のスタンドアロン TWS はどこで入手できますか?

[A]

Mac の場合: https://www.interactivebrokers.com/en/index.php?f=674&os=mac

実績のあるバージョン」: TWSX_install.pkg

TWS 9394 • 2014 年 5 月 5 日

または

TWS 最新は最新バージョンです」: TWSX_install_latest.pkg

TWS 9443 • 2014 年 4 月 30 日

[Q] API 経由でマーケットがオープンしているかどうかを確認するにはどうすればよいですか?

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

ContractDetails をリクエストし、m_tradingHours というフィールドを解析して市場が開いている時間を取得できます。

例: SPX の場合: 20101202:0830-1500

[A2] by skunktrader2001

ContractDetails の別のフィールドは m_timeZoneId です。これを簡単に使用して java.util.Calendar のインスタンスを初期化し、交換現地時間を「現在のデスクタイム」に変換することができます。利点は、IB を使用して休日/早期閉店を追跡できることです。

そうは言っても、私自身のプログラムにはローカルデータベースがあり、休日や異常なセッションのオープン/クローズ時間を手動で追跡しています。

[Q] 口座残高、取引手数料、現金取引、純資産額などを取得するにはどうすればよいですか? (フレックス?)

[A] by andy_flury

Flex WebService を使用して、口座残高、取引手数料、現金取引、純資産価値などを取得できます。

アカウント管理/配信設定/Flex Webサービスに移動するだけです。そこでトークンを生成します。このトークンを使用すると、必要な情報をすべて含む優れた XML を取得できます。

私はこの XML を毎晩取得し、データベースを更新します。

乾杯

アンディ

- - - - また - - - -

Java クラスをファイル セクション / Java_Code / CashTransactions.javaにアップロードしました。

それが役に立てば幸い。

アンディ

———- ドミトリーのメモにもあります。

2014 年 1 月以降、IB は GUI を変更したため、新しいフレックス レポートを作成するには次のようにします。

レポート -> アクティビティ -> フレックス クエリ

トークン管理の場合:

「レポート」 -> 「設定」 -> 「Flex Web サービス」

デフォルトでは、有効期限が 1 週間未満のトークンが生成されますが、最大 1 年間有効期限を 1 回再生成できます。

[Q] フレックス レポートを自動化するにはどうすればよいですか?

[A]  Eric J. Holtman 著 (この スレッドより)

Web Flex 配信を機能させることができました。を貼り付けました

下部にある小さな bash スクリプトは機能しているようです。やってみました

昨夜これを実行しましたが、私が確認できなかったタイプミスがありました。

wget がインストールされた cygwin を実行している場合 (または Linux を実行している場合)、

これは電子メールから何かを取得しようとするよりも簡単に思えますが、

人間の介入なしで実行するように設定できます。

このスケルトン スクリプトはエラー チェックをまったく行いません。

# IB の flex Web サービスからの秘密トークンがここにあります

トークン=2584375894759837598437

# 唯一の引数として必要なクエリのクエリ ID を渡します

QUERY_ID=$1

# cygwin のバージョンが異なるため、-no-check-certificates を使用しています

使っています

# 古い証明書ファイルがありますが、IB の実際の証明書には何も問題ありません。

# 最初にレポートを生成するリクエストを発行し、クエリ コードを返します。

# 脳が損傷した SED スクリプトをパイプ処理してマジック コードを抽出する

クエリ_コード=$(

wget -q –no-check-certificate -O –

https://www.interactivebrokers.com/Universal/servlet/FlexStatementService.SendRequest?t=$TOKEN&q=$QUERY_ID」

|

sed -n -e 's/<コード>\(.*\)<.*/\1/p'

)

# 実際のレポートのリクエストを発行し、標準出力にダンプします

wget -q –no-check-certificate -O –

https://www.interactivebrokers.com/Universal/servlet/FlexStatementService.GetStatement?q=$QUERY_CODE&t=$TOKEN&v=2」

返事

[Q] Ubuntu 上の TWS にはどの Java を使用するのが適していますか?

[A]マイク・スミス著

Ubuntu でも同じ例外が発生しますが、TWS ウィンドウが消えても問題はないので、それが関係しているとは思えません。 Ubuntu 10.10 (OpenJDK) に付属の Java を使用している場合は、代わりに Sun/Oracle JVM を使用してみてください。 OpenJDK には問題があることが知られています。

http://aroundtheweb.info/2010/10/install-sun-java-ubuntu-10-10-maverick-meerkat-official-partner-repository/

その後、以下を使用して JVM を切り替えることができます。

sudo update-alternatives –config java

Sun/Oracle JVM を使用する最も優れた点は、Ubuntu の Update Manager によって頻繁に更新されることです。これまで OpenJDK を更新したことがありません。

マイク

[Q] TWSでS&P500指数を見る方法はありますか?

[A]アビジット・デイ著

なぜだめですか? SPXの見積もりを取得中です。追加購読です

私(プロサブ)にとって。 CBOE の月額 3 ドルの追加料金すべて

修正。月額2ドルです。その名も「CBOE マーケット データ エクスプレス」

インデックスプロフェッショナル」

[Q] リリースノート – 読むべきですか?

[A]  by カート

これはリリースノートに記載されているのではないかと思います。そこには

確かに、リリース ノートに

多くの情報が含まれているため、API ドキュメントの一部とみなされます。

他には現れなかったもの。残念ながら、以下の情報の一部は、

リリース ノートは間違っており、古いノートは修正されることはありません。こちらも新作

アプローチは古いものに取って代わられることがあります。私が普段提案しているのは、

リリース ノートは古いものから最新のものまですべて読む必要があります。

数回。 IB ではメインに *戻る* ことができないため、これが難しくなります。

リリースノートページに直接アクセスできます。リリースを印刷する価値があることがわかりました

ノート。 API を学びたい場合は、3 ~ 4 年前に遡ることをお勧めします。

[Q]フランスの取引税、どのように予想しますか?

[A]  by bgpl.mirror@gmail.com

http://ibkb.interactivebrokers.com/article/1963

またはグーグル:

site:interactivebrokers.com 「フランス金融取引税の対象となる株式」

[Q]注文した商品の交換場所を知りたいのですが?

[A]

  • 常に openOrder および orderStatus コールバックを取得しているようです
  • 注文は TWS で再ルーティングされます…
  • つまり、「SMART」を指定しても TWS で監視すると、これらの結果が得られます。
  • 注文がリコールされてリダイレクトされたときのコールバック
  • 新しい特定の交換。 (「オフダイレクト、現在ニューヨーク証券取引所に送信中」など)。
  • コールバックを調べましたが、どこにも見つかりません
  • この情報をキャプチャできます...誰かが入手できるかどうか知っていますか。
  • 明らかに、TWSはそれを理解しています。しかし、もちろんそんなことはありません
  • API がそうであることを意味します。
  • 返事
  • カート・ビグラー
  • 2010 年 6 月 1 日
  • ソースを表示
  • openOrder コールバックには Contract 引数があります。そこを見ましたか?
  • -カート
  • メッセージ履歴を表示する
  • 返事
  • エリック・J・ホルトマン
  • 2010 年 6 月 1 日
  • ソースを表示
  • 2010 年 6 月 1 日午後 1 時 48 分、Kurt Bigler は次のように書きました。
  • >
  • > openOrder コールバックには Contract 引数があります。そこを見ましたか?
  • >
  • 交換フィールドに SMART があるのはこれまでです (私が記入しました)。
  • そして、primaryExchange フィールドには何もありません。
  • 実行報告書には場所が記載されていますが、(少なくとも私はそう思います)、
  • 実行されなくても、TWS が更新されているのがわかります。
  • 大したことではありませんが、捕まえられるかどうか疑問に思っていました。
  • そうすれば、後で地域取引所 BBO に対して追跡できるようになります。
  • [このメッセージのテキスト以外の部分は削除されました]
  • 返事
  • カート・ビグラー
  • …おそらくあなたが扱いたいものではありませんが、監査証跡ファイルにルーティングイベントのトランザクションが含まれているかどうか疑問に思っています。どうやら彼らは
  • 2010 年 6 月 1 日
  • エリック・J・ホルトマン
  • 2010 年 6 月 1 日
  • ソースを表示
  • 2010 年 6 月 1 日午後 3 時 50 分、Kurt Bigler は次のように書きました。
  • >
  • >
  • > おそらくあなたが対処したいことではありませんが、
  • > 監査
  • > 証跡ファイルには、イベントをルーティングするためのトランザクションが含まれています。どうやら彼らは
  • > 些細なことがたくさん含まれているので、これはおそらくこれでしょう
  • > 含まれており、
  • > でも探してませんでした。
  • >
  • 監査証跡を調べましたが、そうではないようです
  • まるでそこにいるかのように…。最低限の FIX メッセージしか表示されません。
  • 私が本当に見たいのは、大量の OrderStatus ではありません。
  • 細心の注意を払って追跡する必要があります、それは
  • 私がTWSで見ているものは実際のものではない可能性は十分にあります
  • それはそうだと思う、もしかしたら最後の幹部のやりとりかもしれない。
  • 今日たまたま気づいたのは新聞だったので
  • アカウントは壊れているようで、しばらくの間約定は得られませんでしたが、
  • その間にTWSを見た気がした
  • を取得せずに「宛先」フィールドを変更する
  • 部分的な塗りつぶし。
  • でも、もしかしたら私がハイだっただけなのかもしれない。
  • [このメッセージのテキスト以外の部分は削除されました]
  • 返事
  • カート・ビグラー
  • メッセージ 6/6、2010 年 6 月 1 日
  • ソースを表示
  • 2010 年 6 月 1 日午後 2 時 56 分、「Eric J. Holtman」< eric@… > は次のように書きました。
  • > 2010 年 6 月 1 日午後 3 時 50 分、Kurt Bigler は次のように書きました。
  • >> おそらくあなたが対処したいことではありませんが、
  • >> 監査
  • >> 証跡ファイルには、イベントをルーティングするためのトランザクションが含まれています。どうやら彼らは
  • >> くだらない内容がたくさん含まれているので、これはおそらくこれでしょう
  • >>含まれており、
  • >>でも探してませんでした。
  • >
  • > 監査証跡を調べましたが、そうではないようです
  • > 彼らがそこにいるかのように…。最低限の FIX メッセージしか表示されません。
  • > 私が本当に見たいのは、大量の OrderStatus ではありません。
  • >
  • > 細心の注意を払って追跡する必要があります。
  • > 私がTWSで見ているものは実際のものではない可能性が十分にあります
  • > そうだと思います、もしかしたら最後の幹部のやりとりかもしれません。
  • いいえ、ルーティングされたエクスチェンジが表示されるのを何度も見てきました。 99回
  • 私の場合、100 のうち 1 回の実行で埋められるので、
  • 最後の幹部。
  • テストするために、実際に(TWSで)高値で注文しました。それは示した
  • 送信する前に宛先を SMART として設定してください。早速送信してから
  • (私の知る限りではすぐに) ISLAND に変更されました。 100%確信はありません
  • *後で*目的地が変更されるのを見ましたが、おそらくオプションで変更されると思います
  • コンボ。いずれにしても、これは TWS で示されている情報の一部です。
  • あなたが言ったことは、注文ステータス契約では利用できません。
  • しかし、監査証跡には宛先が示されていることがわかります。たぶんオリジナル
  • 宛先は再割り当てされた宛先とは異なります。とにかくトレイル
  • 次のようになります。「確認済み」の下の「ExDestination」を参照してください。
  • PlaceOrder 20100601-22:34:02 1223997357.0 – 5 AAPL を購入
  • 制限 257.00 日 アカウント = U383859; 6240 = 1; 6408 = 18409420238;
  • オプションAcct = c; 6433 = 1; 6419 = IB; 6532 = 20100601-22:34:02;セキュリティタイプ=
  • CS; ContractMultiplier= 1.00; ExDestination= 最高; 6210 = 最高。契約ID=
  • 265598;通貨 = 米ドル; 6211 = ; 6238 = ;
  • 了承しました 20100601-22:34:02 1223997357.0
  • 0003bfe1.0000eee7.4c049011.0001 5 AAPL 制限 257 を購入
  • 日実行ID = 61159.1275431642.1; ExecType= 新規; ExecTransType= 新しい;
  • OrdStatus= 新規; ExDestination= アイランド; SecurityExchange = アイランド;合計数量 = 0;
  • 葉数= 5;平均ピクセル数 = 0;セキュリティタイプ = CS;アカウント= U383859; 6532 =
  • 20100601-22:34:02; TransactTime= 20100601-22:34:02; 6571 =
  • 20100601-22:34:02;通貨 = 米ドル;交換 = 最高;オプションAcct = c;
  • CustomerOrFirm= 顧客; IBLocalSymbol= AAPL; 6674 = 0;
  • 監査証跡には、再割り当てされた宛先を示す必要があると思います。
  • これは、取引所で約定が失敗した場合の契約のようなものです。
  • -カート

[Q] reqIds関数の「numIds」とは何ですか?

[A] ヴェルナー・シュトゥンペ著wstumpe@gmx.de

たとえば 5 つの reqIds が必要であることがわかっている場合は、パラメータを設定します。

numIds を 5 に設定します。取得するのは、連続する 5 つの reqId の最大値です。

それらはあなたのために予約されています。したがって、reqId として 44 を取得すると、44 になります。

43、42、41、40 はあなたのために予約されています。

ヴシュトゥンペ

[Q]無料のテクニカル分析ライブラリを知っている人はいますか?

[A] アビジット・デイ著

        TA: http://ta-lib.org/index.html

     クオント: http://quantlib.org/index.shtml

[A2]ゴード

Google: CCAPI。 2001ff、activestocks.de / ウルリッヒ・シュタウディンガー

読み取り可能なファイル FinancialLibrary.java を探します。

[A2]マーケットモール 著

http://www.eclipsetrader.org/

[Q]これらの日次LIBORレートをTWSから直接取得する方法はありますか?

[A] by カート

さまざまなベンチマーク レートはこのページから入手できます。

http://www.interactivebrokers.com/en/accounts/fees/interest.php

料金がどれくらいの頻度で更新されるのか、それとも気にするのかわかりません。

変更されたその日に新しいレートが適用されます。しかし、コードは確かに可能です

これらの料金を上記の Web ページから抽出するように書かれています。

万が一に備えて、ウェブ上で公開されている同様の料金に関する世界中の多数の情報源

IB ページが十分に最新ではないことがわかりました。

したがって、適切な URL からデータをロードし、それを解析して必要な情報を取得します。

必要に応じて、利用可能な TCP および解析ライブラリを使用します。

-カート

[Q] TWSの終値は間違っていますか?

(ここで見つかります)

[A1]カート・ビグラー著

先物については分かりませんが、TWS の Close コラムにはいくつかの情報が掲載されています。

株式やストックオプションに関する営業時間外の混乱を招く情報 – しかし何もない

閉店直後にあなたが説明した内容とまったく同じです。クローズは常に

延長時間取引終了後のある時点までは昨日の終値、

その時点で「今日は昨日になり」、新しい終値が表示されます。

もちろん、時間外取引ではなく、通常取引の終了時です。その間

ある時期、終値が少し跳ね上がったのを覚えていますが、

私が思い出したように、これらの日々の変化に関連しています。

私がそれについてIBに苦情を言ったとき、彼らは彼らは単に見送っているだけだと述べました

取引所からの生の情報を入手すれば、得られるものを手に入れることができます。だから、

株、やっと慣れてきました。

オプションは株式よりも悪い、なぜなら最終的に現れるのは別のものだからである

IBが言うのは取引所からの「決済価格」だけど難しい

どうして決済価格が終値からこれほど離れたところにあるのか想像するのに

よくあることですが、それが起こったことと(私にとっては)まったく関係がありません。

出来高加重平均価格ではありません。 CBOE からのオンライン情報

「決済価格」について私が調べた限りでは、

役に立たない。しかし、私は今あなたの話題から大きく外れています。

過去の 1 日足がさらに役立つかどうかを確認してください。

特定の日の意味のある終値を取得します。必ず指定してください

RTH=1 はあなたが望んでいることだと思います。

-カート

[A2]エリック・J・ホルトマン著

私は以前、先物オプション取引をかなり頻繁に行っていました。 「決着」

あなたが言うように、彼らは多くの場合、何の関係も持た​​ないものを送ります

日中のあらゆる行動。

実際、フロアでコンボの注文が出ることがよくありましたが、

(もちろん) 何も食べられず、そして終わりに

その日、彼らは私たちの価格で両足を決済するでしょう。

さて、彼らの「弁護」として、彼らは数字から数字を選んでいたわけではありません。

帽子…S&P 500 の清算価格をグラフにすると

先物オプションならボラティリティの高い笑顔を浮かべるだろう

データが本物ではないと断言するのは当然です。

したがって、明らかに、彼らの方法論は、ボリュームをどのように決定するかでした。

移動(方向と形状)し、それにペグ決済します。

【Q】MOO注文はどうやって行うのですか?

[A]まず、広い形式での質問です。

マーケット・オン・オープン注文を送信するための正しい注文設定を取得するためのいくつかの初心者の質問について、誰かが私を助けてくれることを期待していました。ユーザーガイドの指示に従い、IB チャットで何度か回答を得ようとしましたが、これまでのところ、すべてのケースに有効な一連の指示を得ることができませんでした。基本的に、私がやりたいことは、TWS の説明に NYSE、NASDAQ、AMEX、ARCA のいずれかを含むシンボルのオープニング オークション/クロスに参加することだけです。たとえば、ARCA シンボルの場合は、ARCA にルートを指定し、MKT と OPG を使用するだけでよいと言われました。ただし、TWS で ARCA を選択した後は、TIF ドロップダウンで OPG オプションが使用できなくなります。 NASDAQ の場合、ルートを ISLAND に誘導し、MKT と OPG を使用するように言われましたが、その方法で送信された注文は、〜9:30 の開店を待つことなく、すぐに (東部標準時午前 9 時前に) 執行されました。  

  • 4 つのリストごとに、注文設定の作業セット (ルーティング、TIF、その他関連するもの) を共有していただける方がいらっしゃいましたら、大変感謝いたします。  
  • また、追加の質問を1つさせていただくと、これらの注文が新しいポジションを開始するものであると仮定すると、奇数ロット/混合ロットの取り扱いは、IBがサイトで通常の注文に対して行っているものとは異なりますか(つまり、直接ルーティングされた奇数ロットは拒否され、混合ロットの部分ロットはラウンドロット実行後にキャンセルされますか?これまでのところ、ラウンドロットのみをテストしました。  
  • ご意見がございましたら、よろしくお願いいたします。  
  • [このメッセージのテキスト以外の部分は削除されました]
  • 返事
  • ロブ・テルピロウスキー
  • 2010 年 5 月 28 日
  • ソースを表示
  • MOO 注文の場合、私は OPG の TIF を持つ MKT のみを使用し、ルーティングを SMART のままにします。その後、IB は MOO 注文を NYSE、AMEX、または Nasdaq に自動的にルーティングします。 100株以上であれば端株でも問題はありませんでした。 100 未満の場合、注文は通常拒否されます (少なくとも NYSE と AMEX については、Nasdaq についてはわかりません)。
  • 午前9時30分のオープン前に注文が執行されることに何の問題もありませんでしたが、市場前注文はLMTとして送信される必要があると思っていたので、ちょっと驚きました。
  • h番目、
  • -ロブ
  • ________________________________
  • From: BS < bs2167@… >
  • 宛先: TWSAPI@yahoogroups.com
  • 送信日: 2010 年 5 月 28 日金曜日 10:32:25 AM
  • 件名: [TWS API] MOO 注文設定
  • マーケット・オン・オープン注文を送信するための正しい注文設定を取得するためのいくつかの初心者の質問について、誰かが私を助けてくれることを期待していました。ユーザーガイドの指示に従い、IB チャットで何度か回答を得ようとしましたが、これまでのところ、すべてのケースに有効な一連の指示を得ることができませんでした。基本的に、私がやりたいことは、TWS の説明に NYSE、NASDAQ、AMEX、ARCA のいずれかを含むシンボルのオープニング オークション/クロスに参加することだけです。たとえば、ARCA シンボルの場合は、ARCA にルートを指定し、MKT と OPG を使用するだけでよいと言われました。ただし、TWS で ARCA を選択した後は、TIF ドロップダウンで OPG オプションが使用できなくなります。 NASDAQ の場合、ルートを ISLAND に誘導し、MKT と OPG を使用するように言われましたが、その方法で送信された注文は、〜9:30 の開店を待つことなく、すぐに (東部標準時午前 9 時前に) 執行されました。
  • 4 つのリストごとに、注文設定の作業セット (ルーティング、TIF、その他関連するもの) を共有していただける方がいらっしゃいましたら、大変感謝いたします。
  • また、追加の質問を1つさせていただくと、これらの注文が新しいポジションを開始するものであると仮定すると、奇数ロット/混合ロットの取り扱いは、IBがサイトで通常の注文に対して行っているものとは異なりますか(つまり、直接ルーティングされた奇数ロットは拒否され、混合ロットの部分ロットはラウンドロット実行後にキャンセルされますか?これまでのところ、ラウンドロットのみをテストしました。
  • ご意見がございましたら、よろしくお願いいたします。
  • [このメッセージのテキスト以外の部分は削除されました]
  • ———————————
  • ヤフー!グループリンク
  • [このメッセージのテキスト以外の部分は削除されました]
  • 返事
  • rwk2095
  • 2010 年 5 月 28 日
  • ソースを表示
  • — BS <bs2167@…> は次のように書きました。
  • > … 奇数の処理は行われますか
  • >ロット/混合ロットは IB がサイトに掲載しているものと異なる
  • >典型的な注文(つまり、直接ルーティングされた奇数ロットは拒否され、
  • >混合ロットの一部のロットは、ラウンドロット終了後にキャンセルされます。
  • >実行されましたか?
  • 私はNYSEでMOO注文を使用して頻繁に取引しています。 MOO注文は利用しません
  • 流動性の制約によりナスダックに上場しているかどうか知りたい
  • 誰でも最初のクロス取引の経験を共有できます。私
  • AMEX にはあまり興味がありませんので、気にしないでください。
  • NYSE 株と ARCA 株の場合、取引所として NYSE、取引所として MKT を指定します。
  • 注文タイプ、有効期限として OPG、ルーティングとしてスマート。
  • スマート ルーティング以外を指定すると、コストが大幅に増加します。
  • 私は混合ロットを埋めるのに何の問題もなかったが、NYSEはそうではない
  • 奇数ロットを受け入れます。
  • ナスダック株については、たとえ私が相場に属しているときでも指値注文のみを使用します。
  • 急いで。奇数ロットでも問題ないようです。
  • [rwk]
  • 返事
  • BS
  • メッセージ 4/4、2010 年 5 月 28 日
  • ソースを表示
  • ロブ&RWK –
  • ご意見いただきありがとうございました。これで火曜日の午前に向けて良い方向に進むはずだ。これらの設定でのテストが前回よりもうまくいくことを願っています。何らかの理由でまだ機能しない場合は、少なくとも注文設定以外の何かが間違っていることがわかります。  

[Q] TWS APIから先物の証拠金要件を更新するにはどうすればよいですか?

[A] by christianhgross < christianhgross@… >

以下をせよ;

1) API でマージンを含むアカウント値を追跡します。

現金などなど…

2) 試しているポジションの逆の注文を作成します

マージンを取り除くために。したがって、1 ES が長い場合は、次のような注文を作成します。

ショート1ES。

3) 注文を送信しますが、whatif フラグを true に設定します。

4) 結果の whatif コールバックでは、結果が与えられます。

マージン、キャッシュレポート。これらの値を取得し、初期値から減算します。

アカウントの値と証拠金レポートが得られます。

複雑な取引でマージンをとろうとしている場合、次のような落とし穴があります。

相関がないか、相関がある場合は、計算を「微調整」する必要があります。

デモアカウントを使用してこれを試してください。

キリスト教徒

[Q] 取引に必要な証拠金はどのように取得すればよいですか?

[A] jb201448@yahoo.comより

2016 年 4 月 14 日に追加

[もしもの注文を作成…]

こんにちは、アダム

私の知る限り、API を通じて返される取引前証拠金情報に変更はありません。

私が実際に注意を払った唯一のパラメーターは、orderState.commission、orderState.initMargin、および orderState.maintMargin です。これらの数値は、Tws で注文プレビューを実行することで得られる「取引後マージンの影響」の数値と一致します。つまり、現時点で取引が実行された場合に予想されるアカウントの初期証拠金および維持証拠金の値を示します。

表示されている数値 ~1.79E308 は、おそらく maxDouble に対応します。これは、API が数値を「null」と表現する方法です。

最高、

-ジョシュ

[Q] [TWS API] 原価の変化をモデル化するためにリスクナビゲーターを使用してマージン要件をストレステストしますか?

[A] by grooooper maxr1r2@gmail.com via  groups.ioオンラインで表示/返信 (#38965)  

2017 年 11 月 18 日に追加

FWIW は、RN でカスタム What-If シナリオを試し、IB とかなりのやり取りを行った結果、原価格の変更などによる潜在的なマージンの影響を確認することは不可能のようです。それはかなり単純なように思えます…RNが行うことは、原価格の変化があなたの損益/ポートフォリオ全体の価値にどのような影響を与えるかをモデル化することだけですが、たとえあなたの口座の現在の証拠金/RNの過剰流動性を示していても、その数値は 更新されません仮説の変更を反映してください… 

[Q] 銘柄の先読み/翌日物証拠金率を計算する

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

現在、コードが午後 3 時 50 分から始まるより厳格な夜間マージン チェックに違反していないことを確認しようとしています。先読みタグを付けた reqAccountsummary を使用して、違反するかどうかを確認する方法を確認しました。また、WhatIf を true に設定して注文することで、取引が現在の証拠金にどのような影響を与えるかを確認する方法もわかります。ただし、先読み値の計算に使用されるマージン率など、マージン率が変更された場合に、注文が将来マージンにどのような影響を与えるかを知る方法がわかりません。 API 経由でレートを取得できる午後 3 時 50 分まで待つとマージン コールの危険にさらされるため、将来のマージン チェックに合格するために必要な数のポジションを閉じることができるように、将来のマージン レートを知ることが重要であると思われます。何かを誤解しています。

IB カスタマー サービスに、API 経由で将来のマージン レートを取得する方法や、その日のマージン レートから自分で計算するために従うことができるガイドラインやルールがあるかどうかを尋ねましたが、IB カスタマー サービスは、それはないと答えたので、そうしようと思いました。念のためここで試してみてください。 IBのウェブサイトでは、あらゆる証券の株式Reg-T/オーバーナイト証拠金要件は50%であると述べていますが、それがすべての証券に当てはまるのか、それとも単に最低額に当てはまるのかは不明です。同じページで報告されている株のロングポジションの初期証拠金率 25% は間違いなく最低額であり、IB がリスクの高い証券の証拠金率を引き上げることが多いことは知っています。おそらくオーバーナイト証拠金率はmax(50%、日中証拠金維持率)として計算できるのではないでしょうか?これを裏付ける経験のある人はいますか?

他の人はこの問題にどう対処していますか?必要以上に多くのポジションを手仕舞いしてしまうというミスを防ぐために、証拠金率をできるだけ控えめに想定することもできると思いますが、私はそうしたくないと思っています。

 もっと

 ジャック・ジョスト 11 月 27 日 #39012  

こんにちは、

IB は、https://ibkr.info/article/2024 で説明されているように、リベート/手数料およびマージン率の最新情報を Web サイト経由および FTP サーバー上の CSV 形式で毎日公開しています。 証拠金率の形式が現在価格の % である場合、変動の激しいペニー株は 25% または 50% をはるかに超える値を設定する必要がある場合があります。

#SYM|CUR|NAME|CON|ISIN|CUSIP|LongMaintenanceMargin|LongInitialMargin|ShortMargin

[…]

SYAI|USD|SYSTEMS AMERICA INC|112161674|US8718773042|871877304|100|100|100

SYANY|USD|SYDBANK AS-UNSPONSOED ADR|109785199|US87124G1022|87124G102|100|100|100

SYBF|USD|SYNTEC BIOFUEL INC|40429693|US87163W1099|87163W109|100|100|100

SYBRQ|USD|SYNERGY BRANDS INC|6858124|US87159E4026|87159E402|100|100|100

[…]

空売り手数料と在庫状況は、次の形式で同じフォルダーに公開されます。

#SYM|CUR|NAME|CON|ISIN|リベート|フィーレート|利用可能|

[…]

A|USD|アジレント テクノロジー INC|1715006|XXXXXXXU1016|0.9100|0.2500|>10000000|

AA|USD|アルコアコーポレーション|251962528|XXXXXXX21065|0.7212|0.4388|5200000|

AAAP|USD|高度なアクセラレータ アプリ-ADR|212212690|XXXXXXXT1007|-7.3307|8.4907|100000|

AABA|USD|ALTABA INC|278946664|XXXXXXX61017|0.9100|0.2500|>10000000|

AABVF|USD|アバディーン インターナショナル INC.|60152167|CA0030691012|-16.1002|17.2602|10000|

AAC|USD|AAC ホールディングス INC|169041192|XXXXXXX71083|0.0439|1.1161|400000|

お役に立てば幸いです。

– J

 アダム S. 11 月 29 日 #39026  

ジャック、これは素晴らしいリソースですが、一日の終わりのマージン率に関する情報は含まれていないようです。そうは言っても、一度に 1 つの証券に対して繰り返し IB API をクエリするのではなく、1 つのファイルから優れた初期証拠金率と維持証拠金率を得ることができます。証拠金率を記載した複数のファイルの違いは何かご存知ですか?各ファイルには異なる国の名前が付けられており、...-US.dat で終わるファイルには米国上場証券がありません (たとえば、JNJ は含まれていません)。奇妙なことに、…-CAN.dat で終わるものには、証拠金率が少し違うように見えますが、すべての米国上場証券が含まれているようです。たとえば、JNJ のマージン率は 30% と記載されていますが、TWS では 25% です。

 アダム S. 11 月 29 日 #39029  

カスタマーサービスはトレーディンググループの誰かを私に紹介してくれたので、彼らは私の質問に答えることができました。 Reg-T/オーバーナイトマージンチェックは他のマージンチェックとは独立しているため、オーバーナイトマージンレートはその日の他のマージンとは無関係であるため、50%は最低値ではなく、実際には「マージン可能な」すべての証券に当てはまります。  

 ジャック・ジョスト 12月1日 #39037  

実際の証拠金要件は口座タイプによって異なります。さらに、異なる IBKR エンティティ (IB US、UK、CA、JP、HK など) ごとに異なる証拠金要件がある場合があります。そしてポートフォリオ証拠金口座には明らかに Reg-T 証拠金口座や現金口座とは異なる要件があります。初期要件、保守要件、夜間要件を計算するための公式と例は、https: //www.interactivebrokers.com/en/index.php ?f=24862 にあります (「+」のマークが付いている引き出しタブを確認してください)。

– J

[Q] tws で購入できるすべてのアドオンのインデックスは?

[A] by カート

ここを見ましたか?

http://individuals.interactivebrokers.com/en/general/poll/ibconsultants.php

[Q] IB API ソケット プロトコルのリバース エンジニアリング

[A1] Ray Racine 著オンラインで表示/返信 (#45535)  

2020 年 9 月 28 日に追加

私は独自のクライアント ライブラリを作成してきましたが、私が見つけた唯一かつおそらく最良のリファレンスは TWS ライブラリ コードです。しかし、それで十分です。

プロトコルは非常にシンプルです。

だいたい:

1) ほんの少しの「マジック」バイトがあり、プロトコルはログオン/ハンドシェイクにあります。ログオンを確立すると、API メッセージ プロトコルは一貫性があり、シンプルになります。リクエスト メッセージのエンコーディングはクライアント (EClient) ファイルにあります。応答メッセージのデコード (フィールド レイアウト) は、Decode (EDecode) ファイルにあります。デコードされたメッセージのコールバック メソッドは、「Wrapper」ファイルにあります。

2) 通常のメッセージの場合、バイナリ エンコードは行われないため、ネット エンディアン、ビッグ エンディアン、リトル エンディアンなどについて心配する必要はありません。

3) メッセージ パケットは、null で終了する文字列で構成されているか、null で区切られた utf8 でエンコードされた文字列フィールド値と考えてください。

4) メッセージのプレフィックスまたはヘッダーは、メッセージの長さ、その後にメッセージ ID (送信されるメッセージのタイプ)、その後にフィールドが続くものです。

5) 初期のメッセージにはバージョン ID を持つものもありますが、後のメッセージにはありません。特定の要求メッセージのコードは、バージョンが必要かどうかとバージョン値を示します。

6) 繰り返しフィールド、たとえばバーのリストは、リスト内の要素の数とそれに続く N 個の繰り返し要素としてエンコードされます。

7) プロトコルは非同期です。サーバーにリクエスト メッセージを送信すると、リクエストに応じて 1 つ以上のレスポンス メッセージが続きます。

8) リクエストは、レスポンス ID またはティッカー ID と呼ばれることもあり、(一般に) 1 つ以上のレスポンス メッセージに関連付けられます。実際の意味上の違いのない名前付け。リクエスト ID に関する唯一の義務は、それが一意の整数値である必要があることです。クライアントは、カウンター、ランダム ジェネレーターなどを介して、リクエスト (リクエスト ID またはティッカー ID を持つリクエスト メッセージの場合) で送信される一意の整数値を合成し、サーバーはその値を応答メッセージで返す ため、応答を照合できます。それを開始する特定のリクエストに応じて。

9) 受信メッセージの場合、スレッドは無限ループでソケットをリッスンします。このループは、次のメッセージ バイト長の読み取り、N メッセージ バイトの読み取り、メッセージ フィールドの解析、およびメッセージ ID 整数値に基づく「メッセージ タイプ」に適切なコールバック関数の呼び出しで構成されます。

いったん本格的に始めて、いくつかの小さなメッセージを実行したら、すべてを繰り返して洗い流すだけです。

[A2] Leno (elenosandoval) 著

(あれは面白いですね)

西海岸からおはようございます。時々、私はこの素晴らしいディスカッショングループに何か貢献しようとしています。今朝は平静を保つことにしたので、今のところこれが私の作品です。

まず最初に、私自身のアプリケーションについて説明することで、何かを明確にしたいと思います。

私の個人的なプログラムは、ASCII 文字を使用して TWS と通信します。これは、事前定義された文字のセットを TCP ポート 7500 に送信することによって、市場データを「サブスクライブ」します。これは、私の TWS API の「リッスン・アンド・トーク・トゥ・API アプリケーション・ポート」です。デフォルトのポートは 7496 ですが、どちらがどれであるか常にわかるように 7500 に変更しました。

どの文字を送信し、どの応答をリッスンするかについて説明する前に、TWS は暗号化されたリンクを介してサーバーと通信することを言っておきます。少なくともそうなることを願っています。私個人としては、TWS から IB サーバーへの通信には興味がありません。率直に言って、自分のアカウント情報がハッキングに対して脆弱かどうか知りたくないからです。

私のプログラムが TWS とどのように「対話」するかについて: リバース エンジニアリングは必要ありませんでした。たとえば、C++ のサンプル コードを確認するだけで、どのコードを送信するか、応答をリッスンする「フィールド」の数と種類がわかります。 C++、Visual Basic、Java のサンプル コードがあります。

私は市場データ、口座データ、注文執行情報などをサブスクライブする前に、まず「レシーバー」を構築することからプログラミングを開始しました。

ASCII 文字は、フィールド終了文字として 16 進数の「00」を使用して、プログラムと TWS の間で交換されます。

たとえば、古いシリアル ポートを使用して、comm に送信します。ポート 1、「Hello」の後に「キャリッジ リターン」の ASCII コード 13 が続き、「ライン フィード」のコード 10 が続きます。これにより、通信しているコンピュータにデータ送信が終了したことが通知されます。

API を使用して TWS にログインした後に必要となる最初の「受信者」は、「次の有効な ID」と TWS メッセージ受信者です。

私のプログラムが TWS にログインするときに発生するイベントの正確なシーケンスは次のとおりです。

1. ポート 7500 への接続を開き、フィールド「20」を 1 つ送信します。これにより、TWS の計画では、私のプログラムが少なくともバージョン 20 までであることがわかります。

2. 今朝の TWS 応答バージョン (49) を読みます。 1つのフィールド。

3. TWS の日付/時刻文字列を読み取ります。 1つのフィールド。

以上がログインシーケンスでした。これで、プログラムはメインループに入ります。ポート 7500 で読み取られるのを待っている文字があるたびに、私の「レシーバー」は最初のフィールドを読み取り、次に何を期待するかを正確に認識します。

必要となる最初の 2 つの受信者は、「次の有効な ID」コード 9 と TWS メッセージ、コード 4 です。

たとえば、コード 9 バージョン 1 の「9 1」を含む 2 つのフィールドを読み取り、次に取引を行うための次の有効な ID を含む 3 番目のフィールドを読み取ります。今朝は483でした。おお!時間が経つのは早いですね。

2 つの TWS メッセージは次のようになります。コード 4、バージョン番号、さらに 3 つのフィールドが続きます。

4 2 -1 2106 HMDS データ ファーム接続は OK:ushmds2a

4 2 0 165 過去の市場データ サービスのクエリ メッセージ: HMDS サーバーの接続に成功しました。

さて、今のところ。誰かの役に立てば幸いです。

幸運を、

レノ

[Q] 税務上の目的で後でこれをお読みください (必要な場合)

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

[Q] すべての通貨のMarketValueを取得できますか?

[A] by gameworx

私が本当に探していたのは、オープンポジションではなく、リスクを計算するために異なる通貨での異なる市場価値でした。

EWrapper の UpdateAccountValue() メソッドからすべての通貨の MarketValue を取得できることがわかりました。

スティーブ。

[Q] 管理アカウントですか?

こんにちは、みんな、

私は以前ヘッジファンドを経営しており、IBで取引していました。今私が見ているのは

代わりに管理対象アカウントを実行します。大きな違いは、私が取引するということです

1 つのエンティティ (hf) を代表するのではなく、多数の管理アカウントを代表しています。現在、私はちょうど

1 つのアカウントに 1 つの TWS が関連付けられているため、API インターフェイスが明確になります。どうやって

これは、たとえば 20 個の管理アカウントで機能しますか?をループする必要があります

アカウントリストがありますが、TWSとカードセキュリティチェックではそれがどのようになっているのかわかりません

可能性があります...グループまたは IB による文書について知っている人はいますか?

案件?私の取引方法のため、コンピューター化/APIを使用する必要があります…

ご提案/ヒントをいただければ幸いです。マット

[A] by Jens (このメッセージより)

これはブログ投稿です:

http://leighdrogen.com/the-hedge-fund-structor-is-dead/

[A2]イェンス著

IB によると、1 つを下取りに出すような構造を設定することは可能です。

マスターアカウントに登録すると、すべての取引が自動的にすべてのアカウントに分割されます。

管理されているアカウント。 Surfview Capital の Leigh Drogen がブログを書きました

これについては一度 – http://leighdrogen.com/ でいつでも確認できます

彼もおそらく IB を使用していると思います。いずれにせよ、できると確信しています

IB プラットフォームを使用すると、非常に「簡単に」実行できます。

幸運を!

イェンス

[A3] マル・スピンク著

割り当てプロファイルを設定し、各アカウントに割り当てられる実行株式の割合を指定できます。

[A4] マシュー著

私は長年、あなたが説明したのと同様の構成でクライアントアカウントを取引してきました。ほとんどの場合、これは非常に機能的で実現可能です。

私が学んだことのいくつか (ただし、あまり文書化されていません)

* FA タイプのアカウントに注文を発行するには、(i) FA プロファイルを使用する (最初に TWS で設定する必要があります)、(ii) 一連のルールに従って割り当てられる一般的な注文としてなど、さまざまな方法があります。 API アプリケーションで設定された FA メソッドを使用するか、(iii) 単一のアカウントに割り当てられます。私がサービスを提供するクライアントには、3 つの組み合わせすべてを使用します。

これらの種類の注文を受け取るには、IB アカウントが正しく設定されていることが重要です。

* ポートフォリオ イベントは、サブアカウントでは常に信頼できるとは限りません。データが常に取得されるとは限らず、データを強制的に更新できる唯一の方法は、親口座のポートフォリオの詳細をリクエストしてから、サブ口座のポートフォリオの詳細を再リクエストすることでした。注意すべきことがある。

これらはおそらく共有する価値のある重要な情報でした。お役に立てば幸いです…頑張ってください。

よろしく、

マット・S

[Q] API 経由で Exchange のリストの完全なリストを取得するには?

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

2021 年 2 月 26 日に追加

残念ながら、API にはそのようなものはありません。ウェブサイトは利用可能な取引所を最新の状態にする必要があり、そこにはかなりの数の取引所があります。

更新: 現在、IBKR には 253 人がいます。これは、reqMktDepthExchanges() を使用して API からリクエストできます

https://interactivebrokers.github.io/tws-api/market_ Depth.html#reqmkt Depthexchanges

– ブルース

報告

[Q]送信される OrdeId と、[取引] タブと [概要] タブに表示される約定注文 ID を照合するにはどうすればよいですか?

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

TWS Trades ウィンドウ自体の詳細をすべて覚えているわけではありません。

ただし、API プログラマーとしては、その情報は必要ありません。使用できます

execId フィールドに加えて reqExecutions からの情報 (おそらく

TWS に表示されるフィールドと一致します)。permId、clientId、および

API で送信された注文情報と照合できる orderId フィールド。

ただし、私が思い出したように、完全な「ドリル」を抽出するサポートされた方法はありません

関連付けに役立つ実行構造体情報からの「down」情報

関連イベント、特にコンボオーダーの場合。かなり綺麗になるよ

次のいずれかの組み合わせがある場合は、複雑になります。

分割実行

FA ケースでは注文がアカウント間で分割される

マルチレッグ注文

そのため、TWS に表示されるドリルダウンは完全に復元できないことを思い出します。

ただし、個々のレッグの両方について実行レポートを取得することに注意してください。

そしてコンボ自体についても。

また、最後に確認したところ、API 注文を次の注文に関連付ける方法はありませんでした。

アクティビティレポートをダウンロードしました。そこではさらに別の実行 ID が使用されます。私としては

契約、規模、時間を一致させること以外に何もすることがないことを思い出してください。

-カート

[Q] 実行の保存

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

> こんにちは。

> 注文の実行に関して通知が届かないことがあります。分かりました

> これは断続的であり、ケース間の関連性は見つかりませんでした。

> このような問題に遭遇した人はいますか?

> 処刑しなくても大丈夫だった、なぜなら時々電話するから

> reqExecutions()。 reqExecutions() を呼び出すと、すべての

> 見逃した場合に備えて、先週の死刑執行について。問題はそれです

> 得られる約定は TWS 取引ウィンドウのチェックボックスに依存します。

> 通常は今日のみチェックします。プログラムによる方法はありますか(それによってでも)

> 設定ファイルを変更する) を使用して、これらのチェックボックスを変更します。

>アプリケーション?このようにして、すべての日を確認してから、

> 現在の日付が自動的に表示されます。

> ありがとうございます。

>ニル

チェックボックスを手動で設定する必要があります。

IB ゲートウェイを使用する場合、選択肢は与えられず、

今日の取引のみを取得します。

信頼性を実現する最善の方法は、情報を確実に収集することです

毎日、または他のメカニズムのいずれかを使用するには、executions.txt ファイルまたは

「エクスポートされた」実行ファイルは *無期限* (1 週間は保存されません) に保存されます。

限界)。参考までに、それに関する私の以前のメッセージを以下に示します。

-カート

- 転送メッセージ

差出人: カート・ビグラー < kkb@… >

日付: 2011 年 1 月 25 日火曜日 01:01:53 -0700

宛先: " TWSAPI@yahoogroups.com " < TWSAPI@yahoogroups.com >

会話: [TWS API] Re: Java の実行例を取得する

件名: Re: [TWS API] Re: Java の実行例を取得する

自動エクスポート (TWS 構成の下) を使用すると、実行する頻度を指定できます

情報がエクスポートされました (選択したディレクトリに)。列を指定することもできます

含まれること。エクスポート内の列を変更すると、

Execution.txt の列も同様に変更されました。

したがって、自動エクスポートの「間隔」も頻度に影響する可能性があると思います

executions.txtが書き出されますが、確認していません。いずれにしても、

間隔は分単位で指定されるため、1分未満の更新は期待できません

exeuctions.txt が別の方法で処理される場合を除きます。

十分な情報を得るには「拡張フォーム」を使用する必要があったと思います。

私の目的に合った取引を特定します。 (カスタム列も試してみようと思いました

一度設定しましたが、現在は設定されていないので、拡張フォームが欠落していないことを願っています

何でも。)

-カート

[Q] ステータスの更新がないにもかかわらず、orderStatus関数が3回、4回(!)コールされてしまいます。なんと?!

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

[Q] 注文約定を追跡するにはどうすればよいですか?

[A] フィル情報を取得するには、私たちが知っている方法が 4 つあります。この スレッド全体を読んでください。

[Q]現在の完全なポートフォリオを取得するにはどうすればよいですか?

こんにちは:

IB Traders Gateway API への C++ コードを使用して、口座の現在のポートフォリオを CSV ファイルに自動的にエクスポートしようとしています。

API C++ リファレンス マニュアルを正しく理解していれば、reqAccountUpdates(bool subscribe, const IBString & acctCode) は、将来発生した場合にポートフォリオの更新を提供するだけのようです。

代わりに現在のポートフォリオ全体を取得するにはどうすればよいですか?

– ランドール

 rwk の[A]がこのスレッドで見つかりました

2016 年 1 月 5 日に追加

おそらく updatePortfolio() が必要なものを提供します。 reqAccountUpdates() を呼び出すと、その時点ですべてが取得され、加えて、発生したすべての変更が取得されます。

[rwk]

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

(確認済み)

これは、契約フィールドを慎重に操作した後に機能します。 CSVスプレッドシートに合計損益セルも追加しました

2015 年 10 月 21 日午後 4 時 12 分に、あなたは次のように書きました。

返信してくれてありがとう。

次の点を指摘する必要があります。

次のヘッダーと 1 つのデータ行は、TWS デスクトップの「ポートフォリオのエクスポート」メニュー コマンドからのものです。

契約内容、為替、ポジション、通貨、市場価格、市場価値、平均価格、未実現損益、実現損益、最終清算、証券タイプ

ポートフォリオ、、、、、、、、、、

WMT、NYSE、100、USD、58.6550026、5865.50、58.72、-6.50、0.00、いいえ、STK

C++ API 呼び出し reqPositions() リクエストを使用して現在のポートフォリオを取得するという提案は、次の結果になります。

口座、銘柄、株式、価格

ZZ000000、WMT、100、58.72

上記の最初のエントリで不足しているフィールドをすべて取得するにはどうすればよいですか?明らかに、reqPositions() 呼び出し以上のものが必要です。

ポートフォリオのエクスポートの現在のポジションは、reqPositions() 呼び出しの現在のポジションと同じですか?株を購入する際には平均価格を節約する必要があると思いますか?

– ランドール

[Q] API 経由でアカウントのショートバリューの合計を取得する方法はありますか?私は基本的にすべてのショートポジションの合計値を探しています。

[A] by Kurt Biglerオンラインで表示/返信 (#38959)

2017 年 11 月 15 日に追加

アカウントから返されるすべての情報を確認し、その情報をサブスクライブするときにコールバック (updateAccountValue および updatePortfolio) を配置します。それを見れば、そこに何があるかが正確にわかります。通貨と基本通貨に関する概念を理解している限り、ほとんどの場合、透明性が高くなります。

これらのインターフェイスを通じて受け取る情報は、基本的に、TWS でポジション列 (特に [ポートフォリオ] タブの下) およびアカウント ウィンドウから受け取る情報とまったく同じです。 TWS を使用せずに API を使用することは考えないでください。TWS は事実上、API の生きたドキュメントであり、TWS によって何が明らかになるかについて質問することで多くの時間を無駄にすることになります。 TWS は通常スーパーセットですが、TWS に見つからないものは API にも見つかりません。

偶然思い出したのですが、Web ベースのアカウント管理レポートで見られるように、TWS (または API) がトータル ロングとトータル ショートを分離しているとは考えていません。おそらくそれを自分で追加する必要があります。ポジションは API によって列挙されるため、関連する通貨または基本通貨の値を含む、契約ごとのポジションの最新のテーブルを保持し、すべてのポジションを反復処理して合計ロングまたは合計ショートを取得するか、(より効率的に)現在のロング合計とショート合計 (おそらく通貨別)。新しいポジション値を蓄積し、以前のポジション値を減算することで、ポジション値が変更されるたびに更新できます。それが理にかなっていることを願っています。私は、受信した値が、以前に保存された同じ値 (存在する場合) に関連して処理され、それに応じてグローバル依存値が更新される、かなり基本的な手法を参照しようとしています。

トータルロングとトータルショートを取得したら、それらを組み合わせて現金と組み合わせ、二重チェックとして正味清算額と比較することができます。アカウントの価値は、ポジションに基づく評価と比較して常にわずかな差異がある可能性があり、ポジションから計算されたものよりも信頼できると考えられます。合計行を設定してアカウント ウィンドウの値を再チェックすると、TWS でも同じことがわかります。

あなたは、アカウント全体の写真の一貫したスナップショットをいつ受け取ったかを知るために、accountDownloadEnd を処理したいと考えています。

-カート

[Q] RealialPNL が取引時間中のランダムな時間にリセットされたと報告されていますが、その時間を変更するにはどうすればよいですか?

取引セッションの途中で 、RealizePnL がリセットされました。非取引時間を調整できるように、RealizePnL をいつリセットするかを TWS 設定のどこに設定すればよいか知っている人はいますか。

ありがとう

ジェフ

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

2020 年 7 月 7 日に追加

ジェフ、

毎日の損益関数 reqPnL、reqPnLSingle の RealizedPnL は、金融商品固有のスケジュールでデフォルトでリセットされますが、「一般」→「損益計算書タイムゾーン」のグローバル構成設定を通じて変更できます。 reqAccountUpdates から返され、TWS アカウント ウィンドウの値に対応する RealizePnL は、1 日に 1 回リセットされますが、構成可能な設定時間にはリセットされません。

ジョシュ

[Q] 損益計算書を取得するにはどうすればよいですか?

API でこの情報を取得する簡単な方法はありますか?

取引の損益に興味があります。

reqPnL と reqPnLSingle については知っていますが、実現損益と未実現損益が与えられると理解しています。取引ごとに分割された実現損益に興味があります。

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

2020 年 10 月 18 日に追加

完了した取引の実現損益は、コミッションレポートを通じて取得できます。このイベントは、実行詳細イベントとともにトリガーされます。

執行をリクエストすると、過去 24 時間のすべての執行と手数料レポートを受け取ります。

TWSワークステーションのトレードログの設定を変更することで、最大7日間取得できます。

>他の場所で、残りのAPI用のゲートウェイも必要であると読みました。

それも正しいですか?

はい正解。これを読む:

https://groups.io/g/twsapi/topic/72607088#44154

>90日間の死刑執行があれば、かなり助けになるだろう。

はい、大丈夫です。残念ながら、IB API を使用する場合は、技術的には可能であっても提供されません。 IB は、IB API に対して Rest API を使用する競争上の理由を少なくとも 1 つ見つける必要があるからだと思います。このようなマーケティング上の決定は、まったく丁寧とは言えません。

実行情報のみが必要な場合は、フレックス レポートを参照してください。私の知る限り、データは 5 年前までさかのぼることができます (レポートも 5 年に制限されています)。

フレックス レポートの問題は (私はフレックス レポートを使用していますが)、注文に直接マッピングできないことです。 PERMID や ORDERID にはリンクしません。別のIDです。その理由は神のみぞ知るです。少なくとも実行 ID は同じです。

注文を調整するための計算式を考え出す必要がありました。

— 少し後:「ザ・フォーミュラ」 —-

こんにちは、

はい、注文の調整に役立つクエリがあります。

クエリには C# を使用するので、クエリはその言語になります。

flexOrder.Symbol == order.Symbol

&& (flexOrder.Quantity == (flexOrder.BuySell == Enums.BuySell.BUY ? 1 : -1) * order.NrOfShares)

&& flexOrder.BuySell?.ToString() == order.Action

&& flexOrderCreationUtcTime.AddHours(-1) <= order.CreatedDate && order.CreatedDate <= flexOrderCreationUtcTime.AddHours(4)

注意として、私は注文を UTC 日時で保存しているため、フレックス クエリ注文をニューヨーク時間から UTC に戻す必要があります。

IB タイムゾーンについては、このトピックを参照してください。

https://groups.io/g/twsapi/topic/69936034#44206

C# を使用している場合は、このライブラリを使用することで有利なスタートを切ることができます。

https://github.com/gabbersepp/ib-flex-reader

よろしくお願いします、

ドラゴス・ドゥルルート

まだ確認されていません(ただし問題が発生する可能性があります)

[Q] アルゴ取引の結果をテストするための紙口座の有効性は?

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

私の経験から言えば、それはノーです。

私の紙の口座は、決して起こらず、チャートにも載っていない価格で約定することがわかりました。私は紙の口座をコードの機能をテストするためにのみ使用し、取引システムの期待値には使用しません。

乾杯、

ダミアン

[A2] Pankaj Sharma 著 (ここにあります)

結果が異なる理由の 1 つは、紙の口座では注文約定のみが評価されることです。

取引価格が変動したとき

パンカジ

[Q] 他に知っておくべき制限はありますか?

[A] 注文制限 1 秒あたり最大 50

[Q] IB のフィードでは買値と売値と取引の間に相関関係がありません (?!!)

[A]  by Ed news1000@edshome.net

取引所がどのようなデータを公開しているのかはわかりませんが、IB のフィードにおける買値/売値と取引との間に相関関係がないことはわかっています。

ビッド/アスクとティックは独立したストリームであり、ティックを受け取ったときにビッド/アスクが何であったかを判断する方法はありません。さらに、ティックが到着する前にビッド/アスクの変化が見られる場合もあれば、ティックが到着した後にビッド/アスクの変化が見られる場合もあります。

誰かがこのパズルを解決し、IB からのビッド/アスクで正確な取引を得ることができたら、喜んでお知らせします。

これは暴言や苦情ではないことを明確に述べるべきだと思います。これは、IB のリアルタイム データがどのように機能するかについての私の理解にすぎません。

[A2] by rwk

@Ed、オーダーブックとテープの間に関係がないというのは正しいですが、これはIBだけでなくすべてのブローカーで同じです。一部のデータ ベンダーは、価格ラダー全体を 1 つのトランザクションとして送信します。これによりプログラミングは簡単になりますが、それによってどのようにしてより多くの情報が明らかにされるのかわかりません。帯域幅を消費するだけです。

注文が取引所に到着すると、すぐに市場に出せるかどうかのどちらかになります。市場性がある場合は、書籍からの注文と照合され、テープに印刷されます。市場性がない場合は、その価格で本の列の最後尾に追加されます。オーダーブックには注文のみが含まれ、取引は含まれません。テープには取引のみがあり、注文はありません。

最近何が起こっているかを見るには、本とテープの両方が必要です。 19 世紀から 20 世紀初頭にかけて、この本を見ることができたのは専門家だけだったので、私たちが持っていたのはテープだけでした。テープの読み方と解釈方法に関する民間伝承の膨大なコレクションがあります。しかし、私たちは今 21 世紀に入っており、すべてが急速に起こっています…非常に速いです。昔の知恵が今に意味があるかどうかはわかりません。いずれにしても、私は本とテープを使って収益性の高いシステムを構築できるほど賢くはありませんし、データが高速になってもあまり役に立たないでしょう。

[rwk]

[Q] updatePortfolioEx() の動作に一貫性がありませんか?

[A]  by "hlhhtl" <harry.webmail@…>

はい、同じ問題を抱えている人や、それについてコメントしたくない人はいないようですので、その間に私が行ったことを共有します。おそらく、ライブ取引メンバーは、updatePortfolioEx() の経験を追加できます。

すべての特定のアカウントを同時にサブスクライブ (reqAccountUpdates()) することから反復するように変更しました。つまり、1 つのアカウントを一度サブスクライブし、(これまでのところ) 10 秒待機し、サブスクライブを解除して 5 秒待機し、次のアカウントに対して同じことを行います。

これにより、より安定した正しいデータが得られるようです (少なくとも最初のテストでは)。ところで、これはライブアカウントだけでなくFAペーパーにも当てはまります。

時間と AccountDownloadEndUpdate() イベントを組み合わせて時間指定のリクエストを変更すると思いますが、それでも、何が改善できるのか、API の何が問題なのか疑問が残ります。もちろん、IB はこれまで私の質問に答える必要はまったくないと考えていました。

私の理解では、非常に基本的なことですが、アカウントの資産 (2 回目のリクエストごとに 0 ではなく) とすべての FA サブアカウントに保持されているポジションを確実かつ継続的に提供するブローカー API があれば便利です。

— TWSAPI@yahoogroups.comで、「hlhhtl」<harry.webmail@…> は次のように書きました。

>

> こんにちは。

>

> VB.NET で ActiveX reqAccountUpdates() メソッドを使用して、いくつかの FA サブアカウント (主に 3 つのグループ) をサブスクライブしています。

>

> updatePortfolioEx() でデータを読み込んだのですが、正しいデータが返されません。 accountDownloadEnd() と口座の正しいデータを待って取得したにもかかわらず、ポートフォリオ (= ポジション) データは不完全で間違っており、その後 (部分的に) 正しくなり、その後ポジションなどに再び誤って 0 が表示されます。また、すべてのアカウントが更新されるわけではありません。場合によっては、3 つ以上のアカウントのうち 1 つまたは 2 つだけがデータを表示することもありますが、すべてのアカウントのデータがあったとしても、データは不完全であるか、正しいものから正しいものへと変更されます。上で説明した。

>何かアドバイスはありますか?ありがとう!

>

[Q] 複数のアカウントにアクセスできますか?

[A]  by カート

元のメッセージからは、あなたが次のことをしようとしていたかどうかはわかりませんでした

一度に複数のサブアカウントを購読します。 API ではそれが許可されていません。

あなたは理解したようです。はい、これは私の知る限り重大なバグです

懸念されており、実際の PITA は、多くのコーディングの悪ふざけを引き起こす原因となります。

一見愚かな制限に対する不条理な回避策。

参考までに、あなたが購読しているアカウントは、TWS の現在のアカウントを切り替えます。

気付かなかったケース。そして、TWSには現在のアカウントが1つだけあり、

ただし、TWS (API ではない) では、アカウント グループを選択することもできます。

合計を取得します。

私が間違っていなければ、このことの唯一の良い面は、あなたが少なくともそうするということです

ポジションが取得されたときにすぐに (またはあまり長い遅延なく) 更新を取得します。

(実行による) 変更。

残りの時間は、自分のポジションをライブ市場で増やすことができます

データを取得してポジションの価値を決定します(そして、コストベースを差し引いて、

未実現損益)。これにより、

定期的な reqAccountUpdates ポジション値と未実現損益に関する情報。

有効な戦略の 1 つは、「すべて」アカウントにサブスクライブすることです。

マスターアカウント名に「A」を追加して取得します。それからいつ

あなたが知っているすべてのアカウントでアクティビティが発生します (ポジションの変更など)。

他のアカウントをローテーションして詳細を取得します。それは100%ではありません

解決策ですが、かなり近い解決策であり、常に循環することを避けることができるかもしれません。

TWS を使用すると、TWS の動作にも干渉します。

私のリクエストにあなたの投票を追加してください、と言うつもりでした。

機能投票では改善されましたが、明らかに、

機能に関するアンケートは消えてしまい、現在 IB に電話中です。

それ。

それまでの間、機能投票リクエストを送信し、こちらからお知らせください。

ここに投票項目番号または URL を入力すると、投票できるようになります。

-カート

[Q] X でイベント (キーボード、マウス) を監視するにはどうすればよいですか?

リモート VNC セッションがキー押下イベントをリモートに適切に渡せなかったようです (更新: 実際には、TWS GUI が「ロック」状態だったためでした – IB の新機能:)

[A] はここにあります:

http://unix.stackexchange.com/questions/146287/monitoring-events-keyboard-mouse-in-x

(引用)

かなり簡単に検索すると、 結果としてxevが見つかる可能性があります。 X で押された内容や入力された内容がすべて表示されるわけではありません。むしろ、キーコードとマウスの動きに関する情報を確認できるようになります。

ただし、-rootオプションを使用すると、 xev で X セッション全体を監視できる 場合があります。これを行うと、xev がすべての入力をキャプチャすることになるため、実際にプログラムと対話することがかなり困難になることに注意してください。

xev -root には暗黙の「YMMV」が付いています。もう 1 つの可能な解決策は、 xinput を使用して作業を完了することです (ただし、最新バージョン (1.6.1 以降) が必要です)。

$ xinput test-xi2 –root

上記はすべての イベントをキャプチャできるはずですが、 xinputがtest-xi2 または–root をサポートしていない場合は、 特定のキーボード またはマウスデバイスでxinput テストを使用できます 。

この他の質問も参照してください:すべてのキーストロークを記録してファイルに保存する

(引用終わり)

付録

[良いアイデア]

「スナップショット」パラメータをオンにすると、比較的小さなデータ セットしか取得できないため (そして非常に高速に)、ラウンド バッファ方式でスナップショットを要求することで、多くのシンボル (確かに 100 よりはるかに多い) を周回することができます。

これも良いアイデアです:

私はプロデューサー/コンシューマーの非同期キューを使用しているため、各受信メッセージはキューにプッシュされます。つまり、リーダー スレッドは実際の処理が完了するのを待ちません。

たとえば、シンボル (または「サブスクライバー」など) ごとに複数のキューを持つことができます。もちろん、経済学と同様に、限界収益逓減の法則が適用されるため、消費者スレッドで過負荷にならないようにしてください…

さらにもう一つ:)

VolumeSense は、出来高と出来高アクションに焦点を当てたインタラクティブ ブローカー向けのチャート アプリケーションです。任意の取引価格について、ビッドでの取引 量とアスクでの取引量を表示する直感的なチャートを作成します 

[契約 ID が唯一信頼できる根拠です]

最初にオプション契約を入力するときに、すべてのオプション契約を手動で作成します

UI経由で。あなたの例では、「AIG:jul40c」と記号「expiry」を入力します(おそらく

「201007」に変換されます)、ストライク、およびライトフィールドがそこから設定されます。

電話で契約の詳細をリクエストすると、より完全な契約が得られます

そこから、契約フィールドの一部、場合によってはすべてを更新します。

ただし、契約 ID は必ず隠しておき、次のときに使用できるように保存します。

シンボルが一晩で変更されるため、ワークスペースが再ロードされます。

結果はありません。

— カート

[todo]

このツールの流動性をチェックしてください。

http://en.wikipedia.org/wiki/E-mini_S%26P

【その他実装上の注意点】

==============================================

> ただし、(他の人も指摘しているように)実際には存在しません。

> 読者スレッド。それは本当に本当ですか、それとも何かを見逃したのでしょうか。

はい、ありがとうございます。もぐらさんと同じように、私も手続き型です。

おそらく C++ が優れた機能を提供していないため、リーダー スレッドがありません。

Java が提供する透過的な同期機能。

実際には、すべてを機能させるために *まだ* 追加の作業を行う必要がありました。

特にブロックを *回避* して、UI やその他の種類のコマンドを実行できるようにします。

メインスレッドからの接続。これまででわずかに非効率ですが、そうではありません

私の用途ではかなりその通りで、必要のない非常にシンプルなモデルが得られます。

同期について*考える*こともできます。

とにかく、その目的のために、EPosixClientSocketをサブクラス化し、オーバーライドする必要がありました

checkMessages を実行し、実際に select() を呼び出します。

誰かがそれを使用する場合に備えて、コードをここに示します。いくつか注意が必要な点があります

処理するケースをサブクラス化することでこれを可能にします。

EPosixClientSocket は、それを 1 未満にするという点で少し不親切でした。

EPosixClientSocket をハックせずにノンブロッキング動作を実現するのは難しい

自体。

クラス SocketClient : public EPosixClientSocket {

プライベート:

typedef EPosixClientSocket を継承。

公共:

SocketClient( MyWrapper *ptr);

MyWrapper *GetWrapper();

bool checkMessages();

bool hasDataToReceive();

};

SocketClient::SocketClient( MyWrapper *ptr)

: EPosixClientSocket (ptr)

{

}

MyWrapper *SocketClient::GetWrapper()

{

return static_cast<MyWrapper *> (getWrapper()); // コンストラクター引数

type はこの static_cast が有効であることを保証します

}

bool SocketClient::checkMessages()

{

if (isConnected ())

{

if (!hasDataToReceive())

false を返します。

それ以外

{

// このテストを (継承された) の上から複製します

EPosixClientSocket::checkMessages。

// この可能性を排除すると (isSocketOK false) bool が保証されます

以下の結果は、bufferedRead、したがって、receive、したがって、::recv からのものです。

if( !isSocketOK())

false を返します。

bool result = 継承::checkMessages();

if (!結果)

{

eDisconnect();

getWrapper()->connectionClosed();

}

結果を返します。

}

}

それ以外

継承された::checkMessages() を返します。

}

bool SocketClient::hasDataToReceive ()

{

// おそらく、MSG_PEEK を使用して ::recv を呼び出す方が、

単一のソケットに対して select を使用します。

int sock = fd();

fd_set ソックス; // ただし 1 つだけ

FD_ZERO (&ソックス);

FD_SET (靴下、&靴下);

struct timeval タイムアウト。

タイムアウト.tv_sec = 0;

タイムアウト.tv_usec = 0;

int readsocks = select (sock+1, &socks, (fd_set *) 0, (fd_set *) 0,

&タイムアウト);

リードソックス > 0 を返します。

}

-カート

==============================================

API アプリが同じ市場データを N 回リクエストすると、ティッカーは次の情報を取得します。

N回数えました、少なくともIBは電話でそう言いました。コード化しました

すべての「内部」サブスクライバーが同じティッカーにアクセスできるようにするための API アプリ

「外部」(API) サブスクリプションを 1 つだけ生成します。

-カート

==============================================

【2つのTWS(紙・実物)同時使用を検討】

リチャード L キングrlking@aultan.com

実際、両方の TWS インスタンスが同じコンピューター上で実行されている場合、紙のアカウントと実際のアカウントの両方でライブ データを同時に使用できます。私はそれを毎日一日中やっています、そして紙の取引システムが導入されてからずっとやっています。 (以前は 2 つの TWS が異なるコンピューター上に存在する可能性がありましたが、取引所からの苦情を受けて、IB は数年前にそのオプションを閉鎖したようです。)

あなたの引用文の 2 番目の文が、IB がさらに制限しようとしていることを示していないことを願います。ライブ口座の実行中に紙の取引口座を効果的に活用できなかったら、その口座は何の役に立つでしょうか?

==============================================

[重要: Kurt から Jan へ、TwsApiC++ について]

カート・ビグラー

2010 年 7 月 30 日

ソースを表示

ジャン、

おそらくしばらく投稿していなかったので、もういないのかと思っていました

このリストで何度か言及した事実です。

数か月前、私は可用性を考慮して TwsApiC++ から身を引きました。

POSIX サポートの強化と、非常に難しいプロセスのように見えました。

TwsApiC++ コードを 9.64 に移動します。私はすでに TwsApiC++ を正常に実行していました

9.60 年くらいだと思います。バッファ層を追加する必要がありました

シングルスレッド動作を実現するための TwsApiC++ 実装

私のアプリには必要です。

9.64 POSIX TWS API では、サブクラス化する必要があるという問題が 1 つ残っていました。

EPosixClientSocket はソケットからのノンブロッキング読み取りを実現します。

そのため、メインから UI とソケット通信の両方を実行できました。

糸。これに関連するコードを 7 月 21 日にスレッドに投稿しました。

Re: [TWS API] ため息…私は Windows が嫌いです (そして TWSAPI も嫌いです)….. スレッド化

それに関連して、あなたに伝えようと思っていたメモもたくさんあります。

TwsApiC++ を動作させる際に遭遇した問題。一度も手に入れることができなかった

あなたが消えたように見えたとき、それがどれだけ関連しているかわかりません

この時点で。このメモは 9.60 の取り組みに関するものだと思いますが、私はそうではありません。

もちろん。

私の場合、ターゲット プラットフォームは Mac であることにも言及しておきます。

-カート

そしてジャンの返事はこうだ。

1月B

メッセージ 3/3、2010 年 8 月 5 日

ソースを表示

こんにちは、カートさん

私もそこにいたことはありますが、どちらかというとこのグループに対して沈黙の受動的なユーザーであることを認めなければなりません。ただし、私はまだ TWS を使用しており、それは C++ API です。そして、私の投稿で説明したように、また 9.60 バージョンを投稿した後の電子メールでの反応からすると、C++ API に関するヘルプは引き続き歓迎されており、感謝されているようです。そのため、私は再びやる気になりました。

ご指摘のとおり、「posix 以前」の TwsApiC++ 実装を tws C++ API の新しい「posix 以降」の時代に移行することは、非常に複雑です。ほぼ完成したバージョンが利用可能ですが、利用可能な新しい posix のものに対するアプローチは間違っていると思います。 posix インターフェイスを使用すると、afx… のものをハックする必要がなくなり、EPosixClientSocket に追加のメソッドがあるため、API をより自由にフックできるようになります。 「posix 以前」の twsapic++ コードを移動することで、コードをよりよく理解するのに役立ちました。また、「古い」ものを残すことに徐々に納得する一方で、コード例は、そうするために必要な最後の推進力を与えてくれました。カートさん、コードを教えてくれてありがとう!

これらすべてが、 TwsApiC++ プロジェクトの目的を再定義することにつながります。

すべてのソケット関連を非表示にすることで、TWS C++ ユーザーに posix 実装以前と同じインターフェースを提供します。もちろん、プラットフォームに依存せず、移植可能である必要があります。

これは、TwsApiC++ バージョン 9.63 で次のように実現されます。

a) posix C++ API とは異なり、基本的に以前のバージョンと同じインターフェイスをサポートします。

b) TwsApiC++ 固有の xstring の代わりに IBString を使用する

c) i) checkMessages への同期非ブロッキング呼び出し、および ii) 別のスレッドでの受信イベントの自動非同期読み取りの両方をサポートします。このために、checkMessagesStart() と checkMessagesStop() という 2 つの新しいメソッドが追加されました。スレッドが開始されると、同期 checkMessages() は void (何も実行しません) になります。

d) TwsApiDefs.h は、リンクの問題を避けるために文字列と関数が 1 回だけ実装されるように再加工され、さらに 1 行で列挙と文字列が定義されます。

かつては何だったのか

EnumsOf( FormatDate ) { FD_AsDate=1, FD_AsSecondsSince };

Strings( FormatDate ) { "AsDate" , "AsSecondsSince"};

EnumsAndStrings( FormatDate, FD_AsDate, FD_AsSecondsSince )

になる

TWSValues( FormatDate )

{ TWS_V(FD_,AsDate , 1 ) // 値 = 1 から始まります

、TWS_N(FD_,AsSecondssince )

};

TWSFunctions( FormatDate, TWS_N(FD_,AsDate), TWS_N(FD_,AsSecondsSince) )

文字列値が異なる場合は、次のようになります。

// 命名規則の例外。

TWSValues( Rule80A )

{ TWS_S(R8_, 個別 , "I" )

e) Windows では、MVC Studio 6 が廃止され、MVC C++ Express Edition 2008 が使用されます。

カート、関連性があると思われるメモがあれば、喜んで知りたいと思います。また、すべてのイベントをキューにプッシュして処理できるようにすることに投資したことは、特に現在のマルチコア プロセッサーの時代では依然として価値があると私は信じています。ソケット出力の読み取りと解析には時間がかかることを考慮する必要があります。そのため、それを別のスレッドで実行でき、場合によっては ATS のメイン処理スレッドで使用されるコアとは別のコアで実行できれば、さらに良いでしょう。これは、プログラム内の別のスレッドでファイルを読み書きするようなものです。

敬具、

1月

[Q] IB に代わる良い選択肢はありますか?

[A]

このスレッドから:オンラインで表示/返信 (#47914)

私が見つけた情報が TickByTick データに関して正しいかどうかを再確認したいだけです。デフォルトでは、ユーザーには 100 の市場データ行があり、1 つのティッカーの各 TBT データは 100 行の価値があります。最低 3 つのティッカーが得られますが、これは基本的に 300 行に相当します。

4 つのティッカーが必要な場合は 400 行が必要になりますが、これは 3 つのブースター パックを購入することを意味し、tbt を使用すると 4 つのティッカーで $90 になります。つまり、tbt を使用して 10 ティッカーが必要な場合は、ブースター パックを 9 つ入手する必要があります。これは、10 ティッカーで月額 270 ドルですか?ハードリミットはブースター パック 10 個です。つまり、TBT を使用すると最大 11 個のティッカーを保持できます。

正しく理解できたかどうかを教えてください。

そうであれば、200 ドルで無制限のティッカーを提供している Polygion.io のようなサービスが 、より良い取引であることは明らかです。

あなたの計算は正しいと思いますが、十分にアクティブなアカウントまたは大規模なアカウントの場合は「無料」データ回線を取得することもできます。https://www.interactivebrokers.com/en/index.php?f=14193の「市場データの割り当て方法」で、毎月の手数料とポートフォリオ価値の影響を確認してください。

別のリアルタイム データ プロバイダーを使用する理由は他にもあるかもしれません。たとえば、データの遅延や途切れが重要な場合、メンテナンス期間中の短時間の中断により問題が発生する場合、または 1 秒未満の分解能のタイムスタンプが必要な場合などです。 IB はデータプロバイダーではなく、そのインフラストラクチャは TWS を介した人間中心の取引と TWS API を介した取引自動化をサポートするように最適化されていることに留意してください。

Polygon.io は米国株にとって興味深いサービスのように見えますが、私たちがもっと興味を持っている先物は(まだ?)ありません。 

JR

- - - - - - また:

料金設定には Nanex データ フィードを使用します。あの人たちは本当に鋭いですし、

データフィード ($$$$ の間) は信じられないほど素晴らしいです。フルレベル I 用

すべての米国株式とすべてのオプションでは、期間中の平均約 2Mb/秒

(開始、終了、FOMC 発表で 20Mb 以上にバースト)。

CPU の 2% 未満を使用しています。ただただ驚くばかりです。

【実施上の注意点】

私のコードは広範なコードと統合されているため、役に立ちません。

Macintosh UI と私の間には、独自の抽象化のレイヤーがかなりの数あります。

市場データと基礎となる TWS API 関数のリクエスト。

— カート

[TWS API wiki / stackoverflow を構築する意図/試みがありましたが…]

アダム・ハーディ

メッセージ 3/4、2010 年 8 月 25 日

ソースを表示

私の 2 セント: カテゴリの設定は成功率の低いベンチャーであり、

それが機能する可能性は高いですが、おそらく献身的に取り組む準備ができている人が必要です

FAQ (または Wiki またはフォーラム) を「整理」する時間。

主題の最も適切なセクション、グループ化、またはカテゴリの進化。

つまり、非常に基本的なことから始めて、成長に合わせて管理してください。トピックは次のとおりだと思います。

最後の段落にリストされているものは良いスタートになるでしょう。

タイムドリフト

                                                        ラテアート-ダリ-時計.jpg

今何時ですか?

今がその時です!より正確に言えば、私たちは、これからあるものとかつてあったものの間の極小の端で時間的にバランスがとれています。なぜなら、あなたが「今」と言った瞬間、あなたの言葉は過去のものとなり、もはや正確に「今」とは言えなくなるからです。さらに、これを念頭に置いて、実際に私たちの心の中で、私たちの脳は「今」を処理するのにある程度の時間がかかるため、厳密に言えば、私たちは継続的に過去に生きています。未来と過去の間の波の真のピークからのわずかな減衰の中に存在します。

「時間、時間、時間、見てください、はどうなったのですか... .. 

マーケットモール​  

データを収集し、現地時間でタイムスタンプを付けているときに、 ドミトリーは 1 日に最大で数秒の厄介な時間のずれに気づきました。朝食前に 1 日 1 回だけ現地時間を同期するだけでは、物事を正常に保つのに十分ではないようです。時間の経過とともに状況は許容できなくなり、制御不能になったので、Dmitry についてグーグルで調べた結果、NTP が最良のソリューション (すべての OS で機能する) であることがわかりました。Windows の場合は、Meinberg NTPを使用します。

パブリック NTP サーバーから時刻更新をポーリングする場合、+/- 15..30 ミリ秒の範囲の時刻誤差が発生することが予想されます。

 NTP プロトコルがボックスをより適切に同期できるようにするには、LAN 上に独自のStratum-1 NTP サーバーを構築することを検討できます(部品代は 100 ドル未満)。これにより、すべてのボックスのポーリング時間の時間誤差が +/- まで減少します。 2.5ミリ秒です! 

[Q] 私/あなたの/どのコンピュータにも時間のずれはありますか?

[A]はい 🙂

[Q] 独自の NTP サーバーを (LAN 上に) 構築する必要がありますか、それともパブリックのものを使用するだけで十分ですか?

[A]達成したい時間精度のレベルによって異なります。

  • +/- 15..30 ミリ秒でも問題ない場合は、NTP をインストールしてください (Windows の場合はMeinberg NTPを使用します)。

  • 最大 +/- 2 ミリ秒の精度が必要な場合は、独自の NTP サーバーを構築し、NTP 構成で許可される頻度で (8 秒ごと)、そこから更新をポーリングすることをお勧めします。これが独自の NTP を構築する方法です :

  • 時間精度をさらに向上させるには、コンピュータを NTP サーバー自体に変換するか、シリアル ポートに GPS PPS インパルスを追加するか、または内線付きの特別なカードを購入します。アンテナ ジャックを接続すると、毎秒 (約 4 マイクロ秒の精度で) 時刻同期「ポーリング」を行うことができますが、私はこれを実装するつもりはありません。ネットワーク ジッターが 1 桁大きいことを考慮すると、+/- 2 ミリ秒で十分です。

[Q] Raspberry Pi 上に独自の Stratum-1 NTP サーバーを構築するにはどうすればよいですか?

[A] Dmitry のメモ: Raspberry-Pi + GPS (PPS) 上に独自の Stratum-1 NTP サーバーを構築する方法 

時計を 1 つ持っている人は幻想を持っています。 2つあると混乱が生じます。 3 つある場合、エラーには共謀が必要です

未分類だが関連するもの

【私たちが行う選択について…】

それはわかっていますが、長期的にはそれよりも一人当たりのトラブルはまだ少ないと思います

ヤフーに残ることです。

私たちはまた、留まることで権力の座を辞退します、そしておそらくそれが

今日人々が犯す最も一般的な間違いの 1 つはこれです。 (それは実際には悪いものです

取引習慣も同様です。) 人々は、留まる価値のないものに留まります。

その結果、多くのことが改善されません。その選択の代償は、

すごく高い。

何かの例として見ると、選択肢がより明確になる場合があります

もっと根本的なもの。そのようにして行われた選択は、私の経験では非常に重要です

満足のいくもので、振り返らない素晴らしい気分を与えてくれます。存在感

必要に応じて。

-カート

================================================= ===============

蓄積/分配アルゴリズム (およびその他?) を調べてください。

http://www.interactivebrokers.com/en/trading/orders/accumulatedistribute.php?ib_entity=inst

飛行方法: https://groups.io/g/twsapi/message/23348

🙂

================================================= ===============

ES などの中央指値注文帳がある市場の場合、売買にそれぞれ 1 ティックを支払うと予想する必要があります。

================================================= ===============

rwkさんより:

ESは値動きと流動性の点で非常に人気があります。しかし、それは非常に効率的であり、一貫して勝つのは難しいものでもあります。

私の経験では、簡単に実現できる成果は株で見つかることが多いです。しかし、先物と比較すると、株式には多くの欠点があります。空売りがはるかに難しく、レバレッジが低く、税制上のメリットが少なく、中央の指値注文帳がありません。

================================================= ===============

カート:

 さまざまなストリーム間の遅延を評価したかったのです。  

したがって、例として LAST 価格を検討してください。あるいは、おそらく他の価格データでも機能します。サンプリングされた受信データに基づいて、サンプリングされているにもかかわらず、結果として 時間の連続関数である価格が得られます。この関数はサンプルが入ってくるたびに更新されますが、それを継続的であると考えることが重要だと思います。ストリーム間で比較できる擬似連続データを生成する場合、時間参照が正確に同じであることを保証することが重要です。私の記憶では、これについては保証はなく、確認する必要があります。これが、タイムスタンプを収集するときに、データがソケットから実際に読み取られた時間を収集することを提案した理由です。私の記憶によると、LastTimestamp は取引所から取得されたものではなく、実際にはローカル TWS またはゲートウェイ サーバーから取得されたものだと思います。 TWS またはゲートウェイ サーバーには、さまざまな方法で浮動できるタイムスタンプがあり、ホストのローカル タイム機能に関連して、さまざまな状況で自身を修正しようと試みるようです。これについてはかなり詳細な議論が行われました。

…。

最初に考えられるのは、単純に これらの連続時間関数を比較する平均二乗誤差の計算を実行すれば 、任意の 2 つのストリーム間の誤差の一定の推定値を取得できるということです。これは必ずしもラグ (またはラグの方向) について直接何かを伝えるものではありません。ラグをより具体的に測定する傾向にある統計を作成することは可能ですが、それが実際に重要なのは、エラーがその必要性を示している場合に限られます。ストリームの任意のペア間の誤差を測定できるようになったら、それを考えられるすべてのペアに適用し、そのペアに含まれるアカウントの種類 (通常またはペーパー) に関して「不可知論的」であることを確認できます。そうでない場合は、ラグに関連する統計を作成する理由がある可能性があります。私はそれが必要ではないと思いますが、すべてのペアにわたるエラー統計の一貫性を通じてそれを証明したいだけです。

    グローバルm;

    グローバルm1;

    グローバル m2;

    グローバル m3;

    m = importdata('d:/workbench/20140501_port_7496_ABX.parsed.continuous');

    m1 = importdata('d:/workbench/20140501_port_17496_ABX.parsed.continuous');

    m2 = importdata('d:/workbench/20140501_port_27496_ABX.parsed.continuous');

    m3 = importdata('d:/workbench/20140501_port_37496_ABX.parsed.continuous');

    ping_google = importdata('d:/workbench/_20140501004701_ping_google.com.txt.parsed.continuous.x');

    ping_gw = importdata('d:/workbench/_20140501004621_ping_206.53.61.227.txt.parsed.continuous.x');

   

    グローバルxy;

    グローバル x1 y1;

    グローバル x2 y2;

    グローバル x3 y3;

    % 4 つのデータセットから (x,y) を抽出します

    x = m(:,1); y = m(:,2);

    x1 = m1(:,1); y1 = m1(:,2);

    x2 = m2(:,1); y2 = m2(:,2);

    x3 = m3(:,1); y3 = m3(:,2);

プロット(x,y)

プロット(x,y-y1)

プロット(x,(y-y1).^2)

>> sum((y-y1).^2)

答え =

    1.5746

>> 長さ(x)

答え =

      107995

>> sum((y-y1).^2) / (長さ(x)-1)

答え =

   1.4580e-05

>>

>> sqrt( sum((y-y1).^2) / (length(x)-1) )

答え =

    0.0038 (ドル)

Acc1_real Acc1_paper

Acc2_real Acc2_paper

[Q] どのペアを比較するのですか?

[A] 各ティッカーについて、4 つのストリーム (6 ペア) のすべての組み合わせを比較します。

r1_p1

r1_p2

r1_r2

r2_p1

r2_p2

P1_p2


0 件のコメント :

コメントを投稿