Для изменения размера нажмите или перетащите

Склеивание свечей, история + реал-тайм

Для того чтобы склеить исторические свечи с реал-тайм, надо инициализировать соответствующие хранилище торговых объектов CsvEntityRegistry и хранилище маркет-данных StorageRegistry.

Рассмотрим склеивание на примере TimeFrameCandle с использованием тиковых данных, сохраненных с помощью S#.Data:

C#
private QuikTrader _trader;

private Security security;
private CandleManager _candleManager;
private CandleSeries _series;
readonly TimeSpan _timeFrame = TimeSpan.FromMinutes(5);

//объявляем хранилище торговых объектов CsvEntityRegistry и хранилище маркет-данных StorageRegistry
private readonly CsvEntityRegistry _csvEntityRegistry;
private readonly StorageRegistry _storageRegistry;

// Путь к данным истории
private const string _historyPath = @"e:\DataServer\";

...
public MainWindow()
        {
            InitializeComponent();     
            ....   
            _csvEntityRegistry = new CsvEntityRegistry(_historyPath);
            _storageRegistry = new StorageRegistry
            {
                DefaultDrive = new LocalMarketDataDrive(_historyPath),
            };
        }

...

_candleManager = new CandleManager(_trader);
_candleManager.Processing += ProcessingCandles;

...
//Инициализируем  StorageAdapter
_trader.InitializeStorage(csvEntityRegistry, storageRegistry);
//Устанавливаем количество дней для загрузки данных.
_trader.StorageAdapter.DaysLoad = TimeSpan.FromDays(3);

_series = new CandleSeries(typeof(TimeFrameCandle), security, _timeFrame)
{
    BuildCandlesMode = BuildCandlesModes.Build
};    
_candleManager.Start(_series);

После этого, в обработчик события Processing - ProcessingCandles, начнут поступать свечи начиная с первой исторической и по текущую реал-тайм:

C#
private void ProcessingCandles(CandleSeries series, Candle candle)
{
    ...
}

Если изначально создаётся Connector, то в инициализации StorageAdapter нет необходимости, достаточно передать хранилище торговых объектов CsvEntityRegistry и хранилище маркет-данных StorageRegistry в конструктор Connector

C#
...
_csvEntityRegistry = new CsvEntityRegistry(_historyPath);
_storageRegistry = new StorageRegistry
{
   DefaultDrive = new LocalMarketDataDrive(_historyPath),
};
Connector = new Connector(_csvEntityRegistry, _storageRegistry);
Connector.StorageAdapter.DaysLoad = TimeSpan.FromDays(3);
...