OpenOrder仅针对首批开放式订单交互式代理进行

时间:2016-07-27 09:29:57

标签: c# events interactive-brokers

我试图通过在.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 感谢

2 个答案:

答案 0 :(得分:0)

行。 我知道了... 这一切都发生了,因为从事件处理程序抛出异常

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

但为什么我现在获得所有未结订单的订单ID 0?

答案 1 :(得分:0)

而不是reqAllOpenOrders()我正在使用reqOpenOrders()。值得一试。

您可以查看order.OrderId(openOrder调用的第3个参数),是否包含有效ID。