Синхронизация NewTrades() и CandlesFinished()
Atom
26.04.2012


обновился до 4.1, переписал тестер, но не пойму как синхронизировать эти события.

Код

 var storage = new TradingStorage(new InMemoryStorage())
            {
                BasePath = HistoryPath.Text
            };

            _trader = new EmulationTrader(
                new[] { security },
                new[] { portfolio })
            {
                MarketTimeChangedInterval = timeFrame,
                Storage = storage,
                WorkingTime = Exchange.Rts.WorkingTime,
                DaysInMemory = 1,
            };
            
            _trader.DepthGenerators[security] = new TrendMarketDepthGenerator(security)
            {
                Interval = TimeSpan.FromSeconds(2),
            };

            var candleManager = new CandleManager();
            var cbs = new TradeStorageCandleBuilderSource { BasePath = HistoryPath.Text, Storage = storage };

             var _builder = new TimeFrameCandleBuilder();
            _builder.Sources.Add(cbs);

             candleManager.Sources.Add(_builder);
            
            candleseries = new CandleSeries(typeof(TimeFrameCandle), security, timeFrame);
          
            candleManager.Start(candleseries, startTime, stopTime);




в стратегии 2 правила:

Код

this
                .When(Security.SecurityNewTrades())
                .Do(...);
            this
                      .When(_candleManager.Series.ElementAt(0).CandlesFinished())
                      .Do(...);




Спасибо:


ra81

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


А в чем суть синхронизации то собственно? Не очень ясно
Спасибо:

profts

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


при запуске тестера события по свечкам сразу начинают обгонять события по сделкам и это отставание быстро увеличивается.
к примеру, время последней CandlesFinished() уже 17.45 , а время Security.SecurityNewTrades() 12.15. в моем случае стратегия входит в сделки по свечкам, а тэйки и стопы мониторит по сделкам. т.е. вход в сделку произошел в 17.00, а тэйк проверяется на основе сделок, которые были 5 часов раньше )
Спасибо:

ra81

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


profts Перейти
при запуске тестера события по свечкам сразу начинают обгонять события по сделкам и это отставание быстро увеличивается.
к примеру, время последней CandlesFinished() уже 17.45 , а время Security.SecurityNewTrades() 12.15. в моем случае стратегия входит в сделки по свечкам, а тэйки и стопы мониторит по сделкам. т.е. вход в сделку произошел в 17.00, а тэйк проверяется на основе сделок, которые были 5 часов раньше )

Даже не знаю что и сказать. Это повод пожаловаться, если точно проблема не в своем коде.
Спасибо:

Mikhail Sukhov

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


profts Перейти


Выглядит как бага. Возможно, что такое есть. Будем чинить.
Спасибо: profts

Mikhail Sukhov

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


Mikhail Sukhov Перейти
profts Перейти


Выглядит как бага. Возможно, что такое есть. Будем чинить.


Еще раз посмотрел код. Нет, бага у вас. У вас два источника истории. Исторический источник для свечек и исторический шлюз. Надо что-то одно выбрать.
Спасибо:

ra81

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


Mikhail Sukhov Перейти
Mikhail Sukhov Перейти
profts Перейти


Выглядит как бага. Возможно, что такое есть. Будем чинить.


Еще раз посмотрел код. Нет, бага у вас. У вас два источника истории. Исторический источник для свечек и исторический шлюз. Надо что-то одно выбрать.

Кстати да. Я вот тоже проглядел :).
Спасибо:

profts

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


Совсем не обратил внимания. Помогло. Спасибо ))

а еще такой вопрос... как зарегистрировать серию тиковых свечек.

Код

candleseries = new CandleSeries(typeof(TickCandle), security, 200);
candleManager.Start(candleseries, startTime, stopTime);


пытаюсь сделать по аналогии с таймфреймовыми свечками, но получение свечек не запускается.
Спасибо:


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

loading
clippy