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


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


Добрый день.

Данный топик является продолжением
https://stocksharp.com/fo...ta-so-stakanom-zayavok/
https://stocksharp.com/fo...oricheskogo-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<T> (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 секундам.





Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy