Советник медленно, но верно увеличивает съедаемый объем оперативной памяти. Какие самые очевидные причины ? - страница 2

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Да, я закомментил индикаторы iCustom и прирост занимаемой оперативной памяти прекратился. В коде индикаторов нашел строчки начинающиеся на input и перенес их в советника. Объявил перемененные и перечислил их в iCustom в той же последовательности и тем же типом, что и в коде индикатора. Получилось например, это:
uchar MinAmplitudeNP=20;
uchar MinMotionNP=0;
bool UseSmallerTFforEBNP=true;
ZZHandle=iCustom(NULL,PERIOD_M1,"Downloads\\AlexSTAL_ZigZagProf",ExtPeriodNP,MinAmplitudeNP,MinMotionNP,UseSmallerTFforEBNP);
Первые четыре строчки скопировал из кода индикатора.
Это не помогло, потребление памяти все росло. Я добавил IndicatorRelease(ZZHandle) в конце OnTick() и потребляемая память перестала расти, но выросла нагрузка на процессор - я так понимаю, он каждый тик пересчитывает заново значения индикатора в каждом баре.
Вроде, проблема с памятью решена, но решена крайне криво. Потому, добавлю вопрос - что понимается под "кол-во и тип передаваемых в iCustom параметров" ?
Уже спасибо.
Про параметры поняли все правильно.
А хендл создаете в OnInit (однократно)? Если да, то, возможно, проблема в индикаторе.
IndicatorRelease делать не нужно. Он как раз для случая многих копий индикатора с разными параметрами, когда каждый из них нужен однократно.
Он индикатор на каждом тике похоже создает.
Да, все так и оказалось - создавал индикатор на каждом тике. Засунул заполнение хэндлов в OnInit() и проблема решилась.
Спасибо за помощь.