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


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


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

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

Код
/*генерирую сделки из файла*/
            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);



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

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

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

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

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

Версия 4.1.5

Теги:


Спасибо:




8 Ответов
Tauler

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


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

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 09.11.2012
Ответить


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


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

Moadip

Фотография
Автор статей Программист
Дата: 09.11.2012
Ответить


Потестил.

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

			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. С ним склейка работает как надо.
Код

			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("Запуск получения свечек");

Спасибо: Tauler

Tauler

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


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

esper

Фотография
Программист
Дата: 12.11.2012
Ответить


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

Tauler

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


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

Tauler

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


Все, работает на 4.1.6, спасибо!
Автор топика
Спасибо:

devruss

Фотография
Курсы
Дата: 05.06.2014
Ответить


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


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

loading
clippy