При тестировании на истории, в CandleManager не приходят новые свечки по ContinuousSecurity
Код
var cFuture = new ContinuousSecurity();
cFuture.ExpirationJumps.AddRange(
Securities
.Where(s => s.Type == SecurityTypes.Future)
.Select(f => { return new KeyValuePair<Security, DateTime>(f, (DateTime)f.ExpiryDate); })
);
Trader = new EmulationTrader(
new[] { cFuture },
new[] { Portfolio },
storage
);
Trader.Connect();
Trader.StartExport();
CM = new CandleManager(Trader);
CM.Processing += (series, candle) => { Trader.AddInfoLog("new candle value"); };
CM.Start(new CandleSeries(typeof(TimeFrameCandle), cFuture, timeFrame));
Trader.Start(stDate, enDate);
Если в CM передавать не ContinuousSecurity, а фьючерсы на основании которых он построен, то свечки приходят нормально
Securities.Where(s => s.Type == SecurityTypes.Future).ForEach(fut =>
{
CM.Start(new CandleSeries(typeof(TimeFrameCandle), fut, timeFrame));
});
Это баг при тестировании на истории, или не так что-то делаю?
При этом лог для ContinuousSecurity
EmulationTrader | 01.01.0001 00:00:00.000 | | Экспорт запущен. EmulationTrader | 01.01.2012 00:00:00.000 | | Loading 01.01.2012 0:00:00 Events: 0 EmulationTrader | 01.01.2012 00:00:00.000 | | Loading 02.01.2012 0:00:00 Events: 1 EmulationTrader | 01.01.2012 00:00:00.000 | | Loading 03.01.2012 0:00:00 Events: 2 EmulationTrader | 01.01.2012 00:00:00.000 | | Loading 04.01.2012 0:00:00 Events: 169 EmulationTrader | 01.01.2012 00:00:00.000 | | Loading 05.01.2012 0:00:00 Events: 336
и по отдельным фьючерсам
EmulationTrader | 01.01.0001 00:00:00.000 | | Экспорт запущен. EmulationTrader | 01.01.2012 00:00:00.000 | | Loading 01.01.2012 0:00:00 Events: 0 EmulationTrader | 01.01.2012 00:00:00.000 | | Loading 02.01.2012 0:00:00 Events: 1798 EmulationTrader | 01.01.2012 18:45:00.000 | | Loading 03.01.2012 0:00:00 Events: 3596 EmulationTrader | 03.01.2012 21:19:16.107 | | Loading 04.01.2012 0:00:00 Events: 197041 EmulationTrader | 04.01.2012 20:52:25.887 | | Loading 05.01.2012 0:00:00 Events: 435865
показывает разное к-во загруженных сделок
Комментарии (7)
Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий
Кхем.. Спрошу проще. Кто-то вообще пользуется ContinuousSecurity? :)
С историей пока CS не дружит.
CS не научился работать с историей на последней версии?
Похоже не научился. Вообще классы WeightedIndexSecurity и ContiniousSecurity практически не рабочие. Они не умеют ни с CandleSeries работать, ни в стратегию их не передать (ошибка "Инструмент не имеет информацию о шлюзе", хотя бумага к стратегии прикрепляется). Танцевал с бубном несколько дней. Так и забросил это дело.
Трейды по ним еще можно получать, но толком использовать невозможно.
Будем ждать, может, у кого из разработчиков дойдут руки довести эти классы до ума. Пока можно использовать лишь обходными путями.
Да, так сработало. Спасибо за совет. Я что-то так брутально не решился приколотить Trader к бумаге. Вообще, думал, что это свойство readonly. Интересно, выходит так можно бумагу между трейдерами перетаскивать?
Еще интересно, кто-нибудь строил свечки со своей реализацией метода Calculate?
Я из исходников взял код WeightedIndexSecurity, поменял формулу расчета значения в методе Calculate, но свечки все равно формируются в прежней логике: сумма произведений значений свечек вложенных бумаг и их весов. Т.е. где-то в CandleManager'е все равно берется метод из WeightedIndexSecurity, а мой для расчета не цепляется.