Порядок изменения TWS API не работает, ошибка 103 «Дубликат идентификатора заказа»

Руководство по API просто дает информацию о конфликте:

Чтобы изменить заказ, просто вызовите функцию IBApi.EClient.placeOrder снова с теми же параметрами, которые использовались для размещения исходного заказа, за исключением измененного параметра. Это включает IBApi.Order.OrderId, который должен совпадать с IBApi.Order.OrderId оригинала.

Если вы проверите функцию IBApi.EClient.placeOrder, вы найдете следующую информацию об идентификаторе заказа:

уникальный идентификатор заказа. Используйте последовательный идентификатор, начиная с идентификатора, полученного в методе nextValidId. Если новый заказ размещен с идентификатором заказа, меньшим или равным идентификатору заказа предыдущего заказа, произойдет ошибка.

Это моя проблема. Когда я попытался изменить заказ, как указано выше, я получил ошибку «Duplicate Order ID», и это так же, как указано выше в отношении идентификатора заказа.

Итак, как мне изменить цену или количество открытого ордера?

0

Решение

Это довольно обычно в моем приложении, и не всегда понятно почему. Я полагаю, вы использовали OrderId в другом месте, который выше, чем этот. Это не должно лишать законной силы ранее использованный идентификатор заказа, но иногда делает.

Я решил проблему следующим образом:

  • Отменить заказ

  • Получите новый идентификатор заказа, запросив nextValidId. Call reqIds (1);

  • Создайте новый заказ с теми же данными (и внесите изменения)

  • Отправить новый заказ, используя новый идентификатор

Конечно, это не меняет открытый ордер буквально, но результат тот же.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]