Язык программирования MQL5: Продвинутое использование торговой платформы MetaTrader 5. Тимур МашнинЧитать онлайн книгу.
(ExtPDIBuffer [i] <ExtNDIBuffer [i] &&ExtADXBuffer [i]> ExtADXBuffer [i-1]) {
ExtColorsBuffer [i] =3;
}
if (ExtPDIBuffer [i] <ExtNDIBuffer [i] &&ExtADXBuffer [i] <ExtADXBuffer [i-1]) {
ExtColorsBuffer [i] =4;
}
Откомпилируем код и получим индикатор с визуальным отображением сигналов на покупку и продажу:
В редакторе MQL5 откроем другой индикатор из папки Examples – RSI.
Данный индикатор имеет два ключевых уровня, которые определяют области перекупленности и перепроданности.
В коде индикатора эти уровни определены как свойства:
#property indicator_level1 30
#property indicator_level2 70
Давайте улучшим отображение этих уровней, добавив им цвета и стиля.
Для этого добавим свойства:
#property indicator_levelcolor Red
#property indicator_levelstyle STYLE_SOLID
#property indicator_levelwidth 1
Теперь индикатор будет выглядеть следующим образом:
Параметры ввода и переменные индикатора
Параметры ввода это те параметры индикатора, которые отображаются пользователю перед присоединением индикатора к графику во вкладке Inputs диалогового окна.
Например, для индикатора MACD:
Тут пользователь может поменять параметры индикатора по умолчанию, и индикатор присоединится к графику с уже измененными параметрами.
Также пользователь может поменять параметры индикатора после присоединения индикатора к графику, щелкнув правой кнопкой мышки на индикаторе и выбрав свойства индикатора.
В коде индикатора такие параметры задаются Input переменными с модификатором input, который указывается перед типом данных. Как правило, Input переменные объявляются сразу после свойств индикатора.
Например, для индикатора MACD:
// – - input parameters
input int InpFastEMA=12; // 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 переменных от других типов переменных состоит в том, что изменить их значение может только пользователь в диалоговом окне индикатора.
Если в коде индикатора попытаться изменить значение