← Zurück

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

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

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

        ```csharp

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


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

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

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

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

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

Версия 4.1.5

War dieses Thema hilfreich?

Thema teilen

Kommentare (8)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Tauler
Tauler Autor

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

Mikhail Sukhov
Mikhail Sukhov

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

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

Moadip
Moadip

Потестил.

Действительно с 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
Tauler Autor

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

esper
esper

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

Tauler
Tauler Autor

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

Tauler
Tauler Autor

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

devruss
devruss

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