Подробное объяснение iCustom - страница 5

 
William Roeder:
Продолжая #23 и инкапсулируя в функцию #26, я теперь показываю структуру, которая работает как на MT4, так и на MT5. (Для пост-билда 600, я изменил недопустимые точки(#29) в именах переменных, и привел ints в соответствие со стандартными перечислениями.)
Не скомпилировано, не проверено.Не скомпилировано, не проверено.

Здравствуйте, Уильям и Ко.

Если вы вызываете iCustom несколько раз для одного индикатора с одним и тем же символом и таймфреймом, выполняется ли полный код индикатора многократно или MQL4 делает что-то умное за кулисами, чтобы кэшировать результирующие буферы? Надеюсь, что последнее, особенно для более тяжелых индикаторов... Насколько я понимаю, MQL5 улучшает эту ситуацию за счет использования хэндлов, рассматривая индикаторы как открытие/закрытие файлов.

Более того, при программировании советников я заинтересован в использовании производных классов CIndicator из стандартной библиотеки, которые, вероятно, предлагают больший контроль (и расширяемость) по сравнению со встроенными функциями (iCustom, iMACD, iBands и т.д.), не говоря уже о том, что теоретически должны предлагать схожую семантику программирования на обеих платформах, MT4 и MT5. Однако я еще не пробовал сам и все еще озадачен существенными различиями в исходном кодемежду MQL4 и MQL5(Include/Indicators/*.mqh). Не будете ли вы так любезны высказать свои соображения о плюсах и минусах, исходя из вашего понимания и опыта работы с этими функциями/библиотеками?

 
Dima Diall: Если вы вызываете iCustom несколько раз для данного индикатора с одним и тем же символом и таймфреймом, то полный код индикатора выполняется многократно или MQL4 делает что-то умное за кулисами для кэширования результирующих буферов?
  1. Если конкретного графика символа/ТФ не существует, он незаметно создается.
  2. Если на графике символа/ТФ нет определенной комбинации индикатора/параметра(ов), она незаметно добавляется.
  3. Затем происходит чтение из запрашиваемого буфера[индекс].
 
William Roeder:
  1. Если конкретного графика символа/ТФ не существует, он незаметно создается.
  2. Если на графике символа/ТФ нет определенной комбинации индикатора/параметра(ов), она незаметно добавляется.
  3. Затем он считывается из запрашиваемого буфера[индекс].

Большое спасибо за быстрый ответ, Уильям - это действительно интересный подход... А при завершении работы советника такие невидимо созданные индикаторы автоматически уничтожаются? Я бы предположил, что да, по крайней мере в MQL4; возможно, в MQL5 нужно явно вызывать IndicatorRelease() для хэндлов индикаторов, используемых советником.

PS: У вас случайно нет опыта работы с классами CIndicator в стандартной библиотеке? Я искал в Интернете примеры кода и не смог найти ничего, кроме скудного справочного материала на http://www.mql5.com/en/docs/standardlibrary/technicalindicators/CIndicators/CIndicator (или встроенной справочной системы).

PPS: Есть ли способ включить уведомления по электронной почте на этом форуме? Я заглянул в настройки своего аккаунта и не смог ничего найти.

Documentation on MQL5: Standard Library
Documentation on MQL5: Standard Library
  • www.mql5.com
MQL5 Standard Library is written in MQL5 and is designed to facilitate writing programs (indicators, scripts, experts) for end users. Library provides convenient access to the most of the internal MQL5 functions.
 
  1. Поскольку неиспользуемые графики удаляются через десять минут, я предполагаю, что неиспользуемые индикаторы также удаляются.
  2. Я не изучал MT5. Посмотрите код в уроке.
  3. Не то чтобы я был в курсе. Я просто использую Firefox и дополнение Update Scanner.