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

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

СКАЧАТЬ метка индикатора в окне Окно Данных, которое открывается в меню Вид терминала.

      Значения же свойств:

      #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 откроем другой индикатор из папки СКАЧАТЬ