我试图通过在.NET上使用他们的API,在Interactive Brokers的TWS上获取所有未结订单。
就像那样:
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 :(得分:0)
行。 我知道了... 这一切都发生了,因为从事件处理程序抛出异常
void _client_OrderStatus(object sender, OrderStatusEventArgs e)
{
throw new NotImplementedException();
}
但为什么我现在获得所有未结订单的订单ID 0?
答案 1 :(得分:0)
而不是reqAllOpenOrders()我正在使用reqOpenOrders()。值得一试。
您可以查看order.OrderId(openOrder调用的第3个参数),是否包含有效ID。