обновился до 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(...);
Комментарии (7)
Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий
А в чем суть синхронизации то собственно? Не очень ясно
при запуске тестера события по свечкам сразу начинают обгонять события по сделкам и это отставание быстро увеличивается. к примеру, время последней CandlesFinished() уже 17.45 , а время Security.SecurityNewTrades() 12.15. в моем случае стратегия входит в сделки по свечкам, а тэйки и стопы мониторит по сделкам. т.е. вход в сделку произошел в 17.00, а тэйк проверяется на основе сделок, которые были 5 часов раньше )
Выглядит как бага. Возможно, что такое есть. Будем чинить.
Еще раз посмотрел код. Нет, бага у вас. У вас два источника истории. Исторический источник для свечек и исторический шлюз. Надо что-то одно выбрать.
Совсем не обратил внимания. Помогло. Спасибо ))
а еще такой вопрос... как зарегистрировать серию тиковых свечек.
пытаюсь сделать по аналогии с таймфреймовыми свечками, но получение свечек не запускается.