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


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

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

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

Теги:


Спасибо:



Скидка 15% на все обучение до 5 апреля (осталось 2 дней).

7 Ответов
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