Достаточно регулярно случается сабж - заявка исполняется, а сделка не приходит, 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.
Comentarios (16)
Iniciar sesión o Crear cuenta, Inicie sesión o regístrese para dejar un comentario
time - это Order.Time? Заявка регистрируется или изменяется?
time - это Order.Time, да. Заявка перерегистрируется при котировании.
Режим асинхронный? Что за инструмент (рынок)?
Синхронный режим, FORTS
Можете еще вывести TransactionId и GetHashCode и отсылаемыхз заявок и получаемых через событие?
Хорошо, как только баг воспроизведется снова - отпишусь.
TransactionId и хэш отсылаемых заявок и получаемых через событие совпадают.
Так, насчет заявок и нулевого времени. Это стандартная ситуация в синхронном режиме. Он вызывает NewOrder сразу после вызова метода регистрации (потому он и синхронный). Я не могу выставить время сразу, потому что синхронных вызов регистрации может занять дольше, чем обычно. Поэтому, время всегда берется из ДДЕ.
Теперь насчет не пришедшей сделки. Я правильно понял, что имеет ввиду событие Strategy.NewMyTrade а не ITrader.NewMyTrades?
Нет, именно ITrader.NewMyTrades.
Можете сделать вывод в лог? А так же события NewOrders OrdersChanged.
Посмотрел код - это нормальное поведение, когда данные пришли во второй раз. Например, экспорт ДДЕ был пере запущен (Квик шлет все по второму разу). В след. версии сделаю поверку, если нет данных, не вызывать событие.
Вот лог. Вызывается перерегистрация заявки, приходит NewOrders и пустой ProcessWellKnownDdeData для сделок, потом OrdersChanged, в котором приходит время заявки, далее меняется поза по инструменту. NewMyTrades так и не приходит до перезапуска экспорта.
То ли стокшарп считает, что сделка уже приходила и игнорит ее, то ли квик шлет что-то не то. Есть возможность получить лог вывода квика по ДДЕ до отбрасывания дублирующихся данных? Пробовал смотреть через ddespy, но там выводятся бинарные данные xltable вперемежку со вспомогательной информацией, разбирать эту кашу как-то не хочется.
А ProcessDataError ничего плохого не кидает? Например, неудачное преобразование ДДЕ данных сделки.
Если не получится решить проблему, то я отошлю спец. dll с таким событием.
Нет, ProcessDataError молчит.
http://stocksharp.com/posts/m/4140/
Отлично, спасибо!