Найдена причина четырёх проблем исторического коннектора (HistoryEmulationConnector) и + новый вопрос

Найдена причина четырёх проблем исторического коннектора (HistoryEmulationConnector) и + новый вопрос
Atom
21.02.2019
Дмитрий_


Добрый день.

Данный топик является продолжением https://stocksharp.ru/forum/10399/rabota-so-stakanom-zayavok/ https://stocksharp.ru/forum/10400/korrektnaya-nastroika-istoricheskogo-konnektora/ и решает следующие проблемы:

  1. Правильное локальное время объекта marketDepth в событии Connector_MarketDepthChanged(MarketDepth marketDepth).
  2. Правильное локальное время объекта trade в событии Connector_NewTrade(Trade trade).
  3. Параллельное получение marketDepth объектов двух инструментов в событии Connector_MarketDepthChanged(MarketDepth marketDepth).
  4. Параллельное получение trade объектов двух инструментов в событии Connector_NewTrade(Trade trade).

Входные данные - quotesBinaryDates GAZP@MICEX и LKOH@MICEX.

Корнем зла является строка под номером 349 msg.LocalTime = serverTime; в классе CachedBasketMarketDataStorage (namespace StockSharp.Algo.Storages). Убираю и почти всё ок. Почти - по следующим причинам:

  1. Такое кардинальное удаление - не лучшее решение.

  2. Криво приходят данные двух инструментов, будь то объект trade или объект marketDepth. Поясню. Событие Connector_NewOrderLogItem(OrderLogItem orderLogItem) - эталон правильной синхронизированной работы 2-х инструментов. Данные 1-ого инструмента пришли 10:00:00 Данные 1-ого инструмента пришли 10:00:01 Данные 2-ого инструмента пришли 10:00:02 Данные 1-ого инструмента пришли 10:00:02 Данные 2-ого инструмента пришли 10:00:03 Данные 2-ого инструмента пришли 10:00:04 Данные 1-ого инструмента пришли 10:00:04 Данные 1-ого инструмента пришли 10:00:06 Данные 2-ого инструмента пришли 10:00:06 Данные 1-ого инструмента пришли 10:00:07 Данные 2-ого инструмента пришли 10:00:08 Данные 1-ого инструмента пришли 10:00:09 Данные 2-ого инструмента пришли 10:00:10 и т.д. Данные приходят в порядке своего времени.

Но с событиями Connector_MarketDepthChanged(MarketDepth marketDepth) и Connector_NewTrade(Trade trade) - такой красоты нет. Данные 1-ого инструмента пришли 10:00:00 Данные 1-ого инструмента пришли 10:00:01 Данные 1-ого инструмента пришли 10:00:02 Данные 1-ого инструмента пришли 10:00:04 Данные 1-ого инструмента пришли 10:00:06 Данные 2-ого инструмента пришли 10:00:02 Данные 2-ого инструмента пришли 10:00:03 Данные 2-ого инструмента пришли 10:00:04 Данные 2-ого инструмента пришли 10:00:06 Данные 1-ого инструмента пришли 10:00:07 Данные 2-ого инструмента пришли 10:00:08 Данные 1-ого инструмента пришли 10:00:09 Данные 2-ого инструмента пришли 10:00:10 и т.д. В данном примере, рассинхронизация = 6 секундам, но может появляться и в будущем.

И последний момент - продолжительность рассинхронизации. Если запускать код без breakpoints (без задержек) рассинхрон = равен 10-12 секундам. Если запускать код с breakpoints (с задержками) рассинхрон = равен 2-3 секундам.




Спасибо:




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

loading
clippy