Добрый день. Данный топик является продолжением 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 секундам.
Добрый день. Храню свечные данные в СУБД MS SQL Server (open/close time, o, h, l, c, V). До сего момента использовал данные из файлов (Hydra///candles_TimeFrameCandle_1.00-00-00.bin), примерно так: var storageRegistry = new StorageRegistry { DefaultDrive = new LocalMarketDataDrive(config.history_folder_path) }; Хотел бы, чтобы HistoryEmulationConnector получал данные не из файлов а, например, из сообщений-свечек, полученных после выборки данных из СУБД. Дайте, по-возможности, совет (лучше пример кода), как реализовать такую логику работы: -\u003e Загрузили из БД свечные данные по инструменту -\u003e Сформировали правильно сообщения-свечки из загруженных данных -\u003e После старта исторического тестирования HistoryEmulationConnector начал получать сообщения-свечки -\u003e Все работает, словно запустили тестирование из коробки Спасибо!
Доброе утро! Поиском по данной теме нашел только старые топики, в которых желаемой информации не нашел. Хотелось бы спросить, как в текущей версии SS будет работать HistoryEmulationConnector, если есть портфель с N числом бумаг, где для каждой бумаги создается своя стратегия (экземпляр). Вопросы примерно такие: 1) Все стратегии будут работать в одном потоке или каждая в своем? 2) Если каждая в своем, то синхронизация между бумагами отсутствует или достигается за счет того, что, например, сообщения (свечи, тики, итд) отправляются в каждый подписанный инструмент с одинаковой скоростью? Подобные вопросы задаю с той целью, что планирую тестировать портфель из 50+ бумаг за длинный промежуток времени (10+ лет), с отрисовкой, на достаточно мощной машине (16 ядер, видео карта последнего поколения итд).