Попробовал начать использовать в своей стратегии CandleManager и CandleSeries. Время тестирования увеличилось в несколько раз. Памяти 32ГБ уже не хватает. Предполагаю, что память расходуется на хранение свечей (у меня таймфрейм 1 сек на данных за 9 месяцев). В CandleSeries мне нужны свечи только за последнюю минуту. Подскажите, есть ли способ удалять ненужные свечи из CandleSeries? Инициализирую так::::spoiler
var trader = new MyEmulationTrader(
new[] {security},
new[] {portfolio},
_storageRegistry)
{
UseMarketDepth = true,
StorageRegistry = _storageRegistry,
AutoResetEvent = new AutoResetEvent(false),
};
trader.Connect();
var quickCandleManager = new CandleManager(trader);
quickCandleManager.Sources.Add(new MyTimeFrameCandleBuilder() { Sources = { new MarketDepthCandleBuilderSource(trader) } });
var quickCangleSeries = new CandleSeries(typeof(MyCandle), security, paramCombination.QuickTimeFrame);
quickCandleManager.Start(quickCangleSeries);
var slowCandleManager = new CandleManager(trader);
slowCandleManager.Sources.Add(new MyTimeFrameCandleBuilder() { Sources = { new MarketDepthCandleBuilderSource() } });
var slowCangleSeries = new CandleSeries(typeof(MyCandle), security, paramCombination.SlowTimeFrame);
slowCandleManager.Start(slowCangleSeries);
trader.StartExport();
Comentarios (10)
Iniciar sesión o Crear cuenta, Inicie sesión o regístrese para dejar un comentario
В днях это так выглядит:
В минутах это наверное будет выглядеть так:
Попробуйте я не проверял.
Не помогло. Пока не знаю что делать. То ли разбираться в кодах стокшарпа, то ли свой CandleManager реализовывать.
А что не получилось то? Я взял тики создал из них свечки по 1 секунде, установил
сохраняю свечи серрии в коллекцию
каждый шаг смотрю, что с коллекцией, больше 60 свечей не показывает, и по времени они нормальные. Или вы что то другое рассчитывали получить?
_candleManager.Container.CandlesKeepTime = TimeSpan.FromMinutes(1);
Ограничение по количеству свечей работает. По прежнему большой расход памяти: 32ГБ потребляются полностью и, после того как 32ГБ исчерпаны, тестирование происходит очень медленно. Использую в тестировании BasketTrader. Включаю в него 10 экземпляров EmulationTrader. Тестирую период в 9 месяцев. Свечи строю двух таймфреймов: в несколько секунд и несколько минут.
Прежде чем изобретать велосипед, неплохо бы погонять под профилировщиком типа этого. Чтобы посмотреть куда память утекает. На форуме уже поднимался этот вопрос и не раз, что течет. Вроде фиксили, но возможно недофиксили.😂
Думал уже над этим. И профилировщик именно этот поставил. Я так понимаю, что чтобы что-то увидеть в профилировщике, нужны *.pdb файлы от стокшарп сборок. У меня их нет. Если только компилировать по открытым исходникам. Но они устаревшей версии. Пока не заморачивался с этим.
IIndicatorContainer
Тесту приходится перебирать все тики, за 9 месяцев. Их сколько? И сколько обычный foreach их перебирать будет?