Все заработало. Спасибо!
Если кому будет интересно использовать свои свечные данные из своей (или удаленной СУБД), то, основываясь на примере от уважаемого суппорта SS, реализовал так:
- Получаем свечные данные из БД, формируем свечки, кладем в коллекцию:
....
while (reader.Read())
{
candles_list.Add(new TimeFrameCandle()
{
Security = security,
TimeFrame = TimeSpan.FromMinutes(period),
OpenTime = new DateTimeOffset((DateTime)reader["open_datetime"], ST.timezone_timespan_hours),
CloseTime = new DateTimeOffset((DateTime)reader["open_datetime"] + TimeSpan.FromMinutes(period), ST.timezone_timespan_hours),
OpenPrice = (decimal)(double)reader["o"],
HighPrice = (decimal)(double)reader["h"],
LowPrice = (decimal)(double)reader["l"],
ClosePrice = (decimal)(double)reader["c"],
TotalVolume = (decimal)(double)reader["v"]
});
}
db.closeDbConnection();
- Пишем ф-цию, которая превращает свечки из коллекции в сообщения:
public IEnumerable<Message> getCandles(DateTimeOffset d)
{
return candles_list.Where(с=> ((с.OpenTime.Date == d.Date) && (с.OpenTime.TimeOfDay == d.TimeOfDay))).Select(t => t.ToMessage());
}
- Подписываемся на исторические данные из наших сообщений:
...
connector.RegisterHistorySource(security, MarketDataTypes.CandleTimeFrame, typeof(Candle), getCandles);
...
- Работаем дальше как из "коробки" - создаем экземпляр класса CandleManager, создаем серию свечек:
...
candle_manager = new CandleManager(connector);
...
candle_serie = new CandleSeries(typeof(TimeFrameCandle), security, TimeSpan.FromMinutes(period));
...
candle_manager.Start(candle_serie);
- Подписываемся на событие появления новых свечей и работаем с ними :)
candle_manager .Processing += (series, candle) =>
{
//TODO
};
Еще раз спасибо!