2016-07-27 1 views
2

私はインタラクティブ・ブローカーのTWSですべてのオープンオーダーを取得しようとしています。そのようなOpenOrderは最初のオープン・オーダーのインタラクティブ・ブローカーのためのものです

IBClient _client = new IBClient(); 
_client.Connect("127.0.0.1", 7495, 0);  

if(_client.Connected) 
{  
     _client.RequestAllOpenOrders(); 
} 

void _client_OpenOrder(object sender, OpenOrderEventArgs e) 
{ 
    Console.WriteLine("Action " + e.Order.Action + " of " + e.Contract.Symbol + " in Status: " + e.OrderState.Status + "  order id: " + e.OrderId); 
} 

しかし、イベントは最初のオープンオーダーのため、一度だけ発生しているようです。

RequestAllOpenOrdersの説明():(IBによる)

「全て クライアントから配置し、また、TWSかられたオープン注文を要求するためにこのメソッドを呼び出す。各オープン注文を介してフィードバックします EWrapper上のopenOrder()およびorderStatus()関数。

イベントは1つの未処理オーダーに対してのみ発生します。

なぜですか?

私は、v2.0.50727の おかげ

答えて

0

OKをKrs.Ats.IBNet.dllを使用しています。なぜなら、イベントハンドラからスロー例外

void _client_OrderStatus(object sender, OrderStatusEventArgs e) 
    { 
     throw new NotImplementedException(); 
    } 

は、私はすべての起こった... これをそれを得た。しかし、なぜ私は今、開いているすべての注文のID 0を注文するのですか?

0

reqAllOpenOrders()の代わりにreqOpenOrders()を使用しています。それは試してみる価値があります。

有効なIDが含まれているかどうかを調べるには、order.OrderId(openOrder呼び出しの3番目のパラメータ)をチェックできます。

関連する問題