← Zurück

4.2.2.26 ошибка в OrderState

Начиная с 4.2.2.26 появилась ошибка в выставлении статуса ордера: OrderStates.done присваивается не когда ордер полностью исполнился, а когда только поставился, также присваивается при частичном исполнении, что в корне неверно

War dieses Thema hilfreich?

Thema teilen

Kommentare (22)

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

esper
esper

Как воспроизвести?

devruss
devruss Autor

esper: Как воспроизвести?

Ну уж это то вы должны сами проверять... Выставление ордеров и отслеживание изменения статуса - это одна из основополагающих состовляющих алго платформы. Можно на ваших же примерах смотреть

UPDATE:

  1. Live - вроде все ок. Проблемы возникают на HistoryEmulation

  2. Задержки с репортингом статусов исполения ордеров При большом сайзе ордера и частичном исполнении возникают ситуации, когда ставится заявка по-рынку, статус OrderStates.Done, Balance = 0, но при этом задержка между трейдами на первую и вторую часть такая, что робот успевает еще 2 раза закрыть позицию, полагая, что приказы исполнились частично

  3. На 2.20 все ок! Работающие стратегии начинают сходить с ума именно на .26

RomSunZ
RomSunZ

У меня в MarketQuotingStrategy такая-же байда с частичным исполнением заявок на версии 4.2.26. Как видно из логов, как только появилась сделка по заявке, MQS снимает остаток, и считает, что все выполнено ("|S_LKZ4@FORTS_SPBFUT00756|Стратегия останавливается. [0,1]. Позиция 4."). Но реальное исполнение было только на 1шт, что и подтверждается в родительской стратегии ("|PS_LKZ4@FORTS_SPBFUT00756|Новая позиция: SPBFUT00756-LKZ4@FORTS=1."). В таблице "заявки" в квике этот ордер имеет состояние="Снята", Кол-во=4, Остаток=3. Связано это судя по-всему с тем, что Вы опираетесь на поле заявки State, вместо Status, о чем я писал в ветке про новый Lua-коннектор.


20:08:59.767|       |PS_LKZ4@FORTS_SPBFUT00756|Стратегия запущена. [0,-1]. Позиция 0.
20:09:16.630|       |PS_LKZ4@FORTS_SPBFUT00756|curPos=0 quoting vol=4 revers=False
20:09:16.630|       |PS_LKZ4@FORTS_SPBFUT00756|Начинаем котирование по LKZ4@FORTS направление покупка объем 4 реверс=False
20:09:16.630|Debug  |S_LKZ4@FORTS_SPBFUT00756|Переход из состояния Stopped в Started.
20:09:16.630|       |S_LKZ4@FORTS_SPBFUT00756|Стратегия запущена. [0,1]. Позиция 0.
20:09:16.630|       |S_LKZ4@FORTS_SPBFUT00756|Котирование на Buy объема 4.
20:09:16.630|Debug  |S_LKZ4@FORTS_SPBFUT00756|Приостановка правил. _rulesSuspendCount 1.
20:09:16.630|Debug  |S_LKZ4@FORTS_SPBFUT00756|Возобновление правил. _rulesSuspendCount 0.
20:09:16.630|       |S_LKZ4@FORTS_SPBFUT00756|Цена текущей NULL и лучшей 19585.
20:09:16.630|       |S_LKZ4@FORTS_SPBFUT00756|Лучший бид 19580 и лучший аск 19592.
20:09:16.630|       |S_LKZ4@FORTS_SPBFUT00756|Регистрация новой Limit (0x1AB7839) заявки на Buy с ценой 19585 и объемом 4. 
20:09:16.630|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Регистрация заявки  72533791/ (0x1C6BB82)'. Подписалось на события.
20:09:16.630|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Ошибка регистрации заявки  72533791/ (0x1E54885)'. Подписалось на события.
20:09:16.630|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Полное исполнение  72533791/ (0x261AE0E)'. Подписалось на события.
20:09:16.630|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Полное исполнение  72533791/ (0x1DAA204)'. Подписалось на события.
20:09:16.630|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Все сделки заявки  72533791/ (0x3583362)'. Подписалось на события.
20:09:16.630|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Отмена заявки  72533791/ (0x83A5F8)'. Подписалось на события.
20:09:16.630|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Ошибка регистрации заявки  72533791/ (0x14FF46B)'. Подписалось на события.
20:09:16.630|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Ошибка снятия заявки  72533791/ (0x305AA9F)'. Подписалось на события.
20:09:16.937|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента LKZ4@FORTS (0x2CD6BF9)'. Активация.
20:09:16.937|Debug  |S_LKZ4@FORTS_SPBFUT00756|Заявка 72533791 (0x1AB7839) в процессе регистрации.
20:09:17.045|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента LKZ4@FORTS (0x2CD6BF9)'. Активация.
20:09:17.045|Debug  |S_LKZ4@FORTS_SPBFUT00756|Заявка 72533791 (0x1AB7839) в процессе регистрации.
20:09:17.261|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Регистрация заявки  72533791/2466496401 (0x1C6BB82)'. Активация.
20:09:17.261|       |S_LKZ4@FORTS_SPBFUT00756|Заявка 72533791 (0x1AB7839) принята биржей.
20:09:17.261|       |S_LKZ4@FORTS_SPBFUT00756|Сброс счетчика ошибок регистрации с 0 до нуля.
20:09:17.261|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Регистрация заявки  72533791/2466496401 (0x1C6BB82)'. Удаляется.
20:09:17.261|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Регистрация заявки  72533791/2466496401 (0x1C6BB82)'. Освободило ресурсы.
20:09:17.261|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Ошибка регистрации заявки  72533791/2466496401 (0x1E54885)'. Удаляется.
20:09:17.261|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Ошибка регистрации заявки  72533791/2466496401 (0x1E54885)'. Освободило ресурсы.
20:09:17.261|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Ошибка регистрации заявки  72533791/2466496401 (0x1E54885)'. Удалено.
20:09:17.261|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Регистрация заявки  72533791/2466496401 (0x1C6BB82)'. Удаление.
20:09:17.261|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Ошибка регистрации заявки  72533791/2466496401 (0x1E54885)'. Удаление.
20:09:17.427|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента LKZ4@FORTS (0x2CD6BF9)'. Активация.
20:09:17.680|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента LKZ4@FORTS (0x2CD6BF9)'. Активация.
20:09:20.640|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента LKZ4@FORTS (0x2CD6BF9)'. Активация.
20:09:20.888|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента LKZ4@FORTS (0x2CD6BF9)'. Активация.
20:09:21.777|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента LKZ4@FORTS (0x2CD6BF9)'. Активация.
20:09:24.092|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента LKZ4@FORTS (0x2CD6BF9)'. Активация.
20:09:25.491|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента LKZ4@FORTS (0x2CD6BF9)'. Активация.
20:09:27.278|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента LKZ4@FORTS (0x2CD6BF9)'. Активация.
20:09:27.799|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента LKZ4@FORTS (0x2CD6BF9)'. Активация.
20:09:28.315|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента LKZ4@FORTS (0x2CD6BF9)'. Активация.
20:09:30.114|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента LKZ4@FORTS (0x2CD6BF9)'. Активация.
20:09:30.362|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента LKZ4@FORTS (0x2CD6BF9)'. Активация.
20:09:31.154|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента LKZ4@FORTS (0x2CD6BF9)'. Активация.
20:09:34.302|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента LKZ4@FORTS (0x2CD6BF9)'. Активация.
20:09:34.811|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента LKZ4@FORTS (0x2CD6BF9)'. Активация.
20:09:36.703|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента LKZ4@FORTS (0x2CD6BF9)'. Активация.
20:09:40.139|       |PS_LKZ4@FORTS_SPBFUT00756|Новая позиция: SPBFUT00756-LKZ4@FORTS=4.
20:09:40.139|       |S_LKZ4@FORTS_SPBFUT00756|Новая позиция: SPBFUT00756-LKZ4@FORTS=4.
20:09:40.139|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Изменение позиции (0x4AA454)'. Активация.
20:09:40.139|       |S_LKZ4@FORTS_SPBFUT00756|Позиция изменилась на 4. Оставшийся объем 0.
20:09:40.139|       |S_LKZ4@FORTS_SPBFUT00756|Заканчиваем котирование.
20:09:40.139|Debug  |S_LKZ4@FORTS_SPBFUT00756|Переход из состояния Started в Stopping.
20:09:40.139|       |S_LKZ4@FORTS_SPBFUT00756|Стратегия останавливается. [0,1]. Позиция 4.
20:09:40.139|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'S_LKZ4@FORTS_SPBFUT00756 - останавливается (0x233CCD2)'. Активация.
20:09:40.139|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'S_LKZ4@FORTS_SPBFUT00756 - останавливается (0x233CCD2)'. Удаляется.
20:09:40.139|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'S_LKZ4@FORTS_SPBFUT00756 - останавливается (0x233CCD2)'. Освободило ресурсы.
20:09:40.139|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'S_LKZ4@FORTS_SPBFUT00756 - останавливается (0x233CCD2)'. Удаление.
20:09:40.139|Debug  |S_LKZ4@FORTS_SPBFUT00756|Попытка остановки. Осталось 2 правил. Правила Отмена заявки  OR Полное исполнение  OR Все сделки заявки  OR Ошибка регистрации заявки , Ошибка снятия заявки .
20:09:40.139|       |S_LKZ4@FORTS_SPBFUT00756|Ожидание снятия всех активных заявок.
20:09:40.139|       |S_LKZ4@FORTS_SPBFUT00756|Отмена заявки 72533791 (0x1AB7839).
20:09:40.139|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента LKZ4@FORTS (0x2CD6BF9)'. Удаляется.
20:09:40.139|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента LKZ4@FORTS (0x2CD6BF9)'. Освободило ресурсы.
20:09:40.139|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента LKZ4@FORTS (0x2CD6BF9)'. Освободило ресурсы.
20:09:40.139|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Изменение стакана инструмента LKZ4@FORTS (0x2CD6BF9)'. Удалено.
20:09:40.139|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Полное исполнение  72533791/2466496401 (0x261AE0E)'. Удаляется.
20:09:40.139|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Полное исполнение  72533791/2466496401 (0x261AE0E)'. Освободило ресурсы.
20:09:40.139|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Полное исполнение  72533791/2466496401 (0x261AE0E)'. Удалено.
20:09:40.139|Debug  |S_LKZ4@FORTS_SPBFUT00756|Попытка остановки. Осталось 2 правил. Правила Отмена заявки  OR Полное исполнение  OR Все сделки заявки  OR Ошибка регистрации заявки , Ошибка снятия заявки .
20:09:40.139|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Изменение позиции (0x4AA454)'. Удаляется.
20:09:40.139|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Изменение позиции (0x4AA454)'. Освободило ресурсы.
20:09:40.139|Debug  |S_LKZ4@FORTS_SPBFUT00756|Правило 'Изменение позиции (0x4AA454)'. Удаление.
20:09:40.139|Debug  |S_LKZ4@FORTS_SPBFUT00756|Попытка остановки. Осталось 2 правил. Правила Отмена заявки  OR Полное исполнение  OR Все сделки заявки  OR Ошибка регистрации заявки , Ошибка снятия заявки .
20:09:40.139|       |PS_LKZ4@FORTS_SPBFUT00756|Новая Buy сделка 117792745 по цене 19585 на 1 заявки 72533791.
20:09:40.139|       |S_LKZ4@FORTS_SPBFUT00756|Новая Buy сделка 117792745 по цене 19585 на 1 заявки 72533791.
20:09:40.139|       |PS_LKZ4@FORTS_SPBFUT00756|Новая позиция: SPBFUT00756-LKZ4@FORTS=1.
20:09:40.139|       |S_LKZ4@FORTS_SPBFUT00756|Новая позиция: SPBFUT00756-LKZ4@FORTS=1.

devruss
Mikhail Sukhov
Mikhail Sukhov

RomSunZ: что Вы опираетесь на поле заявки State, вместо Status

И правильно делает. Не смешивайте все в одну кучу. Один написал неправильное о своем. Второй написал неправильное о другом. В итоге получился рассказ Бэтмэн и Русалочка.

devruss
devruss Autor

Михаил Сухов:

RomSunZ: что Вы опираетесь на поле заявки State, вместо Status

И правильно делает. Не смешивайте все в одну кучу. Один написал неправильное о своем. Второй написал неправильное о другом. В итоге получился рассказ Бэтмэн и Русалочка.

и так каждый раз... топик, что при переходе с версии .X на .X+1 стратегии сходят с ума из-за очередного факапа, встречается в штыки вот такими конструктивными комментариями...

Еще раз повторю: есть проблема с обработкой ордеров - выставлнием статусов и обработкой partial fills. И "неправильная" - это работа билда. Скоро баг репорты только в форме 5 стопного ямба будут приниматься, а все остальное игнорироваться. Михиаил, начни уже наконец пользоваться своим продуктом. Тогда, когда в очередной раз просадишь кучу бабла на неправильно обработанном ордере при переходе на свежий билд, тебе не будет казаться, что это какая-то мелочь

RomSunZ
RomSunZ

Михаил Сухов:

RomSunZ: что Вы опираетесь на поле заявки State, вместо Status

И правильно делает. Не смешивайте все в одну кучу. Один написал неправильное о своем. Второй написал неправильное о другом. В итоге получился рассказ Бэтмэн и Русалочка.

Что я смешал в кучу?

  1. "Начиная с 4.2.2.26 появилась ошибка в выставлении статуса ордера: OrderStates.done присваивается не когда ордер полностью исполнился, а когда только поставился, также присваивается при частичном исполнении, что в корне неверно "

  2. "У меня в MarketQuotingStrategy такая-же байда с частичным исполнением заявок на версии 4.2.26."

Читайте внимательнее, я здесь не критикой занимаюсь, а пытаюсь помочь в выявлении критических ошибок с привидением доступных логов.

Mikhail Sukhov
Mikhail Sukhov

RomSunZ:

  1. "Начиная с 4.2.2.26 появилась ошибка в выставлении статуса ордера: OrderStates.done присваивается не когда ордер полностью исполнился, а когда только поставился, также присваивается при частичном исполнении, что в корне неверно "

Как воспроизвести?

devruss
devruss Autor

Михаил Сухов: Как воспроизвести?

В моем случае, можешь хоть в SampleSMA поставить побольше сайз для ордеров, а далее в дебаггере отследить как и в какой момент меняется статус ордера

Mikhail Sukhov
Mikhail Sukhov

Тоесть проблема с коннектором Quik? С другими такой нет проблемы?

devruss
devruss Autor

Михаил Сухов: Тоесть проблема с коннектором Quik? С другими такой нет проблемы?

У меня это вылезло вначале на Транзаке, а потом все повторилось в тестах на HistoryEmulator

Mikhail Sukhov
Mikhail Sukhov

devruss:

Михаил Сухов: Тоесть проблема с коннектором Quik? С другими такой нет проблемы?

У меня это вылезло вначале на Транзаке, а потом все повторилось в тестах на HistoryEmulator

Так понятно. Нужно подтверждение от другого.

RomSunZ
RomSunZ

В моем случае воспроизводится в момент частичного (не полного) исполнения котируемой MarketQuotingStrategy заявки (логи выше).

Andrii
Andrii

RomSunZ: В моем случае воспроизводится в момент частичного (не полного) исполнения котируемой MarketQuotingStrategy заявки (логи выше). можешь показать как создается MarketQuotingStrategy?

esper
esper

RomSunZ: В моем случае воспроизводится в момент частичного (не полного) исполнения котируемой MarketQuotingStrategy заявки (логи выше). Хорошо бы увидеть эти логи совместно с логами эмулятора, где будут показаны все изменения заявок.

RomSunZ
RomSunZ

Также, как и в SampleSma


            var quoting = new MarketQuotingStrategy(Side, vol)
            {
                Security = this.Security,
                Portfolio = this.Portfolio,
                WaitAllTrades = true,
                Connector = this.Connector,
                Volume = vol,
                PriceType = MarketPriceTypes.Following,
//                LogLevel = LogLevels.Debug,
                PriceOffset = v1,
                BestPriceOffset = v2,
            };


RomSunZ
RomSunZ

Я тестировал на Lua , через эмулятор не гонял.

esper
esper

RomSunZ: Я тестировал на Lua , через эмулятор не гонял. Значит с логами коннектора, где будет видно состояние и баланс заявок.

RomSunZ
RomSunZ

esper:

RomSunZ: Я тестировал на Lua , через эмулятор не гонял. Значит с логами коннектора, где будет видно состояние и баланс заявок.

Котировался LKZ4 на 5шт, исполнено 3.

esper
esper

RomSunZ: Котировался LKZ4 на 5шт, исполнено 3. В следующей версии будет фикс.

RomSunZ
RomSunZ

Сделайте еще заполнение поля Status у заявки пожалуйста тоже.

esper
esper

Чем не подходит комбинация State и Balance?

RomSunZ
RomSunZ

Только тем, что это дополнительные проверки, когда можно пользовать предоставляюемую информацию Квика. Хотя если это влияет на скорость передачи, то наверное можно и обойтись.