Получение свечных данных из сообщений

Получение свечных данных из сообщений
Atom
16.05.2017
gewinn


Добрый день. Храню свечные данные в СУБД MS SQL Server (open/close time, o, h, l, c, V).

До сего момента использовал данные из файлов (Hydra/<первая буква инструмента>/<инструмент>/candles_TimeFrameCandle_1.00-00-00.bin), примерно так: [code]var storageRegistry = new StorageRegistry { DefaultDrive = new LocalMarketDataDrive(config.history_folder_path) };[/code]

Хотел бы, чтобы HistoryEmulationConnector получал данные не из файлов а, например, из сообщений-свечек, полученных после выборки данных из СУБД.

Дайте, по-возможности, совет (лучше пример кода), как реализовать такую логику работы: -> Загрузили из БД свечные данные по инструменту -> Сформировали правильно сообщения-свечки из загруженных данных -> После старта исторического тестирования HistoryEmulationConnector начал получать сообщения-свечки -> Все работает, словно запустили тестирование из коробки

Спасибо!




Спасибо:


< 1 2 
gewinn

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


Добрый день. Подписка на данные в эмуляторе не помогла (ранее она была необходима только при биржевых подключениях).

Поэтому собрал очень короткий пример иллюстрирующий обсуждаемую проблему, с комментариями. Прикрепляю и очень прошу посмотреть.

Цель: получить на обработку свечку с методе processCandle() внутри стратегии.

Очень надеюсь на помощь.

Логи пока такие: [spoiler] 0001/01/01 00:00:00.000| |HistoryEmulationConnector|Connect 0001/01/01 00:00:00.000| |HistoryBasketMessageAdapter|Connecting 'EmulationMessageAdapter'. 0001/01/01 00:00:00.000| |HistoryBasketMessageAdapter|Connected to 'EmulationMessageAdapter'. 0001/01/01 00:00:00.000| |HistoryBasketMessageAdapter|Connecting 'История (c 07.05.2018 10:00:00 +03:00 по 09.05.2018 10:00:00 +03:00)'. 0001/01/01 00:00:00.000| |HistoryBasketMessageAdapter|Connected to 'История (c 07.05.2018 10:00:00 +03:00 по 09.05.2018 10:00:00 +03:00)'. 2018/05/07 10:00:00.000| |HistoryEmulationConnector|Создан новый портфель TestPortfolio. 2018/05/07 13:13:50.521|Debug |SecurityMarketEmulator| --> Board,T(L)=0001.01.01 00:00:00.000,Code=TQBR,Ex=MOEX 2018/05/07 13:13:50.528|Debug |SecurityMarketEmulator| --> Security,T(L)=2018.05.07 10:00:00.000,Sec=S#:GASP@TQBR, Native:,Type: 2018/05/07 10:00:00.000|Debug |HistoryEmulationConnector|Инструмент GASP@TQBR подписается на Level1. 2018/05/07 10:00:00.000|Debug |HistoryEmulationConnector|Инструмент GASP@TQBR подписается на Trades. 2018/05/07 13:13:50.669|Debug |SecurityMarketEmulator| --> Board,T(L)=2018.05.07 10:00:00.000,Code=TQBR,Ex=MOEX 2018/05/07 13:13:50.673|Debug |SecurityMarketEmulator| --> Board,T(L)=0001.01.01 00:00:00.000,Code=TQBR,Ex=MOEX 2018/05/07 13:13:50.673|Debug |SecurityMarketEmulator| --> Security,T(L)=2018.05.07 10:00:00.000,Sec=S#:LKOH@TQBR, Native:,Type: 2018/05/07 10:00:00.000|Debug |HistoryEmulationConnector|Инструмент LKOH@TQBR подписается на Level1. 2018/05/07 10:00:00.000|Debug |HistoryEmulationConnector|Инструмент LKOH@TQBR подписается на Trades. 2018/05/07 10:00:00.000|Debug |strategy_GASP@TQBR|Переход из состояния Stopped в Started. 2018/05/07 10:00:00.000| |strategy_GASP@TQBR|Стратегия Запущена. [0,-1]. Позиция 0. 2018/05/07 10:00:00.000|Debug |HistoryEmulationConnector|Инструмент GASP@TQBR подписается на CandleTimeFrame 1.00:00:00. 2018/05/07 10:00:00.000|Debug |strategy_LKOH@TQBR|Переход из состояния Stopped в Started. 2018/05/07 10:00:00.000| |strategy_LKOH@TQBR|Стратегия Запущена. [0,-1]. Позиция 0. 2018/05/07 10:00:00.000|Debug |HistoryEmulationConnector|Инструмент LKOH@TQBR подписается на CandleTimeFrame 1.00:00:00. 2018/05/07 10:00:00.000|Debug |HistoryEmulationConnector|Инструмент GASP@TQBR подписан на Level1. 2018/05/07 10:00:00.000|Debug |HistoryEmulationConnector|Инструмент GASP@TQBR подписан на Trades. 2018/05/07 10:00:00.000|Debug |HistoryEmulationConnector|Инструмент LKOH@TQBR подписан на Level1. 2018/05/07 10:00:00.000|Debug |HistoryEmulationConnector|Инструмент LKOH@TQBR подписан на Trades. 2018/05/07 10:00:00.000|Error |HistoryBasketMessageAdapter|System.InvalidOperationException: Не найден подходящий адаптер для MarketData,T(L)=2018/05/07 10:00:00.000,Sec=S#:GASP@TQBR, Native:,Type:,Sec=S#:GASP@TQBR, Native:,Type:,Type=CandleTimeFrame,IsSubscribe=True,Arg=1.00:00:00,TransId=11,OrigId=0. в StockSharp.Algo.BasketMessageAdapter.GetSubscriptionAdapters(MarketDataMessage mdMsg) в StockSharp.Algo.BasketMessageAdapter.ProcessMarketDataRequest(MarketDataMessage mdMsg) в StockSharp.Algo.BasketMessageAdapter.OnSendInMessage(Message message) в StockSharp.Messages.MessageAdapter.SendInMessage(Message message) 2018/05/07 10:00:00.000|Error |HistoryEmulationConnector|System.InvalidOperationException: Не найден подходящий адаптер для MarketData,T(L)=2018/05/07 10:00:00.000,Sec=S#:GASP@TQBR, Native:,Type:,Sec=S#:GASP@TQBR, Native:,Type:,Type=CandleTimeFrame,IsSubscribe=True,Arg=1.00:00:00,TransId=11,OrigId=0. в StockSharp.Algo.BasketMessageAdapter.GetSubscriptionAdapters(MarketDataMessage mdMsg) в StockSharp.Algo.BasketMessageAdapter.ProcessMarketDataRequest(MarketDataMessage mdMsg) в StockSharp.Algo.BasketMessageAdapter.OnSendInMessage(Message message) в StockSharp.Messages.MessageAdapter.SendInMessage(Message message) 2018/05/07 10:00:00.000|Error |HistoryBasketMessageAdapter|System.InvalidOperationException: Не найден подходящий адаптер для MarketData,T(L)=2018/05/07 10:00:00.000,Sec=S#:LKOH@TQBR, Native:,Type:,Sec=S#:LKOH@TQBR, Native:,Type:,Type=CandleTimeFrame,IsSubscribe=True,Arg=1.00:00:00,TransId=13,OrigId=0. в StockSharp.Algo.BasketMessageAdapter.GetSubscriptionAdapters(MarketDataMessage mdMsg) в StockSharp.Algo.BasketMessageAdapter.ProcessMarketDataRequest(MarketDataMessage mdMsg) в StockSharp.Algo.BasketMessageAdapter.OnSendInMessage(Message message) в StockSharp.Messages.MessageAdapter.SendInMessage(Message message) 2018/05/07 10:00:00.000|Error |HistoryEmulationConnector|System.InvalidOperationException: Не найден подходящий адаптер для MarketData,T(L)=2018/05/07 10:00:00.000,Sec=S#:LKOH@TQBR, Native:,Type:,Sec=S#:LKOH@TQBR, Native:,Type:,Type=CandleTimeFrame,IsSubscribe=True,Arg=1.00:00:00,TransId=13,OrigId=0. в StockSharp.Algo.BasketMessageAdapter.GetSubscriptionAdapters(MarketDataMessage mdMsg) в StockSharp.Algo.BasketMessageAdapter.ProcessMarketDataRequest(MarketDataMessage mdMsg) в StockSharp.Algo.BasketMessageAdapter.OnSendInMessage(Message message) в StockSharp.Messages.MessageAdapter.SendInMessage(Message message) 2018/05/07 10:00:00.000| |HistoryEmulationConnector|Изменение состояния эмуляции Stopped -> Starting 2018/05/07 10:00:00.000| |HistoryEmulationConnector|Изменение состояния эмуляции Starting -> Started 2018/05/09 07:00:00.000| |HistoryEmulationConnector|Изменение состояния эмуляции Started -> Stopping 2018/05/09 07:00:00.000| |HistoryEmulationConnector|Изменение состояния эмуляции Stopping -> Stopped 2018/05/09 07:00:00.000| |HistoryEmulationConnector|Disconnect 2018/05/09 07:00:00.000| |HistoryBasketMessageAdapter|Disconnecting 'EmulationMessageAdapter'. 2018/05/09 07:00:00.000| |HistoryBasketMessageAdapter|Disconnected from 'EmulationMessageAdapter'. 2018/05/09 07:00:00.000| |HistoryBasketMessageAdapter|Disconnecting 'История (c 07.05.2018 10:00:00 +03:00 по 09.05.2018 10:00:00 +03:00)'. 2018/05/09 07:00:00.000| |HistoryBasketMessageAdapter|Disconnected from 'История (c 07.05.2018 10:00:00 +03:00 по 09.05.2018 10:00:00 +03:00)'. [/spoiler]

TestingCandles.zip 21 MB (658)
Спасибо:

Support

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


Проблема решена по почте.

Спасибо:
< 1 2 

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

loading
clippy