← Назад

ContiniousSecurity не рисует свечки

При тестировании на истории, в 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)

Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий

pehas
pehas Автор

Кхем.. Спрошу проще. Кто-то вообще пользуется ContinuousSecurity? :)

Mikhail Sukhov
Mikhail Sukhov

pehas: Кхем.. Спрошу проще. Кто-то вообще пользуется ContinuousSecurity? :)

С историей пока CS не дружит.

PavelAd
PavelAd

CS не научился работать с историей на последней версии?

akoz
akoz

Похоже не научился. Вообще классы WeightedIndexSecurity и ContiniousSecurity практически не рабочие. Они не умеют ни с CandleSeries работать, ни в стратегию их не передать (ошибка "Инструмент не имеет информацию о шлюзе", хотя бумага к стратегии прикрепляется). Танцевал с бубном несколько дней. Так и забросил это дело.

Трейды по ним еще можно получать, но толком использовать невозможно.

Будем ждать, может, у кого из разработчиков дойдут руки довести эти классы до ума. Пока можно использовать лишь обходными путями.

Moadip
Moadip

Вообще классы WeightedIndexSecurity и ContiniousSecurity практически не рабочие. Ну по крайней мере с помощью WeightedIndexSecurityсвечки можно рисовать.

ни в стратегию их не передать (ошибка "Инструмент не имеет информацию о шлюзе", хотя бумага к стратегии прикрепляется). А у самого инструмента св-во Trader пробовали выставлять?

akoz
akoz

А у самого инструмента св-во Trader пробовали выставлять?

Да, так сработало. Спасибо за совет. Я что-то так брутально не решился приколотить Trader к бумаге. Вообще, думал, что это свойство readonly. Интересно, выходит так можно бумагу между трейдерами перетаскивать?

akoz
akoz

Еще интересно, кто-нибудь строил свечки со своей реализацией метода Calculate?

Я из исходников взял код WeightedIndexSecurity, поменял формулу расчета значения в методе Calculate, но свечки все равно формируются в прежней логике: сумма произведений значений свечек вложенных бумаг и их весов. Т.е. где-то в CandleManager'е все равно берется метод из WeightedIndexSecurity, а мой для расчета не цепляется.