Синхронность снятия ордеров
Atom
24.04.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

Теги:


Спасибо:


freelancer

Фотография
Дата: 24.04.2012
Ответить


Снятие всех стоп-заявок
Код
Trader.CancelOrders((bool?)true, Portfolio, null, null, Security);
Спасибо:

rtDen

Фотография
Дата: 24.04.2012
Ответить


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

Alexander

Фотография
Дата: 24.04.2012
Ответить


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


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

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

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

в true
Спасибо:

rtDen

Фотография
Дата: 24.04.2012
Ответить


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

Alexander Mukhanchikov

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


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

vader

Фотография
Дата: 24.04.2012
Ответить


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

Alexander Mukhanchikov

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


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

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

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

rtDen

Фотография
Дата: 25.04.2012
Ответить


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

Вроде так.

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

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

vader

Фотография
Дата: 28.04.2012
Ответить


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

Вроде так.

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

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

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


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy