← 戻る

не срабатывает правило order.CancelFailed()

Версия 4.0.18, режим трейдера - асинхронный.


this.When(order.CancelFailed())
                .Do(OnCancelFailed)
                .Once();

            CancelOrder(order);

Если снимать заявку так


private void CancelOrder(Order order)
        {
            CancelActiveOrders();
        }

То вообще никакой реакции на уже снятую заявку не будет.

Если так, то метод OnCancelFailed вызван не будет, просто будет запись в лог о том, что произошла ошибка.


private void CancelOrder(Order order)
        {
            Trader.CancelOrder(order);
        }

このトピックは参考になりましたか?

トピックを共有

コメント (3)

ログイン または アカウントを作成, コメントを残すにはログインまたは新規登録してください

Alexander
Alexander

Чему равен order.Status после прихода ответа на вызов Trader.CancelOrder(order) во втором варианте?

В лог откуда запись приходит? Из ProcessDataError?

vader
vader 著者

Я отправляю транзакции асинхронно, поэтому Trader.CancelOrder(order) ничего не отвечает ( я не могу поймать исключение.). Поясню. Чтобы проверить, как работает реакция на ошибку снятия завки, я ставлю заявку, и снимаю её вручную в Квике. После этого её Status становится Accepted и уже не меняется (я подписался на событие изменения заявки.)

Да, запись в лог призодит из ProcessDataError. Сама запись. StockSharp.Quik.ApiException: Код ошибки Failed Сообщение Вы не можете снять данную заявку

Alexander
Alexander

Ага, подтверждаю. Есть такая ошибка.