Иногда почему-то не снимается заявка. Пробовала и просто CancelOrder, и GuarantyCancelOrder получается такое
System.ArgumentException: Транзакции 'CLASSCODE=QJSIM; SECCODE=SBER03; TRANS_ID=46477555; ACTION=KILL_ORDER; ORDER_KEY=1378049270;' не была зарегистрирована. Причина 'Не удалось снять заявку с номером 1378049270'. Parameter name: transactionTxt at #=q6_bJnTxTmM4Bv8VAkuzX16N9kITey0Q0shlRx5OmuCI=.#=q1iLknz8rGYO9SBN12KWkKW0hW33_WQyPCNDIYTa5dVQ=(String #=qyenVG1VmCVlQ2Y5yHJeYWw==, OrderStatus& #=qW9HFfQY0dx9a8RYk5sclrA==, UInt32& #=qfMdlXyqqy$mDcndJDOE0LA==, Int64& #=q9nZ9jT4E3sMUzEif1u51Aw==, String& #=qt$j1$s8gZYfOsf7TeSDU4w==) at StockSharp.Quik.QuikTrader.#=qd_OODXhbYctbuybxgNIvuFY9080SZ7RrdqPxsrjKge4=(Order #=qVKlVeoIIr6HU9O9oWnMYJA==, TransactionBuilder #=q3MHOzpll3tBupKAIV8IL_A==) at StockSharp.Quik.QuikTrader.OnCancelOrder(Order order) at StockSharp.Algo.BaseTrader.CancelOrder(Order order) at StockSharp.Algo.TraderHelper.GuarantyCancelOrder(Order order, TimeSpan timeOut) at StockSharp.Algo.TraderHelper.GuarantyCancelOrder(Order order)
Перед тем как снимать, статус проверяю, снимаю, только если активна.
Comments (7)
Login or Create account, Log in or register to leave a comment
Как проверяете статус? Приведите участок кода, распечатайте сам Order перед снятием.
хм, видимо, заявка исполнялась прямо в момент снятия, вот и получалось так
проверялось так:
if(order.State == OrderStates.Active) ....
Как все-же сделать гарантированное снятие заявки ?
Будет ли правильно работать такое :
Неужели никто не делал такое ?
что значит гарантированно? если заявка не снялась с первого раза то она скорее всего уже не снимется( это же квик)
Это почему ? может просто команда на снятие заявки не дошла или была отброшена биржей, или разрыв соединения в момент подачи команды CancelOrder. Если у заявки статус Active значит ее можно снять . Нужно как-то проверить результат исполнения _trader.CancelOrder(order) и если резульльтат ошибка сделать еще раз _trader.CancelOrder(order), но сделать это нужно в отдельном потоке чтобы не задерживать исполнение алгоритма.