2

我正在尝试通过将他们的 API 与 .NET 一起使用,在盈透证券的 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 谢谢

4

2 回答 2

0

好的。我明白了...这一切都是因为从事件处理程序中抛出异常

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

但是为什么我现在得到所有未结订单的订单 id 0?

于 2016-07-27T09:41:53.690 回答
0

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

您可以检查 order.OrderId(openOrder 调用的第三个参数),它是否包含有效的 id。

于 2017-07-03T11:15:27.013 回答