State Done - это вроде когда транзакция до сервера доходит и заявка принимается биржей, а Status - как и должно быть - NotDone. Суть вопроса не понял.
А может наоборот...
MCTuTeJ|19951995:
State Done - это вроде когда транзакция до сервера доходит и заявка принимается биржей, а Status - как и должно быть - NotDone. Суть вопроса не понял.
Я вообще ничего понять не могу. Где и что не совпадает? Понятно только, что что-то не так с заявками (тор ли статусами, то ли состояниями). При чем здесь стакан - так же не понимаю.
Согласно Help - OrderStates.Done = Заявка больше не активна на бирже (была полностью удовлетворена или снята из программы).
Тем не менее она стояла в стакане Квика еще в течении нескольких минут.
Lafert:
Согласно Help - OrderStates.Done = Заявка больше не активна на бирже (была полностью удовлетворена или снята из программы).
Тем не менее она стояла в стакане Квика еще в течении нескольких минут.
Под словами "стояла в стакане" я имел в виду, что заявка была активной в таблице заявок и одновременно стояла в стакане (тут все логично).
В таблице заявок (в окне квика) эта заявка имела состояние Активна до того, как я остановил программу, и продолжала оставатся активной до тех пор, пока я ее не снял.
Lafert:
Под словами "стояла в стакане" я имел в виду, что заявка была активной в таблице заявок и одновременно стояла в стакане (тут все логично).
В таблице заявок (в окне квика) эта заявка имела состояние Активна до того, как я остановил программу, и продолжала оставатся активной до тех пор, пока я ее не снял.
А номера транзакции уникальны? Можете воспроизвести ошибку в минимальном коде?
Ошибка происходит, если снять заявку(возможно еше не зарегистрированную).
После этого приходит событие OrderChanged и при нем ордер с указанными state и status.
На тестовых торгах на мамбе такая ошибка не возникла (ошибка возникла на украинской бирже на реальных торгах).
Ошибка возникает не каждый раз (раз в 5 минут при постоянном выставлении и снятиии заявок)
Сделал простейший опыт.
несколько раз вцикле выставляю заявку и тут же снимаю. Через некоторое время проверяю статус у тех заявок, которые остались висеть в таблице заявок.
State=Done, Status=NotValidated, isMatches()=false, isCanceled()=true;
Заявки в таблице видны с состоянием "Активна". Как определить, что эта заявка не удалилась?
Lafert:
Сделал простейший опыт.
несколько раз вцикле выставляю заявку и тут же снимаю. Через некоторое время проверяю статус у тех заявок, которые остались висеть в таблице заявок.
State=Done, Status=NotValidated, isMatches()=false, isCanceled()=true;
Заявки в таблице видны с состоянием "Активна". Как определить, что эта заявка не удалилась?
Ок, протестирую. А какой режим был у QuikTrader.IsAsyncMode?
Lafert:
Сделал простейший опыт.
несколько раз вцикле выставляю заявку и тут же снимаю. Через некоторое время проверяю статус у тех заявок, которые остались висеть в таблице заявок.
State=Done, Status=NotValidated, isMatches()=false, isCanceled()=true;
Заявки в таблице видны с состоянием "Активна". Как определить, что эта заявка не удалилась?
Сделал тест (демо Квик 5.18.0.239):
var qt = new QuikTrader { IsAsyncMode = true };
qt.Connect();
var sec = new Security
{
Code = "RIH1",
Class = "SPBFUT",
};
var pf = new Portfolio
{
Name = "SPBFUT00538",
};
for (var i = 0; i < count; i++)
{
var order = new Order
{
Volume = 1,
Portfolio = pf,
Security = sec,
Price = 185000,
};
qt.RegisterOrder(order);
qt.CancelOrder(order);
orderList.Add(order);
}
Console.ReadLine();
Если count равен 10, то после ожидания в Console.ReadLine все заявки в orderList имеют State == Active. Тоесть, все заявки на снятие не прошли, что является стандартным поведением в асинхронном режиме.
Если count == 100, то первые 12 заявок Active, остальные Failed.
Оба варианта соответствуют данным в Квик. Прогоните такой же тест у себя. Заодно, проверьте, может у нас версии Квик чем-то отличаются.
На тестовой МАМБе завесить заявки не удалось. Сначала с задержкой накапливаются, затем снимаются. Я бы обратился на УкрБиржу, но не вижу, что возвращает QuikApi.
Comments (19)
Login or Create account, Log in or register to leave a comment
Что имеется ввиду по словом стакан и что такое таблица Orders?
Во время остановки программы заявка уже стояла минут 5 (и продолжала стоять)
После чего я ее снял вручную с квика
А в чем вопрос?
Так в том и вопрос, что заявка была активна, а State у нее был Done.
State Done - это вроде когда транзакция до сервера доходит и заявка принимается биржей, а Status - как и должно быть - NotDone. Суть вопроса не понял. А может наоборот...
Я вообще ничего понять не могу. Где и что не совпадает? Понятно только, что что-то не так с заявками (тор ли статусами, то ли состояниями). При чем здесь стакан - так же не понимаю.
Согласно Help - OrderStates.Done = Заявка больше не активна на бирже (была полностью удовлетворена или снята из программы).
Тем не менее она стояла в стакане Квика еще в течении нескольких минут.
А с таблице заявок она какое имела состояние?
Под словами "стояла в стакане" я имел в виду, что заявка была активной в таблице заявок и одновременно стояла в стакане (тут все логично).
В таблице заявок (в окне квика) эта заявка имела состояние Активна до того, как я остановил программу, и продолжала оставатся активной до тех пор, пока я ее не снял.
А номера транзакции уникальны? Можете воспроизвести ошибку в минимальном коде?
Ошибка происходит, если снять заявку(возможно еше не зарегистрированную). После этого приходит событие OrderChanged и при нем ордер с указанными state и status.
На тестовых торгах на мамбе такая ошибка не возникла (ошибка возникла на украинской бирже на реальных торгах).
Ошибка возникает не каждый раз (раз в 5 минут при постоянном выставлении и снятиии заявок)
Номера транзакций уникальны
кстати сталкивался с похожей проблемой - при частом переставлении заявок иногда заявка не имеет статуса, но отправляется и в квике видеа.
Сделал простейший опыт. несколько раз вцикле выставляю заявку и тут же снимаю. Через некоторое время проверяю статус у тех заявок, которые остались висеть в таблице заявок. State=Done, Status=NotValidated, isMatches()=false, isCanceled()=true; Заявки в таблице видны с состоянием "Активна". Как определить, что эта заявка не удалилась?
Ок, протестирую. А какой режим был у QuikTrader.IsAsyncMode?
Сделал тест (демо Квик 5.18.0.239):
Если count равен 10, то после ожидания в Console.ReadLine все заявки в orderList имеют State == Active. Тоесть, все заявки на снятие не прошли, что является стандартным поведением в асинхронном режиме.
Если count == 100, то первые 12 заявок Active, остальные Failed.
Оба варианта соответствуют данным в Квик. Прогоните такой же тест у себя. Заодно, проверьте, может у нас версии Квик чем-то отличаются.
На тестовой МАМБе завесить заявки не удалось. Сначала с задержкой накапливаются, затем снимаются. Я бы обратился на УкрБиржу, но не вижу, что возвращает QuikApi.
true
Пока решили эту проблему вычиткой состояний из CustomTable