Удаление неиспользуемых свечей из CandleSeries
Atom Ответить
30.05.2013


Попробовал начать использовать в своей стратегии CandleManager и CandleSeries.
Время тестирования увеличилось в несколько раз. Памяти 32ГБ уже не хватает.
Предполагаю, что память расходуется на хранение свечей (у меня таймфрейм 1 сек на данных за 9 месяцев).
В CandleSeries мне нужны свечи только за последнюю минуту.
Подскажите, есть ли способ удалять ненужные свечи из CandleSeries?
Инициализирую так:



Спасибо:




10 Ответов
Иван З.

Фотография
Курсы Автор статей Благотворитель
Дата: 31.05.2013
Ответить


В днях это так выглядит:
Код
_candleManager.Container.CandlesKeepTime = TimeSpan.FromDays(2);

В минутах это наверное будет выглядеть так:
Код
_candleManager.Container.CandlesKeepTime = TimeSpan.FromMinutes(1);

Попробуйте я не проверял.
Спасибо: vk37

vk37

Фотография
Курсы
Дата: 31.05.2013
Ответить


Не помогло. Пока не знаю что делать. То ли разбираться в кодах стокшарпа, то ли свой CandleManager реализовывать.
Автор топика
Спасибо:

Иван З.

Фотография
Курсы Автор статей Благотворитель
Дата: 31.05.2013
Ответить


А что не получилось то?
Я взял тики создал из них свечки по 1 секунде, установил
Код
_candleManager.Container.CandlesKeepTime = TimeSpan.FromMinutes(1);

сохраняю свечи серрии в коллекцию
Код
var W = candleSeries.GetCandles<Candle>().ToList();

каждый шаг смотрю, что с коллекцией, больше 60 свечей не показывает, и по времени они нормальные.
Или вы что то другое рассчитывали получить?

Спасибо:

vk37

Фотография
Курсы
Дата: 31.05.2013
Ответить


Иван З. Перейти
А что не получилось то?
Я взял тики создал из них свечки по 1 секунде, установил
Код
_candleManager.Container.CandlesKeepTime = TimeSpan.FromMinutes(1);

сохраняю свечи серрии в коллекцию
Код
var W = candleSeries.GetCandles<Candle>().ToList();

каждый шаг смотрю, что с коллекцией, больше 60 свечей не показывает, и по времени они нормальные.
Или вы что то другое рассчитывали получить?



Ограничение по количеству свечей работает. По прежнему большой расход памяти: 32ГБ потребляются полностью и, после того как 32ГБ исчерпаны, тестирование происходит очень медленно. Использую в тестировании BasketTrader. Включаю в него 10 экземпляров EmulationTrader. Тестирую период в 9 месяцев. Свечи строю двух таймфреймов: в несколько секунд и несколько минут.
Автор топика
Спасибо:

Moadip

Фотография
Автор статей Программист
Дата: 31.05.2013
Ответить


Прежде чем изобретать велосипед, неплохо бы погонять под профилировщиком типа этого.
Чтобы посмотреть куда память утекает.
На форуме уже поднимался этот вопрос и не раз, что течет.
Вроде фиксили, но возможно недофиксили.Laugh
Спасибо:

Иван З.

Фотография
Курсы Автор статей Благотворитель
Дата: 31.05.2013
Ответить


Тесту приходится перебирать все тики, за 9 месяцев. Их сколько? И сколько обычный foreach их перебирать будет?
Спасибо:

vk37

Фотография
Курсы
Дата: 31.05.2013
Ответить


Moadip Перейти
Прежде чем изобретать велосипед, неплохо бы погонять под профилировщиком типа этого.
Чтобы посмотреть куда память утекает.
На форуме уже поднимался этот вопрос и не раз, что течет.
Вроде фиксили, но возможно недофиксили.Laugh


Думал уже над этим. И профилировщик именно этот поставил. Я так понимаю, что чтобы что-то увидеть в профилировщике, нужны *.pdb файлы от стокшарп сборок. У меня их нет. Если только компилировать по открытым исходникам. Но они устаревшей версии. Пока не заморачивался с этим.
Автор топика
Спасибо:

vk37

Фотография
Курсы
Дата: 31.05.2013
Ответить


Иван З. Перейти
Тесту приходится перебирать все тики, за 9 месяцев. Их сколько? И сколько обычный foreach их перебирать будет?

Свечи строятся на основе MarketDepth. Может еще в этом проблема.

Автор топика
Спасибо:

vk37

Фотография
Курсы
Дата: 03.06.2013
Ответить


Moadip Перейти
Прежде чем изобретать велосипед, неплохо бы погонять под профилировщиком типа этого.
Чтобы посмотреть куда память утекает.
На форуме уже поднимался этот вопрос и не раз, что течет.
Вроде фиксили, но возможно недофиксили.Laugh

Память стала утекать, когда логику работы стратегии перестроил с использованием CandleManager и индикаторов (до этого без них обходился). Следующую модификацию стратегии стелал без CandleManager, но с индикаторами. И память все равно в моем случае утекала. Сейчас сделал свою упрощенную реализацию индикатора без реализации IIndicator. С памятью стало все нормально. В моем случае проблема с утечкой памяти была в использовании индикатора SimpleMovingAverage.
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 04.06.2013
Ответить


IIndicatorContainer
Спасибо:


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

loading
clippy