Синхронность снятия ордеров

Синхронность снятия ордеров
Atom
4/24/2012
rtDen


Ставлю один стоп ордер в квике и нажимаю на кнопку снятия стопа.

Код обработчика кнопки:


trader.IsAsyncMode = false;
OrderStates stateBefore;
OrderStates stateAfter;
Order cancelOrder = new Order();
foreach (Order order in trader.StopOrders)
{
   if (order.State == OrderStates.Active)
   {
       cancelOrder = order;
   }
}
stateBefore = cancelOrder.State;
trader.CancelOrder(cancelOrder);
stateAfter = cancelOrder.State;
AddLog("do: " + stateBefore.ToString() + " posle: " + stateAfter.ToString(), true);

Имею вот такие результаты в логе, если стоп ордер стоит на 1 контракт, то почти всегда (или вообще всегда?) 16:50:38 do: Active posle: Done А если стоп стоит на 2 контракта и больше, то преобладает такое: 16:51:09 do: Active posle: Active

Это глюк или так и должно быть?

S#: 4.0.23 Брокер: Открытие, демо счет Инструмент: SiM2


Tags:


Thanks:


freelancer

Avatar
Date: 4/24/2012
Reply


Снятие всех стоп-заявок

Trader.CancelOrders((bool?)true, Portfolio, null, null, Security);
Thanks:

rtDen

Avatar
Date: 4/24/2012
Reply


А при чем здесь это? В некоторых случаях мне нужно снимать конкретные ордера, а не все.

Thanks:

Alexander

Avatar
Date: 4/24/2012
Reply


rtDen: Это глюк или так и должно быть?

Так и должно быть. При вызове Cancel для заявки с балансом (не объёмом!) <= 1 мы уверены, что больше не придёт обновлений по DDE и её баланс не изменится.

Иначе - может быть такая ситуация - меняется Order.Balance после получения OrderState.Done.

Если вам это не критично - поставьте свойство

QuikTrader.CancelOrderInstantly

в true

Thanks:

rtDen

Avatar
Date: 4/24/2012
Reply


Спасибо за ответ, помогло.

Alexander Mukhanchikov: Если вам это не критично

Да вроде не критично, хотя из прочитанного топика не совсем понял, где у меня это может всплыть )

Thanks:

vader

Avatar
Date: 4/24/2012
Reply


rtDen: Спасибо за ответ, помогло.

Alexander Mukhanchikov: Если вам это не критично

Да вроде не критично, хотя из прочитанного топика не совсем понял, где у меня это может всплыть ) Извините, не очень понял, что именно не критично? То что баланс заявки может измениться после получения состояния Done?

Т.е. если QuikTrader.CancelOrderInstantly == true, то после получения заявки статуса Done ,у неё может поменятся баланс?

Thanks:

rtDen

Avatar
Date: 4/25/2012
Reply


vader: Извините, не очень понял, что именно не критично? То что баланс заявки может измениться после получения состояния Done? Вроде так.

vader: Т.е. если QuikTrader.CancelOrderInпочему онstantly == true, то после получения заявки статуса Done ,у неё может поменятся баланс? Наверное так, но я не понимаю, почему он должен меняться на что-то кроме нуля, если я снимаю заявку.

Thanks:

vader

Avatar
Date: 4/28/2012
Reply


rtDen:

vader: Извините, не очень понял, что именно не критично? То что баланс заявки может измениться после получения состояния Done? Вроде так.

vader: Т.е. если QuikTrader.CancelOrderInпочему онstantly == true, то после получения заявки статуса Done ,у неё может поменятся баланс? Наверное так, но я не понимаю, почему он должен меняться на что-то кроме нуля, если я снимаю заявку. В тот момент, пока вы отменяете заявку, она может быть частичнго исполнена, и тогда баланс поменяется допустим с 8 до 5.

Thanks:


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy