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


Синхронность снятия ордеров
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 Go to
Это глюк или так и должно быть?


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

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

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

в true
Thanks:

rtDen

Avatar
Date: 4/24/2012
Reply


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

Alexander Mukhanchikov Go to

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


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

vader

Avatar
Date: 4/24/2012
Reply


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

Alexander Mukhanchikov Go to

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


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

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

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

rtDen

Avatar
Date: 4/25/2012
Reply


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

Вроде так.

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

Наверное так, но я не понимаю, почему он должен меняться на что-то кроме нуля, если я снимаю заявку.
Thanks:

vader

Avatar
Date: 4/28/2012
Reply


rtDen Go to
vader Go to
Извините, не очень понял, что именно не критично? То что баланс заявки может измениться после получения состояния Done?

Вроде так.

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

Наверное так, но я не понимаю, почему он должен меняться на что-то кроме нуля, если я снимаю заявку.

В тот момент, пока вы отменяете заявку, она может быть частичнго исполнена, и тогда баланс поменяется допустим с 8 до 5.
Thanks:


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

loading
clippy