Размер шрифта
-
+

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

Давайте, модифицируем код индикатора ADX таким образом, чтобы раскрасить диаграмму ADX в четыре цвета, которые соответствуют описанным выше четырем торговым сигналам.

В качестве первого шага изменим свойство indicator_type1:

#property indicator_type1 DRAW_COLOR_LINE

Далее увеличим на единицу значение свойства indicator_buffers:

#property indicator_buffers 7

Объявим массив для буфера цвета:

double ExtColorsBuffer [];

В функции OnInit () свяжем объявленный массив с буфером цвета:

SetIndexBuffer (0,ExtADXBuffer);

SetIndexBuffer (1,ExtColorsBuffer, INDICATOR_COLOR_INDEX);

SetIndexBuffer (2,ExtPDIBuffer);

SetIndexBuffer (3,ExtNDIBuffer);

SetIndexBuffer (4,ExtPDBuffer, INDICATOR_CALCULATIONS);

SetIndexBuffer (5,ExtNDBuffer, INDICATOR_CALCULATIONS);

SetIndexBuffer (6,ExtTmpBuffer, INDICATOR_CALCULATIONS);

Тут есть хитрость – индекс буфера цвета должен следовать за индексом буфера значений индикатора. Если, например, связать массив ExtColorsBuffer с буфером с индексом 6, тогда индикатор не будет корректно отрисовываться.

В свойство indicator_color1 добавим цветов:

#property indicator_color1 LightSeaGreen, clrBlue, clrLightBlue, clrRed, clrLightPink

Увеличим толщину линии:

#property indicator_width1 2

В функции OnCalculate в конце перед закрывающей скобкой цикла for добавим код:

ExtColorsBuffer [i] =0;

if (ExtPDIBuffer [i]> ExtNDIBuffer [i] &&ExtADXBuffer [i]> ExtADXBuffer [i-1]) {

ExtColorsBuffer [i] =1;

}

if (ExtPDIBuffer [i]> ExtNDIBuffer [i] &&ExtADXBuffer [i]

ExtColorsBuffer [i] =2;

}

if (ExtPDIBuffer [i] ExtADXBuffer [i-1]) {

ExtColorsBuffer [i] =3;

}

if (ExtPDIBuffer [i]

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

Страница 6