【问题标题】:OpenOrder occurs only for first open order interactive brokersOpenOrder 仅适用于第一个开放订单交互式经纪人
【发布时间】:2016-07-27 09:29:56
【问题描述】:

我正在尝试通过将他们的 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()的描述:(by IB)

"调用此方法请求所有下的未结订单 客户,也来自 TWS。每个未结订单将通过 EWrapper 上的 openOrder() 和 orderStatus() 函数。"

并且事件仅针对一个未结订单发生。

为什么?

我正在使用 Krs.Ats.IBNet.dll,v2.0.50727 谢谢

【问题讨论】:

    标签: c# events interactive-brokers


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-08-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-29
        相关资源
        最近更新 更多