Шрифт:
#property indicator_label2 "+DI"
#property indicator_label3 "-DI"
отображаются, как и было определено, во всплывающих подсказках к диаграммам индикатора и отображаются в окне Окно Данных.
В коде индикатора ADX объявленное количество буферов индикатора больше, чем количество графических построений.
Свойство indicator_buffers равно 6
А свойство indicator_plots равно 3
Сделано это для того, чтобы использовать три буфера индикатора для промежуточных расчетов.
Это массивы ExtPDBuffer, ExtNDBuffer и ExtTmpBuffer.
В функции OnCalculate индикатора, значения массивов ExtPDBuffer, ExtNDBuffer, ExtTmpBuffer рассчитываются на основе загруженной ценовой истории, а затем уже на их основе рассчитываются значения массивов ExtADXBuffer, ExtPDIBuffer, ExtNDIBuffer, которые используются для отрисовки диаграмм индикатора.
Как уже было сказано, буферы индикатора для промежуточных вычислений здесь объявляются с константой INDICATOR_CALCULATIONS, так как заранее неизвестен размер загружаемой ценовой истории.
Теперь, в описании индикатора ADX сказано, что:
Сигнал на покупку формируется тогда, когда +DI поднимается выше – DI и при этом сам ADX растет.
В момент, когда +DI расположен выше – DI, но сам ADX начинает снижаться, индикатор подает сигнал о том, что рынок «перегрет» и пришло время фиксировать прибыль.
Сигнал на продажу формируется тогда, когда +DI опускается ниже – DI и при этом ADX растет.
В момент, когда +DI расположен ниже – DI, но сам ADX начинает снижаться, индикатор подает сигнал о том, что рынок «перегрет» и пришло время фиксировать прибыль.
Давайте, модифицируем код индикатора ADX таким образом, чтобы раскрасить диаграмму ADX в четыре цвета, которые соответствуют описанным выше четырем торговым сигналам.
В качестве первого шага изменим свойство indicator_type1 на DRAW_COLOR_LINE.
Далее увеличим на единицу значение свойства indicator_buffers на значение 7.
Объявим массив для буфера цвета ExtColorsBuffer.
И в функции OnInit свяжем объявленный массив с буфером цвета с помощью функции SetIndexBuffer.
Тут есть хитрость – индекс буфера цвета должен следовать за индексом буфера значений индикатора.
Если, например, связать массив ExtColorsBuffer с буфером с индексом 6, тогда индикатор не будет корректно отрисовываться.
В свойство indicator_color1 добавим цветов.
И увеличим толщину линии с помощью свойства indicator_width1.
В функции OnCalculate в конце перед закрывающей скобкой цикла for добавим код заполнения буфера цвета значениями согласно описанной нами стратегии.
Откомпилируем код и получим индикатор с визуальным отображением сигналов на покупку и продажу:
В редакторе MQL5 откроем другой индикатор из папки Examples – RSI.
Данный индикатор имеет два ключевых уровня, которые определяют области перекупленности и перепроданности.
В коде индикатора эти уровни определены как свойства:
#property indicator_level1 30
#property indicator_level2 70
Давайте улучшим отображение этих уровней, добавив им цвета и стиля.
Для этого добавим свойства:
#property indicator_levelcolor Red
#property indicator_levelstyle STYLE_SOLID
#property indicator_levelwidth 1
Теперь индикатор будет выглядеть следующим образом.
Параметры ввода и переменные индикатора
Параметры ввода – это те параметры индикатора, которые отображаются пользователю перед присоединением индикатора к графику во вкладке Входные параметры диалогового окна.
Например, для индикатора MACD – это периоды скользящих средних и тип применяемой цены.
Здесь пользователь может поменять параметры индикатора по умолчанию, и индикатор присоединится к графику с уже измененными параметрами.
Также пользователь может поменять параметры индикатора после присоединения индикатора к графику, щелкнув правой кнопкой мышки на индикаторе и выбрав свойства индикатора.