CheckOnOld Заявка не имеет номер транзакции

9 views
Skip to first unread message

artemox

unread,
Sep 7, 2010, 12:31:53 PM9/7/10
to Stock#
Михаил, доброго дня!

Возникла непонятная ситуация, может быть ошибка не в S#, но без вашей
помощи не разобраться :)
Ситуация следующая:
Перерегистрирую заявку, при очередном ReRegisterOrder приходит заявка
с пустым Message:
ID=91747363 State=Active Price=145460 Balance=1 Message=
Но ошибок при этом нет, когда же я пытаюсь передвинуть эту заявку, в
ReRegisterOrder возникает исключение:
Заявка не имеет номер транзакции. Возможно, она не была
зарегистрирована.
Parameter name: order # Ecng.Trading.BusinessEntities # at
Ecng.Trading.BusinessEntities.BaseTrader.CheckOnOld(Order order)
at Ecng.Trading.BusinessEntities.BaseTrader.ReRegisterOrder(Order
oldOrder, Order newOrder)
at Ecng.Trading.Algo.Strategy.ReRegisterOrder(Order oldOrder,
Func`1 getNewPrice, Func`1 getNewVolume, Boolean isForts)

Состояние и баланс заявки при вызове ReRegisterOrder не поменялись
(судя по логу)
Сама заявка 91747363 результат предыдущего ReRegisterOrder, т.е.
должна быть зарегана.

За день было 5 таких заявок, 4 из них исполнились, но сделки в
стратегию не попали :(
До 2.4 такого не наблюдалось

S# 2.4
Q 5.16.0.145

artemox

unread,
Sep 7, 2010, 1:01:20 PM9/7/10
to Stock#
Дополнение:
Аналогичная ошибка и при отмене ордера.
При этом в Квике заявка активна и руками снимается успешно.

Mikhail Sukhov

unread,
Sep 7, 2010, 4:28:57 PM9/7/10
to Stock#
Сообщение говорит о том, что номер транзакции равен 0. Все заявки
перед регистрацией получают от QuikTrader уникальный идентификатор. У
Вас он куда-то пропадает... Вы никак заявку в коде модифицируете?

On 7 сен, 20:31, artemox <arte...@gmail.com> wrote:

Message has been deleted

artemox

unread,
Sep 8, 2010, 12:45:07 AM9/8/10
to Stock#
Id и TransactionId напрямую точно не модифицируется.

Еще раз обращу Ваше внимание на то, что только по этим (5-ти) заявкам
Message был пустой.
Специально проверил весь лог за день.

Mikhail Sukhov

unread,
Sep 8, 2010, 2:04:31 AM9/8/10
to Stock#
А в Quik по этим заявкам были проставлены транзакции?

artemox

unread,
Sep 8, 2010, 5:15:24 AM9/8/10
to Stock#
Да, я выгрузил в файл все заявки и сделки за день, по этим
"потерянным" ничего подозрительного не нашел.

Mikhail Sukhov

unread,
Sep 8, 2010, 5:25:39 AM9/8/10
to Stock#
Режим синхронный или асинх? Робот в течении сессии перегружался?

artemox

unread,
Sep 8, 2010, 11:42:26 AM9/8/10
to Stock#
Режим синхр (он же по умолчанию? т.е. IsAsyncMode я не инициализирую)
Робот не перезагружался.
Добавил вывод в лог TransactionId, может быть что то прояснится.
Но к сожалению дней 10 у меня не будет возможности сообщить о
результатах, как только смогу отпишусь.
Спасибо.
Message has been deleted

artemox

unread,
Sep 8, 2010, 1:23:58 PM9/8/10
to Stock#
Вот вырезки из расширенного-протокола:

tId это TransactionId

Изменяем некий ордер с Id=93673362:

Перед ReRegisterOrder => Id=93673362 tId=68420381 State=Active
Price=147035 Balance=1
Вызов ReRegisterOrder
Trader.OrdersChanged => Id=93673362 tId=68420381 State=Done
Price=147035 Balance=1 Message=[FORTS] Операция выполнена успешно. New
Order1 ID: 93673362, new Order2 ID: 0
Trader.OrdersChanged => Id=93673457 tId=0 State=Active
Price=147040 Balance=1 Message="ПУСТО"
После вызова ReRegisterOrder, дальше по коду вывод сформированной
заявки => Id=93673457 tId=68420383 State=None Price=147040
Balance=1


Далее идет изменение нового ордера с Id=93673457 и tId=68420383 (где
то State=None, то tId=0)

Перед ReRegisterOrder => Id=93673457 tId=0 State=Active Price=147040
Balance=1 ОПА!!! tId=0
Понятно что генерится Exception => Id=93673457 tId=0 State=Active
Price=147040 Balance=1


Заявка не имеет номер транзакции. Возможно, она не была
зарегистрирована.
Parameter name: order # Ecng.Trading.BusinessEntities # at
Ecng.Trading.BusinessEntities.BaseTrader.CheckOnOld(Order order)


Т.е. в Trader.OrdersChanged засветился ордер с tId=0, хотя потом tId
проинициализировалось нормальным значением, и на этом ордере вылетела
ошибка.

tId=0 и Message="ПУСТО" приходят на пару, и по отдельности не
появлялись.

artemox

unread,
Sep 20, 2010, 1:25:30 PM9/20/10
to Stock#
Михаил, у Вас есть мысли по этому поводу?

Mikhail Sukhov

unread,
Sep 21, 2010, 5:05:52 AM9/21/10
to Stock#
Абсолютно никаких. Раз никто не написал об этом, то похоже
присутствует ошибочное поведение в роботе. Давайте попробуем понять,
перезаписываются ли у Вас номера транзакции или же полностью
пересоздаются объекты Order.

Можете в лог добавить вывод order.GetHashCode() чтобы узнать, один и
тот же объект или нет?

Reply all
Reply to author
Forward
0 new messages