iCustom - как избежать перегрузки уже загруженного индикатора? - страница 4

 
Rosh >>:

Да, именно так.

А разве в MT4 не так?

 

Действительно, Вы оказались правы. При загрузке slave (тот, кто получает данные через iCustom) и наличии на этот момент на ТФ мастер-индикатора (источник данных), создаются фантомные копии Мастер-индикатора.

При компилации то-же самое. Я принимал за перегрузку фантомную копию Мастера и по ошибке принимал ее за основную

Я был не прав. Прошу прощения. (((

 

Получается, что если индикатор-источник критичен к ресурсам ЦПУ и/или памяти, iCustom нужно пользоваться очень аккуратно иначе можно получить хороший завис.

2 Rosh : подскажите пожалуйста, в МТ5 можно будет получать доступ к данным индикатора мастер-копии, а не к фантомным копиям, сгенерированным через вызова iCustom из slave-индикаторов?

 
Henry_White >>:


2 Rosh : подскажите пожалуйста, в МТ5 можно будет получать доступ к данным индикатора мастер-копии, а не к фантомным копиям, сгенерированным через вызова iCustom из slave-индикаторов?

В справке по MQL5

Функции для работы с техническими индикаторами

Все функции типа iMA, iAC, iMACD, iIchimoku создают в глобальном кеше клиентского терминала копию соответствующего технического индикатора. Если копия индикатора с этими параметрами уже существует, то новая копия не создается, а увеличивается счетчик ссылок на данную копию.


Эти функции возвращают хэндл соответствующей копии индикатора. Используя этот хэндл в дальнейшем можно получать данные, рассчитанные соответствующим индикатором. Данные соответствующего буфера (технические индикаторы содержат рассчитанные данные в своих внутренних буферах, которых, в зависимости от индикатора, может быть от 1 до 5) можно копировать в mql5-программу при помощи функции CopyBuffer().


Пользовательские индикаторы могут содержать до 512 индикаторных буферов, содержимое которых также можно получать при помощи функции CopyBuffer(), предварительно получив хендл пользовательского индикатора функцией iCustom().


Примечание. Многократное обращение к функции индикатора с одними и теми же параметрами в пределах одной mql5-программы не приводит к многократному увеличению счетчика ссылок, счетчик будет увеличен всего один раз на 1. Однако рекомендуется получать хэндлы индикаторов в функции OnInit() или в конструкторе класса (лучше всё-таки в OnInit(), так как функции, явно освобождающей хэндл нету), с последующим использованием полученных хэндлов в остальных функциях. Счетчик ссылок уменьшается при деинициализации mql5-программы.


Все индикаторные функции имеют как минимум 2 параметра - символ и период. Значение символа NULL означает текущий инструмент, значение периода 0 означает текущий таймфрейм.