← Zurück

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

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.

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

War dieses Thema hilfreich?

Thema teilen

Kommentare (3)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

beast
beast

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

Mikhail Sukhov
Mikhail Sukhov

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

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

beast
beast

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


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