Algorithmischer Handel für .NET und Python✦86+ Konnektoren · Börsen · Broker · Krypto✦S#.Designer · Backtest · optimieren · live gehen✦Eine Community von 31,454+ Tradern und Entwicklern✦Algorithmischer Handel für .NET und Python✦86+ Konnektoren · Börsen · Broker · Krypto✦S#.Designer · Backtest · optimieren · live gehen✦Eine Community von 31,454+ Tradern und Entwicklern✦
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.
Пока решили эту проблему вычиткой состояний из CustomTable
Wir verwenden Cookies, um die beste Erfahrung auf unserer Website zu gewährleisten. Durch die weitere Nutzung unserer Seite stimmen Sie der Verwendung von Cookies zu.
Kommentare (19)
Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen
Что имеется ввиду по словом стакан и что такое таблица 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