Ошибка повторилась
10:30:52,176 - Order check in Name = RSZ0_VS_9, TransID = 37517, Id = 2324443352, Vol = 3, Bal = 3, State = Active, Status = Done 10:30:52,176 - Order check in Name = RSZ0_VS_9, TransID = 37517, Id = 2324443352, Vol = 3, Bal = 3, State = Active, Status = Done 10:30:52,223 - Order check in Name = RSZ0_VS_9, TransID = 37517, Id = 2324443352, Vol = 3, Bal = 3, State = Done, Status = Done 10:30:52,223 - Instr RSZ0_VS_9. Sec = RSZ0. Remove canceled empty order, TransID = 37517, Vol = 3, Bal = 3, State = Done, Status = Done
а реально из заявки 1 контракт прошел. стокшарп 2.4
评论 (23)
登录 或 创建账户, 登录或注册以发表评论
По логу же заявка не возвращается в активное состояние.
а у меня после того как заявка Done/Done - лог прекращается. суть в том что эта заявка была отменена, но в ней из 3-х контрактов один прошел, т оесть баланс в квике был равен двум.
Сакраментальный вопрос - а как лог ведется? Случаем не старая проблема, когда состояние заявки мониторится постоянно в цикле?
нене. давно все передало на класс Strategy. лог пишется посредством log4net в событии OrderChanged.
В конечном итоге баланс обновился? Сделки пришли?
в квике да - сделка пришла с одним контрактом, и баланс в заявке обновился. в роботе не знаю - у меня по логике если заявка Done/Done, она выбрасывает из отслеживаемых. но думаю что так же пришла потом в OrderChanged с балансом 2.
Вообще это важно отследить. Потому как тут ситуация следующая. Квик прислал необновленный баланс и статус снята. Что QuikTrader делать? Естественно что OrdersChanged. Догадаться о том, что потом Квик пришел еще сделку по данной заявке (и баланс измениться) невозможно. А вдруг не изменится никогда? Это ведь и может быть обычная заявка, которая не исполнилась ни по одному контракту. Надо мучить Квик поддержку. Это явная бага. Потому как сейчас увы не гарантировать ничего. Так же потом Квик может одуматься и сказать, нет-нет, стойте. Оказывает еще одна сделка была по заявке.
а помните вы говориле про кое-какую эвристику? может она хулиганичает?
Она объем изменяет, а не состояние. По вновь поступившим сделкам. А тут он вообще не изменился.
Короче квик - это барахло. буду на палуз переходить.
Если это особенность биржи (а она шлет в разных потоках информацию), то переход может не помочь. Что-то смутное припоминаю, когда работал с Transaq. Там такой же был косяк с состояниями и балансом.
Думаю тогда сделать что то отстойника для заявок с Done/Done. буду там пару секунд их еще держать.
Я бы посоветовал чуть усложнить. Отстойник только для тех заявок, на которые был послан сигнал отмены.
Да так и планировал. Трабла то тока с отменяемыми.
Спрошу в этом топике, чтобы не создавать новый. В последнее время появилась такая вещь: в процессе котирования появляется сообщение - "заявка (номер такой-то) не имеет состояния". Приходится закрывать робота через диспетчер задач, сам не закрывается и запускать по новой. Примерно раз в день такое стало происходить. Это можно вылечить?
Конечно можно, но лечить нужно причину, а не следствие. Данное сообщение говорит о том, что по выставленной заявке не присылается уведомление подтверждения регистрации. В чем причина? Можете точно узнать, регистрируются ли с указанным номером транзакции завки в Квике? Если нет, то смотрите на событие ITrader.OrdersFailed, где смотрятся ошибки по выставляемым заявкам.
а бывает - в процессе работы экспорт по DDE таблицы отваливается.
Вот опять случилось только что: "Заявка 46560182 не имеет состояния". В квике у меня этот номер заявки = 2422005946, ID транзакции = 46560182 . Она исполнилась. Покупка произошла. При этом на панели Поза по этой стратегии равна нулю, хотя должно было стать > 0. То есть информация о том что покупка произошла, не отразилась. Другие стратегии продолжают нормально работать параллельно. Щас придётся вырубать робота, жалко - другие то стратегии работают, и теперь им придётся два таймфрейма пропустить. Своеобразный перерыв в работе робота получится, за исключением адаптера. ЗЫ: На всякий случай проверил, ДДЕ-экспорт в во всех таблицах вроде включен.
Судя по симптомам (и заявка не изменилась и сделка не пришла) все таки нет.
ReConnectionManager такое умеет. Что делать - перезапускать экспорт, что тоже он умеет.
Все не надо, достаточно только таблицу заявок.
Желательно больше деталей. Например, какие еще есть не обновленные поля у заявки. Какой режим у QuikTrader.IsAsyncMode.
Я пробовал останавливать экспорт при работающих стратегиях (состояние runned). Потом запускал снова. Не помогает. Режим синхронный. Когда останавливаю соответствующую стратегию, начинают сыпаться сообщения что котирование продолжается.
Это все следствие. Котирование должно отменяет заявку, но ее состояние не меняется... Первопричина - почему заявка не обновляется. Кроме состояния, что еще по заявке не обновляется? Событие OrdersChanged по заявке приходит?