Подождать "некоторое время" (по заявлениям разработчиков). Память, используемая графиками и индикаторами, не освобождается сразу после прекращения работы программы, которая из вызвала. Они продолжают работать на тот случай, если к ним снова обратится какая-то программа. После истечения этого "некоторого времени" без обращений к данным память освобождается. Можно попытаться опытным путем вычислить это время.
Спасибо, тогда попробую каждую итерацию замедлить. Посмотрим что получится.
По времени не удалось сбросить ( Sleep на 10 минут). Но я заметил что, как только Free Memory=0, так начинается деинициализация индикатора, получается инициализации с новыми параметрами и деинициализация с старыми параметрами (наверно). Вообще-то по справочнику деинициализация должна произойти сразу же после смены входных параметров но как видно здесь так не получается, только когда Free Memory=0.
Пытаюсь оптимизировать Memory usage на iCustom. Пока ничего не получается. Memory на каждой итерации добавляется и не знаю как сбросить. Memory сбрасывается только после завершение цикла. По экспериментам заметил, если принудительно останавливать Script, то в таком случае Memory даже не сбрасывается. Как сбросить Memory на каждой итерации?
Очень интересно, как вы пытаетесь это делать, если какие-либо средства для этого отсутствуют вообще?
Очень интересно, как вы пытаетесь это делать, если какие-либо средства для этого отсутствуют вообще?
Как мне посоветовали по времени посмотреть так я использовал такой код:
//+------------------------------------------------------------------+ void OnStart() { //--- double Output1,Output0; for(int i=3; i<=399; i+=1) { Output1=iCustom(NULL,0,"Bulls.ex4",i,0,0); Print("-------------------i: ",i," Output0: ",Output0,"Output1: ",Output1); if(i%200==0) { Print("---- -----i: ",i," Wait some time "); uint minits=10*60; Sleep(minits*1000); } } PlaySound("alert2.wav"); } //+------------------------------------------------------------------+
До 200 итерации нарастил память (Memory) потом ждал и смотрел когда упадет память. Но так и не упала.
Меняя время
задержки я заметил что всегда после 258 итерации начинается деинициализация индикатора (даже без задержки тоже), получается
последовательно деинициализация и инициализация. Тогда я заметил что, как только Free Memory=0 так и все происходит. У меня RAM 8G,
наверно с 16G деинициализация только после завершение цикла началось.
Пока нет соображении еще как сбросить.
Выгрузить скрипт и подождать 5 минут.
Спасибо, но данный способ мне не поможет. В цикле перебирается параметры которые потом сортируется. Здесь
можно посмотреть как это выглядит. Мои компьютер может обрабатывать 70К баров (мне хватает), если больше то memory error, не хочется если у
клиента слабенький компьютер то вылетал на меньше баров.
- www.youtube.com
Спасибо, но данный способ мне не поможет. В цикле перебирается параметры которые потом сортируется. Здесь
можно посмотреть как это выглядит. Мои компьютер может обрабатывать 70К баров (мне хватает), если больше то memory error, не хочется если у
клиента слабенький компьютер то вылетал на меньше баров.
Правильнее всего перенести расчеты в советника/скрипт и оптимизировать в нем.
Но и вариант с выгрузкой срипта я бы не отбрасывал, просто это должен быть отдельный скрипт (загружать его из основного).
Спасибо, но данный способ мне не поможет. В цикле перебирается параметры которые потом сортируется. Здесь
можно посмотреть как это выглядит. Мои компьютер может обрабатывать 70К баров (мне хватает), если больше то memory error, не хочется если у
клиента слабенький компьютер то вылетал на меньше баров.
А может эксперта сделать и оптимизировать параметры обычным образом? Сделки не делать, а в деините писать в файл результат, потом обработать их.
А может эксперта сделать и оптимизировать параметры обычным образом? Сделки не делать, а в деините писать в файл результат, потом обработать их.
Я пока хочу ещё подумать над индикатором, так как здесь есть преимущество - за один подход могу и пройтись по всем валютным парам и по
таймфреймам.
Я думал над изменением размера буфера после вывода результатов но по справочнику этот вариант отпадает: "Для индикаторных буферов
все операции по изменению размера производит исполняющая подсистема терминала.". А может есть вариант как после вывода результатов
вообще уничтожить этот буфер? Пока только не нашёл способ как это сделать.
Но и вариант с выгрузкой срипта я бы не отбрасывал, просто это должен быть отдельный скрипт (загружать его из основного).
Надо будет подумать.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Пытаюсь оптимизировать Memory usage на iCustom. Пока ничего не получается. Memory на каждой итерации добавляется и не знаю как сбросить. Memory сбрасывается только после завершение цикла. По экспериментам заметил, если принудительно останавливать Script, то в таком случае Memory даже не сбрасывается. Как сбросить Memory на каждой итерации?