Язык программирования MQL5: Продвинутое использование торговой платформы MetaTrader 5. Тимур Машнин
Чтение книги онлайн.

Читать онлайн книгу Язык программирования MQL5: Продвинутое использование торговой платформы MetaTrader 5 - Тимур Машнин страница 6

СКАЧАТЬ // Fast EMA period

      input int InpSlowEMA=26; // Slow EMA period

      input int InpSignalSMA=9; // Signal SMA period

      input ENUM_APPLIED_PRICE InpAppliedPrice=PRICE_CLOSE; // Applied price

      Здесь надо отметить то, что в диалоговом окне присоединения индикатора к графику отображаются не имена переменных, а комментарии к ним.

      Если убрать комментарии, входные параметры отобразятся следующим образом:

      Здесь уже отображаются имена переменных.

      Как вы сами, наверное, уже догадались, комментарии используются для отображения, чтобы облегчить пользователю понимание их предназначения.

      Здесь также видно, что входными параметрами могут быть не только отдельные переменные, но и перечисления, которые отображаются в виде выпадающих списков.

      Для индикатора MACD используется встроенное перечисление ENUM_APPLIED_PRICE, но можно также определить и свое перечисление.

      В справочнике приводится соответствующий пример:

      #property script_show_inputs

      // – - day of week

      enum dayOfWeek

      {

      S=0, // Sunday

      M=1, // Monday

      T=2, // Tuesday

      W=3, // Wednesday

      Th=4, // Thursday

      Fr=5, // Friday,

      St=6, // Saturday

      };

      // – - input parameters

      input dayOfWeek swapday=W;

      В этом примере команда #property script_show_inputs используется для скриптов, для индикаторов ее можно опустить.

      Основное отличие Input переменных от других типов переменных состоит в том, что изменить их значение может только пользователь в диалоговом окне индикатора.

      Если в коде индикатора попытаться изменить значение входного параметра, при компиляции возникнет ошибка:

      Поэтому, если вы хотите при расчетах использовать измененное значение входного параметра, нужно использовать промежуточную переменную:

      Помимо Input переменных MQL5-код использует локальные переменные, статические переменные, глобальные переменные и Extern переменные.

      С локальными переменными в принципе все понятно, они объявляются в блоке кода, например, в цикле или функции, там же инициализируются, и, после выполнения блока кода, память, выделенная под локальные переменные в программном стеке, освобождается.

      Тут особо надо отметить, что для локальных объектов, созданных с помощью оператора new, в конце блока кода нужно применить оператор delete для освобождения памяти.

      Глобальные переменные, как правило, объявляются после свойств индикатора, входных параметров и массивов буферов индикатора, перед функциями.

      Глобальные переменные видны в пределах всей программы, их значение может быть изменено в любом месте программы и память, выделяемая под глобальные переменные вне программного стека, освобождается при выгрузке программы.

      Здесь видно, что Input переменные это те же глобальные переменные, за исключением опции – их значение не может быть изменено в любом месте программы.

      Если глобальную или локальную переменную объявить СКАЧАТЬ