Периодически не приходят мои сделки
Atom Ответить
05.10.2010


Достаточно регулярно случается сабж - заявка исполняется, а сделка не приходит, NewMyTrade не вызывается. По заявке приходит NewOrders со следующими данными: time:01.01.0001 0:00:00, state:Active, status:Done, balance:1, volume:1 и вызывается ProcessWellKnownDdeData для таблицы "мои сделки", но в Dictionary не приходит ни одной записи. Далее по заявке приходят OrdersChanged, она становится state:Done, status:Done, Matched:True, но сделка по ней так и не появляется. В квиковских таблицах со сделками и заявками все в порядке, экспорт работает. Квик 5.16.0.151, демо от финама, S# 2.4.

Теги:


Спасибо:




16 Ответов
Mikhail Sukhov

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


Alter
Достаточно регулярно случается сабж - заявка исполняется, а сделка не приходит, NewMyTrade не вызывается. По заявке приходит NewOrders со следующими данными: time:01.01.0001 0:00:00, state:Active, status:Done, balance:1, volume:1


time - это Order.Time? Заявка регистрируется или изменяется?
Спасибо:

Alter

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


time - это Order.Time, да. Заявка перерегистрируется при котировании.
Автор топика
Спасибо:

Mikhail Sukhov

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


Alter
time - это Order.Time, да. Заявка перерегистрируется при котировании.


Режим асинхронный? Что за инструмент (рынок)?
Спасибо:

Alter

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


Синхронный режим, FORTS
Автор топика
Спасибо:

Mikhail Sukhov

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


Alter
Синхронный режим, FORTS


Можете еще вывести TransactionId и GetHashCode и отсылаемыхз заявок и получаемых через событие?
Спасибо:

Alter

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


Хорошо, как только баг воспроизведется снова - отпишусь.
Автор топика
Спасибо:

Alter

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


TransactionId и хэш отсылаемых заявок и получаемых через событие совпадают.
Автор топика
Спасибо:

Mikhail Sukhov

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


Alter
TransactionId и хэш отсылаемых заявок и получаемых через событие совпадают.


Так, насчет заявок и нулевого времени. Это стандартная ситуация в синхронном режиме. Он вызывает NewOrder сразу после вызова метода регистрации (потому он и синхронный). Я не могу выставить время сразу, потому что синхронных вызов регистрации может занять дольше, чем обычно. Поэтому, время всегда берется из ДДЕ.

Теперь насчет не пришедшей сделки. Я правильно понял, что имеет ввиду событие Strategy.NewMyTrade а не ITrader.NewMyTrades?
Спасибо:

Alter

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


Нет, именно ITrader.NewMyTrades.
Автор топика
Спасибо:

Mikhail Sukhov

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


Alter
Нет, именно ITrader.NewMyTrades.


Можете сделать вывод в лог? А так же события NewOrders OrdersChanged.
Спасибо:

Mikhail Sukhov

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


Alter
и вызывается ProcessWellKnownDdeData для таблицы "мои сделки", но в Dictionary не приходит ни одной записи.


Посмотрел код - это нормальное поведение, когда данные пришли во второй раз. Например, экспорт ДДЕ был пере запущен (Квик шлет все по второму разу). В след. версии сделаю поверку, если нет данных, не вызывать событие.
Спасибо:

Alter

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


Вот лог. Вызывается перерегистрация заявки, приходит NewOrders и пустой ProcessWellKnownDdeData для сделок, потом OrdersChanged, в котором приходит время заявки, далее меняется поза по инструменту. NewMyTrades так и не приходит до перезапуска экспорта.

Код
10/06/2010 18:12:50 [1] - PositionsChanged:
10/06/2010 18:12:50 [1] -      GZZ0: 1

10/06/2010 18:12:50 [1] - MMQS [Runned]: Цена текущей 16473 и лучшей 16471.
10/06/2010 18:12:50 [1] - MMQS [Runned]: Try reregister order

10/06/2010 18:12:51 [1] - OrdersChanged: Id:129244314, time:06.10.2010 18:13:05, state:Active, status:Done dir:Sell, initTime:06.10.2010 18:12:47, C:False, FE:True, FP:False, M:False, balance:1, volume:1, tranId:60249556, hash:17278584

10/06/2010 18:12:51 [1] - *** ProcessWellKnownDdeData ***
10/06/2010 18:12:51 [1] - заявки
10/06/2010 18:12:51 [1] - 129244314; GZZ0; SPBFUT; 16473; 1; 1; S; ACTIVE; 18:13:05; ; SPBFUT00397; LNK; XXX; 60249556; 06.10.2010;
10/06/2010 18:12:51 [1] - *** End ProcessWellKnownDdeData ***

10/06/2010 18:12:51 [1] - MMQS [Runned]: OnProcess, reregister order: Id:129244503, time:01.01.0001 0:00:00, state:Active, status:Done dir:Sell, initTime:06.10.2010 18:12:50, C:False, FE:True, FP:False, M:False, balance:1, volume:1, tranId:60249557, hash:51656463

10/06/2010 18:12:51 [1] - *** ProcessWellKnownDdeData ***
10/06/2010 18:12:51 [1] - мои сделки
10/06/2010 18:12:51 [1] - *** End ProcessWellKnownDdeData ***

10/06/2010 18:12:52 [1] - NewOrders: Id:129244503, time:01.01.0001 0:00:00, state:Active, status:Done dir:Sell, initTime:06.10.2010 18:12:50, C:False, FE:True, FP:False, M:False, balance:1, volume:1, tranId:60249557, hash:51656463

10/06/2010 18:12:52 [1] - OrdersChanged: Id:129244314, time:06.10.2010 18:13:05, state:Done, status:Done dir:Sell, initTime:06.10.2010 18:12:47, C:True, FE:True, FP:False, M:False, balance:1, volume:1, tranId:60249556, hash:17278584

10/06/2010 18:12:52 [1] - PositionsChanged:
10/06/2010 18:12:52 [1] -      GZZ0: 0

10/06/2010 18:12:52 [1] - *** ProcessWellKnownDdeData ***
10/06/2010 18:12:53 [1] - заявки
10/06/2010 18:12:53 [1] - 129244314; GZZ0; SPBFUT; 16473; 1; 1; S; KILLED; 18:13:05; ; SPBFUT00397; LNK; XXX; 60249556; 06.10.2010;
10/06/2010 18:12:53 [1] - *** End ProcessWellKnownDdeData ***

10/06/2010 18:12:53 [1] - OrdersChanged: Id:129244503, time:06.10.2010 18:13:08, state:Done, status:Done dir:Sell, initTime:06.10.2010 18:12:50, C:False, FE:False, FP:False, M:True, balance:0, volume:1, tranId:60249557, hash:51656463

10/06/2010 18:12:54 [1] - *** ProcessWellKnownDdeData ***
10/06/2010 18:12:54 [1] - заявки
10/06/2010 18:12:54 [1] - 129244503; GZZ0; SPBFUT; 16471; 1; 0; S; FILLED; 18:13:08; ; SPBFUT00397; LNK; XXX; 0; 06.10.2010;
10/06/2010 18:12:55 [1] - *** End ProcessWellKnownDdeData ***


То ли стокшарп считает, что сделка уже приходила и игнорит ее, то ли квик шлет что-то не то. Есть возможность получить лог вывода квика по ДДЕ до отбрасывания дублирующихся данных? Пробовал смотреть через ddespy, но там выводятся бинарные данные xltable вперемежку со вспомогательной информацией, разбирать эту кашу как-то не хочется.
Автор топика
Спасибо:

Mikhail Sukhov

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


Alter
Вот лог. Вызывается перерегистрация заявки, приходит NewOrders и пустой ProcessWellKnownDdeData для сделок, потом OrdersChanged, в котором приходит время заявки, далее меняется поза по инструменту. NewMyTrades так и не приходит до перезапуска экспорта.


А ProcessDataError ничего плохого не кидает? Например, неудачное преобразование ДДЕ данных сделки.

Alter

То ли стокшарп считает, что сделка уже приходила и игнорит ее, то ли квик шлет что-то не то. Есть возможность получить лог вывода квика по ДДЕ до отбрасывания дублирующихся данных? Пробовал смотреть через ddespy, но там выводятся бинарные данные xltable вперемежку со вспомогательной информацией, разбирать эту кашу как-то не хочется.


Если не получится решить проблему, то я отошлю спец. dll с таким событием.
Спасибо:

Alter

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


Нет, ProcessDataError молчит.
Автор топика
Спасибо:

Mikhail Sukhov

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


Alter
Нет, ProcessDataError молчит.


https://stocksharp.ru/posts/m/4140/
Спасибо:

Alter

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


Отлично, спасибо!
Автор топика
Спасибо:


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

loading
clippy