OpenOrder происходит только для интерактивных брокеров с первым открытым ордером

Я пытаюсь получить все свои открытые ордера на TWS Interactive Brokers, используя их API с .NET.

Как это:

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. Каждый открытый ордер будет возвращен через функции openOrder() и orderStatus() в EWrapper».

И события происходят только для одного открытого ордера.

Зачем?

Я использую Krs.Ats.IBNet.dll, v2.0.50727 спасибо


person user3081797    schedule 27.07.2016    source источник


Ответы (2)


ХОРОШО. Я понял... Это все произошло потому, что выбрасывается исключение из обработчика событий

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

Но почему теперь я получаю идентификатор заказа 0 для всех открытых заказов?

person user3081797    schedule 27.07.2016

Вместо reqAllOpenOrders() я использую reqOpenOrders(). Стоит попробовать.

Вы можете проверить order.OrderId (3-й параметр вызова openOrder), содержит ли он действительный идентификатор.

person Janos    schedule 03.07.2017