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


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


Добрый день.
Хочу передать коллекцию тиковых сделок 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();




Спасибо: RashinSergey


< 1 2 
Pelmen32

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


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

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

Спасибо:

Support

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


ок.
Спасибо:
< 1 2 

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

loading
clippy