Не работает склейка истории и реалтайма на кастомных свечах

Не работает склейка истории и реалтайма на кастомных свечах
Atom
11/9/2012
Tauler


Коллеги, приветствую!

Делаю, так, как написано в документации :

Code
/*генерирую сделки из файла*/
            List<Trade> trades = makeDealsFromHistory(edtPathToHistoryFile.Text);

            /*проставляю в сделках полученную бумагу*/
            foreach (var trade in trades)
                trade.Security = security;
            
            /*создаю источник данных для CandleBuilder*/
            var builderSource = new RawConvertableCandleBuilderSource<Trade>(security, new DateTime(1990, 1,1), new DateTime(2113,1,1), trades);


            CandleManager candleManager = new CandleManager(trader);
            series = new CandleSeries(typeof(RangeHLCandle), security, edtStockRange.Value);
            RangeHLCandleBuilder builder = new RangeHLCandleBuilder { Sources =
                                                                          {
                                                                              builderSource, new TradeCandleBuilderSource(trader)
                                                                          } };

            candleManager.Sources.Add(builder);
            candleManager.Processing += m_Processing;
            candleManager.Start(series);



Если
Code
RangeHLCandleBuilder builder = new RangeHLCandleBuilder { Sources =
                                                                          {
                                                                              builderSource, new TradeCandleBuilderSource(trader)
                                                                          } };

то появляются свечи из истории, если

Code
RangeHLCandleBuilder builder = new RangeHLCandleBuilder { Sources =
                                                                          {
                                                                              /*builderSource*/, new TradeCandleBuilderSource(trader)
                                                                          } };

то появляются свечи из реалтайма. В чем секрет? Ощущение, что работает только один(первый), из источников свечей

Классы RangeHLCandle и RangeHLCandleBuilder проверены и работают с одним источником (как история, так и реалтайм)

Версия 4.1.5

Tags:


Thanks:


Tauler

Avatar
Date: 11/9/2012
Reply


Коллеги, дайте понять, пожалуйста - это действительно не работает, или я не так делаю? Если не работает - буду искать воркэраунд.
Thanks:

Mikhail Sukhov

Avatar
Date: 11/9/2012
Reply


Tauler
Коллеги, дайте понять, пожалуйста - это действительно не работает, или я не так делаю? Если не работает - буду искать воркэраунд.


В список занесли. Проверим позднее.
Thanks:

Moadip

Avatar
Date: 11/9/2012
Reply


Потестил.

Действительно с RawConvertableCandleBuilderSource почему то подгружает только историю.
Code

			var trades = new TradeFromTxt(@"D:\trades_RIZ2@RTS_2012_11_08.txt", _instr1).GetTrades();

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

			var source = new RawConvertableCandleBuilderSource<Trade>(_instr1, new DateTime(2012, 11, 8), new DateTime(2012, 11, 8), trades);
			_candleManager.Sources.OfType<TimeFrameCandleBuilder>().Single().Sources.Add(source);

			_series = new CandleSeries(typeof(TimeFrameCandle), _instr1, _timeFrame);

			_candleManager.Start(_series, new DateTime(2012, 11, 8), DateTime.MaxValue);
			_trader.AddInfoLog("Запуск получения свечек");


Можно временно сделать костыль.

Перегнать сделки из txt в формат S# и использовать TradeStorageCandleBuilderSource. С ним склейка работает как надо.
Code

			var trades = new TradeFromTxt(@"D:\trades_RIZ2@RTS_2012_11_08.txt", _instr1).GetTrades();

			var storageRegistry = new StorageRegistry();
			((LocalMarketDataDrive)storageRegistry.DefaultDrive).Path = @"D:\";
			storageRegistry.GetTradeStorage(_instr1).Save(trades);

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

			var source = new TradeStorageCandleBuilderSource { StorageRegistry = storageRegistry };
			_candleManager.Sources.OfType<TimeFrameCandleBuilder>().Single().Sources.Add(source);

			_series = new CandleSeries(typeof(TimeFrameCandle), _instr1, _timeFrame);

			_candleManager.Start(_series, new DateTime(2012, 11, 8), DateTime.MaxValue);
			_trader.AddInfoLog("Запуск получения свечек");

Thanks: Tauler

Tauler

Avatar
Date: 11/11/2012
Reply


Да, именно что-то вроде этого и планировал делать.
Спасибо за совет!
Thanks:

esper

Avatar
Date: 11/12/2012
Reply


Исправлено в последней версии на кодеплексе (rev 20971).
Thanks:

Tauler

Avatar
Date: 11/12/2012
Reply


А как скачать определенную dll из определенной ревизии? У меня получилось только весь стокшарп целиком
Thanks:

Tauler

Avatar
Date: 11/13/2012
Reply


Все, работает на 4.1.6, спасибо!
Thanks:

devruss

Avatar
Date: 6/5/2014
Reply


Придется поднять старую тему: начиная с 4.2.2.18 предложенный метод больше не работает. Свечки из 2х источников дублируются, а не накладываются друг на друга.
Поделитесь пожалуйста советом, кто как сейчас склеивает данные их 2х источников (гидра + realtime данные например)?
Thanks:


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

loading
clippy