S# 4.1.17 Quik 6.7.3.2 Настройки трейдера:
// включаем асинхронный режим (не ждем Order.Id от биржи)
this.Trader.IsAsyncMode = true;
// включаем поддержку режима ручных заявок
this.Trader.SupportManualOrders = true;
Выставляю руками заявку в стакан (заведомо неисполнимую, остается висеть в стакане). Корректно прилетает NewOrders. У ордера State: Active
Снимаю руками заявку. Опять прилетает NewOrders. У ордера State: Done; Cancelled: True Событие OrdersChangedне приходит...
Если ордер исполняется частично тоже прилетает NewOrders с Partially: True и правильным балансом
В случает когда ордер исполняется опять прилетает NewOrders с Matched: True Balance: 0 State: Done
P.S. для стоп-ордеров, выставленных руками в квике, все работает правильно...
Kommentare (2)
Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen
Нашел где надо пофиксить багу. BaseTrader, метод protected Order GetOrder(Security security, long id, Func<long, Order> createOrder, Func<Order, bool> changeOrder)
Всегда присваивается isNew = true:
Далее идет проверка, которая ВСЕГДА будет кидать NewOrder:
Для фикса видимо нужно сначала поискать ордер в кэше, и только если его нет создавать...
Уважаемые разработчики!
Пофиксите, пожалуйста, багу! Ведь даже transactionId каждый раз новый получается и workaround не написать...
Фикс - это один if: