Не знаю, поможет ли вам моё сообщение, но мне удалось исправить свою ситуацию.
В общем, у меня был следующий код:
Code
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, а на ММВБ - нет.
После выставления всех галочек всё заработало.