S# 4.0.5 order.TransactionId = 0 в NewOrders
Atom Ответить
14.11.2011


Сегодня возникла такая ситуация и дальше 0 сохранялся в OrdersChanged какое-то время:
16:31:01.1570028 OrdersChanged: TransactionId=0 Direction=Sell Time=14.11.2011 16:31:00 Price=151235 State=Done Status= Balance=0 Comm=FIVDMD0Y Portfolio=SPBFUT00XXX Id=5851294706 Type=Limit
16:31:01.4489763 OrdersChanged: TransactionId=0 Direction=Sell Time=14.11.2011 16:31:00 Price=151235 State=Done Status= Balance=0 Comm=FIVDMD0Y Portfolio=SPBFUT00XXX Id=5851294706 Type=Limit
16:31:01.5310023 OrdersChanged: TransactionId=56779959 Direction=Sell Time=14.11.2011 16:31:00 Price=151235 State=Done Status=Accepted Balance=0 Comm=FIVDMD0Y Portfolio=SPBFUT00XXX Id=5851294706 Type=Limit

Вроде бы TransactionId должен устанавливаться сразу в RegisterOrder и в NewOrders он уже должен быть инициализирован или я что-то не так понимаю? Спасибо!

Теги:


Спасибо:




51 Ответов
1 2 3  >
Alexander

Фотография
Дата: 14.11.2011
Ответить


Заявка отправляется синхронно или асинхронно?
Спасибо:

Roman0

Фотография
Дата: 14.11.2011
Ответить


Alexander Mukhanchikov Перейти
Заявка отправляется синхронно или асинхронно?

Trader.IsAsyncMode = false;
Автор топика
Спасибо:

Alexander

Фотография
Дата: 14.11.2011
Ответить


Приведите участок кода с созданием и отправкой заявки.
Спасибо:

Roman0

Фотография
Дата: 14.11.2011
Ответить


Alexander Mukhanchikov Перейти
Приведите участок кода с созданием и отправкой заявки.

Код

order = new Order()
{
Portfolio = Portfolio, //получено из NewPortfolios
Security = CurSec, //получено из NewSecurities
Volume = orderVolume,
Direction = bSignal ? OrderDirections.Buy : OrderDirections.Sell,
Comment = MyOrdersId,
ExtensionInfo = new Dictionary<object, object>()
};

order.ExtensionInfo.Add("Time", DateTime.Now);
order.ExtensionInfo.Add("Timeout", false);

     //тип заявки
foreach (Control control in gbxOrderTypes.Controls)
{
if (control is RadioButton && ((RadioButton)control).Checked)
{
order.ExtensionInfo.Add("Type", (MyOrderTypes)control.Tag);
break;
}
}
    
    //в этом конкретном случае было
    order.Price = CurSec.ShrinkPrice(bSignal ? CurSec.BestBid.Price + nudSLO.Value : CurSec.BestAsk.Price - nudSLO.Value);

    Trader.RegisterOrder(order);

Опущены try\catch и т.п. Все работало в течение месяцев без изменений в коде, касающихся регистрации заявок.
Автор топика
Спасибо:

Alexander

Фотография
Дата: 14.11.2011
Ответить


Ерунда какая-то.
Быть не может такого =)

Trader - это QuikTrader?
Что выдают события OrdersFailed, ProcessDataError?
Спасибо:

Roman0

Фотография
Дата: 14.11.2011
Ответить


Alexander Mukhanchikov Перейти
Ерунда какая-то.
Быть не может такого =)

Trader - это QuikTrader?
Что выдают события OrdersFailed, ProcessDataError?

Я тоже так подумал, но факт есть факт ) У меня по TransactionId, который получен в NewOrders, в таблице обновляется информация по заявкам, иначе я бы может быть и не заметил, а так поле с TransactionId было 0. Да, QuikTrader и OrdersFailed с ProcessDataError не выдавали ничего, заявка нормально исполнилась. Может быть это как-то связано с тем, что используется не совсем обычный квик (типа брокерского с объедененными счетами клиентов), но вроде бы здесь это не должно никак влиять.
Автор топика
Спасибо:

Alexander

Фотография
Дата: 14.11.2011
Ответить


Roman0 Перейти
Alexander Mukhanchikov Перейти
Ерунда какая-то.
Быть не может такого =)

Trader - это QuikTrader?
Что выдают события OrdersFailed, ProcessDataError?

Я тоже так подумал, но факт есть факт ) У меня по TransactionId, который получен в NewOrders, в таблице обновляется информация по заявкам, иначе я бы может быть и не заметил, а так поле с TransactionId было 0. Да, QuikTrader и OrdersFailed с ProcessDataError не выдавали ничего, заявка нормально исполнилась. Может быть это как-то связано с тем, что используется не совсем обычный квик (типа брокерского с объедененными счетами клиентов), но вроде бы здесь это не должно никак влиять.


так вроде там многое что другое и как раз может быть из-за этого. посмотрите на transactionid после вызова register order
verifier молчит на проверках?
Спасибо:

Roman0

Фотография
Дата: 14.11.2011
Ответить


Alexander Mukhanchikov Перейти
Roman0 Перейти
Alexander Mukhanchikov Перейти
Ерунда какая-то.
Быть не может такого =)

Trader - это QuikTrader?
Что выдают события OrdersFailed, ProcessDataError?

Я тоже так подумал, но факт есть факт ) У меня по TransactionId, который получен в NewOrders, в таблице обновляется информация по заявкам, иначе я бы может быть и не заметил, а так поле с TransactionId было 0. Да, QuikTrader и OrdersFailed с ProcessDataError не выдавали ничего, заявка нормально исполнилась. Может быть это как-то связано с тем, что используется не совсем обычный квик (типа брокерского с объедененными счетами клиентов), но вроде бы здесь это не должно никак влиять.


так вроде там многое что другое и как раз может быть из-за этого. посмотрите на transactionid после вызова register order
verifier молчит на проверках?


Да, verifier говорит, что все нормально. А transactionid разве не генерируется в RegisterOrder? Вроде бы раньше было что-то вроде InitOrder, который создавал уже инициализированную заявку.
> посмотрите на transactionid после вызова register order
попробую, только завтра, наверное
Автор топика
Спасибо:

Alexander

Фотография
Дата: 14.11.2011
Ответить


Roman0 Перейти
Alexander Mukhanchikov Перейти
Roman0 Перейти
Alexander Mukhanchikov Перейти
Ерунда какая-то.
Быть не может такого =)

Trader - это QuikTrader?
Что выдают события OrdersFailed, ProcessDataError?

Я тоже так подумал, но факт есть факт ) У меня по TransactionId, который получен в NewOrders, в таблице обновляется информация по заявкам, иначе я бы может быть и не заметил, а так поле с TransactionId было 0. Да, QuikTrader и OrdersFailed с ProcessDataError не выдавали ничего, заявка нормально исполнилась. Может быть это как-то связано с тем, что используется не совсем обычный квик (типа брокерского с объедененными счетами клиентов), но вроде бы здесь это не должно никак влиять.


так вроде там многое что другое и как раз может быть из-за этого. посмотрите на transactionid после вызова register order
verifier молчит на проверках?


Да, verifier говорит, что все нормально. А transactionid разве не генерируется в RegisterOrder? Вроде бы раньше было что-то вроде InitOrder, который создавал уже инициализированную заявку.
> посмотрите на transactionid после вызова register order
попробую, только завтра, наверное


Сейчас также.
Но если у вас в терминале в этом столбце 0 - при обновлении тоже запишется 0.
Да, приведите скриншот терминала с заявками.
Спасибо:

Roman0

Фотография
Дата: 14.11.2011
Ответить


Alexander Mukhanchikov Перейти
Roman0 Перейти
Alexander Mukhanchikov Перейти
Roman0 Перейти
Alexander Mukhanchikov Перейти
Ерунда какая-то.
Быть не может такого =)

Trader - это QuikTrader?
Что выдают события OrdersFailed, ProcessDataError?

Я тоже так подумал, но факт есть факт ) У меня по TransactionId, который получен в NewOrders, в таблице обновляется информация по заявкам, иначе я бы может быть и не заметил, а так поле с TransactionId было 0. Да, QuikTrader и OrdersFailed с ProcessDataError не выдавали ничего, заявка нормально исполнилась. Может быть это как-то связано с тем, что используется не совсем обычный квик (типа брокерского с объедененными счетами клиентов), но вроде бы здесь это не должно никак влиять.


так вроде там многое что другое и как раз может быть из-за этого. посмотрите на transactionid после вызова register order
verifier молчит на проверках?


Да, verifier говорит, что все нормально. А transactionid разве не генерируется в RegisterOrder? Вроде бы раньше было что-то вроде InitOrder, который создавал уже инициализированную заявку.
> посмотрите на transactionid после вызова register order
попробую, только завтра, наверное


Сейчас также.
Но если у вас в терминале в этом столбце 0 - при обновлении тоже запишется 0.
Да, приведите скриншот терминала с заявками.

В терминале все нормально, но что там было в момент выставления заявки, конечно, непонятно.
Snap1.jpg 98 KB (0)
Автор топика
Спасибо:

Alexander

Фотография
Дата: 14.11.2011
Ответить


а кода клиента нету?
В общем, ждём TransactionId после вызова RegisterOrder :)
Спасибо:

Roman0

Фотография
Дата: 14.11.2011
Ответить


Alexander Mukhanchikov
а кода клиента нету?

Код клиента присутствует, совпадает со счетом, просто не попал в кадр )
Alexander Mukhanchikov

В общем, ждём TransactionId после вызова RegisterOrder :)

Да все же остальные заявки без этих чудес были ) Добавил в код вывод в лог TransactionId после RegisterOrder, завтра посмотрю.
Автор топика
Спасибо:

Roman0

Фотография
Дата: 15.11.2011
Ответить


Как и ожидалось TransactionId есть сразу и что это было - непонятно. Только если в квике почему-то значение не изменилось и оставалось 0 (или изменилось на 0)? Еще есть отличие в значении Status, здесь оно сразу Accepted, а там было не определено какое-то время.

16:04:01.2493341 RegisterOrder Order: TransactionId=57039553 Direction=Buy Time=01.01.0001 0:00:00 Price=148865 Volume=2 State=Active Status=Accepted Balance=2 Comm=S#PJ23GVK2 Portfolio=SPBFUT00XXX Id=5868886383 Type=Limit
16:04:01.2493341 NewOrders Order: TransactionId=57039553 Direction=Buy Time=01.01.0001 0:00:00 Price=148865 Volume=2 State=Active Status=Accepted Balance=2 Comm=S#PJ23GVK2 Portfolio=SPBFUT00XXX Id=5868886383 Type=Limit
16:04:01.4192451 OrdersChanged Order: TransactionId=57039553 Direction=Buy Time=15.11.2011 16:04:01 Price=148865 Volume=2 State=Done Status=Accepted Balance=0 Comm=S#PJ23GVK2 Portfolio=SPBFUT00XXX Id=5868886383 Type=Limit
16:04:01.4202216 NewMyTrades Order: TransactionId=57039553 Direction=Buy Time=15.11.2011 16:04:01 Price=148865 Volume=2 State=Done Status=Accepted Balance=0 Comm=S#PJ23GVK2 Portfolio=SPBFUT00XXX Id=5868886383 Type=Limit
Trade: Time=15.11.2011 16:04:01 Direction=Buy Price=148850 Volume=2 Id=450515242
16:04:01.4211981 OrdersChanged Order: TransactionId=57039553 Direction=Buy Time=15.11.2011 16:04:01 Price=148865 Volume=2 State=Done Status=Accepted Balance=0 Comm=S#PJ23GVK2 Portfolio=SPBFUT00XXX Id=5868886383 Type=Limit
16:04:01.4319396 OrdersChanged Order: TransactionId=57039553 Direction=Buy Time=15.11.2011 16:04:01 Price=148865 Volume=2 State=Done Status=Accepted Balance=0 Comm=S#PJ23GVK2 Portfolio=SPBFUT00XXX Id=5868886383 Type=Limit
Автор топика
Спасибо:

Alexander

Фотография
Дата: 15.11.2011
Ответить


Что изменилось по сравнению с самым первым логом?
Тут всё нормально идёт.
Проблема ушла?
Спасибо:

Roman0

Фотография
Дата: 15.11.2011
Ответить


Alexander Mukhanchikov Перейти
Что изменилось по сравнению с самым первым логом?
Тут всё нормально идёт.
Проблема ушла?

В программе ничего не менялось, проблема возникла один раз, все последующие заявки были с правильными Id и вчера тоже. Сегодня, как и во все передыдущие месяцы, всё нормально )
Автор топика
Спасибо:

Alexander

Фотография
Дата: 15.11.2011
Ответить


Roman0 Перейти
Alexander Mukhanchikov Перейти
Что изменилось по сравнению с самым первым логом?
Тут всё нормально идёт.
Проблема ушла?

В программе ничего не менялось, проблема возникла один раз, все последующие заявки были с правильными Id и вчера тоже. Сегодня, как и во все передыдущие месяцы, всё нормально )


Воспроизведётся ещё раз - пишите.
И посмотрите при этом чему равно Id транзакции в квике.
Спасибо:

skuvv

Фотография
Дата: 16.11.2011
Ответить


эта проблема существует очень давно.
вот сейчас отловил заявку
16:06:33.461 [_trader_NewOrders] TransactionId: 0 unknown new order Thread: EventDispatcher thread #заявки
16:06:33.466 [_trader_NewOrders] OrderList id: 57884196 Thread: EventDispatcher thread #заявки

в квике у неё id = 57884196
Спасибо:

Alexander

Фотография
Дата: 16.11.2011
Ответить


skuvv Перейти
эта проблема существует очень давно.


Начиная с какой версии?

Что показывает Verifier на квике?
Какая версия S#?
Привидите скриншот квика
Как отправляется эта заявка и как выводится Id в NewOrder?
Квик с общими счетами или нет?
Это при Move?
Спасибо:

sergun

Фотография
Дата: 18.11.2011
Ответить


Бугага :-)

У меня тоже самое.

И в 4.0.5 и оно же в 4.0.3 было.

Суть в том, что недры СТокШарпа выводят в лог сообщение о NewOrder с TransactionId==0 (!!!)
20:50:18.515 | | QuikTrader | New order: TransactionId=0, Id==5913817775, Price=1726,5, Balance=4, Security=GDZ1@RTS, State=Active

и после этого, как я понимаю, этот ордер не попадает в Strategy.Orders

Причем спрашивал тут Михаила:
https://stocksharp.ru/posts/m/13340/

и был проигнорирован.

Ну ё-моё, потерял кучу времени в коммерческом проекте на поиск причин.. Хорошо, что Заказчик не взял лося :-)
Даешь исходники в свободный доступ!!!
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 18.11.2011
Ответить


sergun Перейти
Ну ё-моё, потерял кучу времени в коммерческом проекте на поиск причин.. Хорошо, что Заказчик не взял лося :-)
Даешь исходники в свободный доступ!!!


Даешь помощь проекту чтобы баги фиксились быстрее. А Гидра и Плаза так вообще пол года как в исходниках.Confused
Спасибо:

sergun

Фотография
Дата: 18.11.2011
Ответить


Mikhail Sukhov Перейти
sergun Перейти
Ну ё-моё, потерял кучу времени в коммерческом проекте на поиск причин.. Хорошо, что Заказчик не взял лося :-)
Даешь исходники в свободный доступ!!!


Даешь помощь проекту чтобы баги фиксились быстрее. А Гидра и Плаза так вообще пол года как в исходниках.Confused


Не знаю-не знаю, open source должен быть полным :-) Тогда помощь проекту естественным образом повалит, причем и в виде фикса багов и по рефакторингу и по архитектуре..
Гора ж буржуйских успешных проектов так живет. Причем когда code contributor'ами могут быть все. А ядро команды заведует мерджами в транк :-)

Так что, таки даешь open-source :-)
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 18.11.2011
Ответить


sergun Перейти
Не знаю-не знаю


Окей, раз все устраивает, тогда тему с опен сорсом закрываем. Только в следующий раз не нужно писать, что баги долго фиксяться, и фичи нужные не появляются.
Спасибо:

sergun

Фотография
Дата: 18.11.2011
Ответить


Mikhail Sukhov Перейти
sergun Перейти
Не знаю-не знаю


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


Если бы все устраивало, я бы не ворчал :-)
Спасибо:

Alexander

Фотография
Дата: 18.11.2011
Ответить


sergun Перейти
Mikhail Sukhov Перейти
sergun Перейти
Ну ё-моё, потерял кучу времени в коммерческом проекте на поиск причин.. Хорошо, что Заказчик не взял лося :-)
Даешь исходники в свободный доступ!!!


Даешь помощь проекту чтобы баги фиксились быстрее. А Гидра и Плаза так вообще пол года как в исходниках.Confused


Не знаю-не знаю, open source должен быть полным :-) Тогда помощь проекту естественным образом повалит, причем и в виде фикса багов и по рефакторингу и по архитектуре..
Гора ж буржуйских успешных проектов так живет. Причем когда code contributor'ами могут быть все. А ядро команды заведует мерджами в транк :-)

Так что, таки даешь open-source :-)


Сейчас есть таски по открытому коду? Есть, навалом.
Кто-нибудь помогает? Да, 1-2 человека порой что-то делают если им в очередной раз намекнуть.

Смысл открывать всё, если, по тому что сейчас открыто, пользы почти 0?
Спасибо:

Alexander

Фотография
Дата: 19.11.2011
Ответить


sergun Перейти
Бугага :-)

У меня тоже самое.

И в 4.0.5 и оно же в 4.0.3 было.

Суть в том, что недры СТокШарпа выводят в лог сообщение о NewOrder с TransactionId==0 (!!!)
20:50:18.515 | | QuikTrader | New order: TransactionId=0, Id==5913817775, Price=1726,5, Balance=4, Security=GDZ1@RTS, State=Active

и после этого, как я понимаю, этот ордер не попадает в Strategy.Orders

Причем спрашивал тут Михаила:
https://stocksharp.ru/posts/m/13340/

и был проигнорирован.

Ну ё-моё, потерял кучу времени в коммерческом проекте на поиск причин.. Хорошо, что Заказчик не взял лося :-)
Даешь исходники в свободный доступ!!!


Это при Move?
Спасибо:
1 2 3  >

Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy