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

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


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

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

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


Снятие всех стоп-заявок
Code
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.

Если вам это не критично - поставьте свойство
Code
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