2016-07-27 113 views
2

我想通過使用它們的API與.NET在Interactive Brokers交易平臺上獲得所有我的開放訂單。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()函數。「

而且事件發生僅一個開放的順序。

爲什麼?

我使用Krs.Ats.IBNet.dll,V2.0.50727 感謝

回答

0

確定。 我知道了...... 這一切happend因爲從事件處理程序拋出異常

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

但是爲什麼我得到現在的訂單ID 0所有打開的命令嗎?

0

相反reqAllOpenOrders的()我使用reqOpenOrders()。值得一試。

您可以檢查order.OrderId(openOrder調用的第三個參數),是否含有有效身份證件。