Вызываешь из эксперта индикатор с определенным набором параметров, он загружается в память, вызываешь опять этот индикатор с другим набором параметров, он тоже загружается в память и так для каждого уникального набора параметров. Могут быт случаи, когда какойто индикатор, или индикатор с определенным набором параметров может потребоваться только один раз, а память будет занята. О чень актуальна потребность в этом!!! Нужно что-нибудь подобное функци HideTestIndicator(), наприме UnloadLastIndicator(), которая будет выгружать последний из вызванных индикаторов.
Вызываешь из эксперта индикатор с определенным набором параметров, он загружается в память, вызываешь опять этот индикатор с другим набором параметров, он тоже загружается в память и так для каждого уникального набора параметров. Могут быт случаи, когда какойто индикатор, или индикатор с определенным набором параметров может потребоваться только один раз, а память будет занята. О чень актуальна потребность в этом!!! Нужно что-нибудь подобное функци HideTestIndicator(), наприме UnloadLastIndicator(), которая будет выгружать последний из вызванных индикаторов.
Если индикатор в эксперте не вызывается, то он даже не расчитывается и потребляет только память. Но вот если выгрузить его, а потом снова загружать через тик или два, то потери производительности будут катастрофическими. Первоначальная загрузка и первый полновесный пересчет индикатора - это очень дорогая операция.
Как решение - изначально планируйте и оптимизируйте схему использования индикаторов.
Принудительно в MQL4 нельзя выгрузить никакую программу.
Но можно позволить программам общаться через GV-переменные.
Например, эксперт может изменить значение GV-переменной, индикатор
это значение считает и обнулит значения своих индикаторных
массивов, в результате чего все индикаторные линии, например,
отобразятся на нуле. При этом индикатор будет отавться в работе
до тех пор, пока его не выгрузят вручную. Кроме того, само явление
может произойти либо на текущем, либо на следующем тике,- в зависимости
от того, будет ли обращение из индикатора к GV-переменной до того,
как её успеет изменить эксперт или после.
Хочется сделать красиво. Время прошло и подокно индикатора закрывается.
Вызываешь из эксперта индикатор с определенным набором параметров, он загружается в память, вызываешь опять этот индикатор с другим набором параметров, он тоже загружается в память и так для каждого уникального набора параметров. Могут быт случаи, когда какойто индикатор, или индикатор с определенным набором параметров может потребоваться только один раз, а память будет занята. О чень актуальна потребность в этом!!! Нужно что-нибудь подобное функци HideTestIndicator(), наприме UnloadLastIndicator(), которая будет выгружать последний из вызванных индикаторов.
Если индикатор в эксперте не вызывается, то он даже не расчитывается и потребляет только память. Но вот если выгрузить его, а потом снова загружать через тик или два, то потери производительности будут катастрофическими. Первоначальная загрузка и первый полновесный пересчет индикатора - это очень дорогая операция.
Как решение - изначально планируйте и оптимизируйте схему использования индикаторов.
Выход из любой ситации всегда есть.
Из практики:
Случай первый - расчет трейлинга по индикатору уровней. Период индикатора меняется в зависимости от срока существования ордера. Срок существования ордера мог быть достаточно большим, а держать в памяти все индиаторы с период от 1 до N смысла нет (и комп не выдерживал). Было решено переносом расчета индиктора в эксперт. Выигрыш в производительности не был получен, так как сам индиктор просчитывался на количество баров не более требуемого периода. Объем работы был выполнен двойной - написание индикатора, что бы визуально убедиться (или убедить клиента) в правильной работе и перенос этого индиктора в экспепрта.
Случай второй - эксперт с автооптимизатором. Тоже решается переносом
индикатора в эксперт. Тоже двойная работа - индикатор и перенос
индикатора в эксперт. Если в индикаторе используется экспонециальное
сглаживание, то это еще очень много лишней работы. MQL4 итак очень
много времени требует на программирование стратегии. Есть еще
одно неудобство - ограниченное количества параметров функции
iCustom, но это уже другая тема.
ps. Все это не я придумал:-)
По поводу инициализации я думал, что-то типа такого: ArrayInitialize(USD,0.0); и т.д.
Хочется сделать красиво. Время прошло и подокно индикатора закрывается.
А вот это зачем?
Например, ограничить срок использования индикатора/эксперта.
Это решается имеющимися стредствам и очень просто. Лучше иметь возможноть открыть алертное окно со вставленным в него изображением, например фиги, это будет более эффектно.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования