Не снимаются отдельные заявки, но снимаются все
Atom Ответить
30.06.2014


StockSharp 4.2.3

Создаю заявки с помощью Trader.RegisterOrder, они прекрасно регистрируются и появляются в терминале. Но снять их не получается. Пробовал несколько способов:
1) запоминал Order в переменную и пробовал удалять его
2) брал ордера из Trader.Orders / Trader.StopOrders и пробовал удалять их
3) пробовал удалять все ордера на текущем счету по данному инструменту, вызов типа:
Код
 Trader.CancelOrders(null, Portfolio, null, null, Security);


В логе постоянно получаю след картину
Код

2014/06/30 20:31:42.826|       |QuikTrader|CancelOrder: 73389503/0 Покупка Цена=131070 Объем=1 Сост=Pending Бал=1 
2014/06/30 20:31:42.826|       |QuikTrader|CancelOrder: 73389504/0 Продажа Цена=128390 Объем=1 Сост=Pending Бал=1


Прекрасно снимает ордера простой вызов Trader.CancelOrders(). В этом случае вывод в лог другой
Код

2014/06/30 20:31:43.191|       |QuikTrader|CancelOrder: 73390405/0 Покупка Цена=130970 Объем=1 Сост=Pending Бал=1 
2014/06/30 20:31:43.191|       |QuikTrader|CancelOrder: 73390405/2386060201 Покупка Цена=130970 Объем=1 Сост=Active Бал=1 
2014/06/30 20:31:43.841|       |QuikTrader|Order changed: 73390405/2386060201 Покупка Цена=130970 Объем=1 Сост=Done Бал=1 


Т.е. ордер переходит в Active и потом в Done.

В чем может быть проблема? Я не могу даже удалить все ордера для одного инструмента, а все сразу - пожалуйста.

Теги:


Спасибо:




3 Ответов
beast

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


Сам недавно стал изучать stocksharp и сегодня столкнулся с такой же проблемой.
Учитывая, что вы написали это сообщение 16 дней назад, складывается впечатление, что за бесплатно здесь никто ничего не будет делать. А жаль!
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 16.07.2014
Ответить


beast Перейти
Сам недавно стал изучать stocksharp и сегодня столкнулся с такой же проблемой.
Учитывая, что вы написали это сообщение 16 дней назад, складывается впечатление, что за бесплатно здесь никто ничего не будет делать. А жаль!


+1. Взаимопомощь от других пользователей просто поражает.
Спасибо:

beast

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


Не знаю, поможет ли вам моё сообщение, но мне удалось исправить свою ситуацию.
В общем, у меня был следующий код:

Код

var order = new Order
{
   Portfolio = _portfolio,
   Price = _depth.BestBid.Price - 1.5M,
   Security = _lkoh,
   Volume = 1,
   Direction = Sides.Buy,
};
trader.RegisterOrder(order);

Console.WriteLine("Заявка отправлена {0}", order.Id);
while (order.State != OrderStates.Active)
   Thread.Sleep(500);

trader.CancelOrder(order);
Console.WriteLine("заявка снята");


По факту получалось, что заявка появлялась в квике (но при этом order.Id = 0 ?!!), но потом дело до снятия не доходило, всё зависало в бесконечном цикле, т.к. ордер всегда был в состоянии Pending.
Без проверки состояния ордера функция CancelOrder ничего не снимала.
Что помогло - настройка таблиц квика.
С самого начала я загрузил все настройки из файла info.wnd, как прописано было в мануале. Потом руками добавил стакан по Лукойлу и назвал окно LKOH@QJSIM (всё по мануалу).
При запуске кода всё было так, как описано выше (заявка выставляется и становится Pending, когда она по факту выставлена, не снимается из кода).
Но потом я решил порыться в настройках таблиц квика, и обнаружил, что в некоторых таблицах стоят галочки не на всех рынках - у меня стояло только на FORTS, а на ММВБ - нет.
После выставления всех галочек всё заработало.
Спасибо: Mikhail Sukhov Izida


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

loading
clippy