Использование готовой коллекции данных в HistoryEmulationConnector

Использование готовой коллекции данных в HistoryEmulationConnector
Atom
3/14/2017
Pelmen32


Добрый день.
Хочу передать коллекцию тиковых сделок IEnumerable<ExecutionMessage> в HistoryEmulationConnector.

Есть ли способ это сделать без использования механизма сохранения коллекции в файл через StorageRegistry?

Пытаюсь делать на основе примера тестирование на исторических данных через Финам,
с использованием метода RegisterHistorySource, но никак не получается.
Данные не подгружаются, свечки не строятся. Подскажите, пожалуйста, мою ошибку,
может быть есть у кого рабочее решение.

Пытаюсь сделать следующим образом:
_historyTicks - переменная содержащая коллекцию IEnumerable<ExecutionMessage> (тики загружены, проверил)

d1 = _historyTicks.ElementAt(0).ServerTime;
d2 = _historyTicks.ElementAt(_historyTicks.Count() - 1).ServerTime;

_historyConnector = new HistoryEmulationConnector(new[] {_selSecurity}, new[] {_selPortfolio})
{
EmulationAdapter =
{
Emulator = { Settings = { MatchOnTouch = false, } }
},

UseExternalCandleSource = false,
CreateDepthFromOrdersLog = false,
CreateTradesFromOrdersLog = false,
};

_historyConnector.HistoryMessageAdapter.StartDate = d1;
_historyConnector.HistoryMessageAdapter.StopDate = d2;

Func<DateTimeOffset, IEnumerable<Message>> selectionData = d =>
_historyTicks.Where(ht => ((ht.ServerTime.Date == d.Date) && (ht.ServerTime.TimeOfDay==d.TimeOfDay)));

_historyConnector.RegisterHistorySource(_selSecurity, MarketDataTypes.Trades, typeof (Trade), selectionData);

var candleManager = new CandleManager(_historyConnector);

_candleTimeFrame = TimeSpan.FromMinutes(5);

_connectorCandleSеries = new CandleSeries(typeof(TimeFrameCandle), _selSecurity, _candleTimeFrame);

candleManager.Processing += DrawElement;

candleManager.Start(_connectorCandleSеries);

_historyConnector.Start();




Thanks: RashinSergey


< 1 2 
Pelmen32

Avatar
Date: 4/26/2017
Reply


Спасибо, что подсказали про смещение на 1 день. Вроде разобрался.
Если период в HistoryMessageAdapter задавать в формате UTC, то пропущенных дней нет.

Период указываю следующим образом:
Code
_historyConnector.HistoryMessageAdapter.StartDate = d1.Date.ToUniversalTime();
_historyConnector.HistoryMessageAdapter.StopDate = d2.Date.ToUniversalTime().AddDays(1);

Thanks:

Support

Avatar
Date: 4/26/2017
Reply


ок.
Thanks:
< 1 2 

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

loading
clippy