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

Читать онлайн книгу.

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


Скачать книгу
indicator_label3 "-DI»

      Если мы в MetaTrader 5 попытаемся присоединить данный индикатор к графику, во-первых, откроется диалоговое окно индикатора, которое во вкладке Common отобразит значения свойств copyright, link и description:

      а во вкладке Colors отобразит значения свойств indicator_label, indicator_color, indicator_width, indicator_style:

      Само же название индикатора определяется именем файла индикатора.

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

      При наведении курсора на название индикатора в окне Navigator терминала всплывает подсказка, отображающая свойство copyright.

      После присоединения индикатора свойство:

      #property indicator_label1 «ADX»

      работать не будет, так как в функции OnInit () с помощью вызова функции:

      string short_name=«ADX (»+string (ExtADXPeriod) +»)»;

      IndicatorSetString (INDICATOR_SHORTNAME, short_name);

      изменена подпись индикатора:

      А вызовом функции:

      PlotIndexSetString (0,PLOT_LABEL, short_name);

      изменена метка индикатора в окне Data Window:

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

      #property indicator_label2 "+DI»

      #property indicator_label3 "-DI»

      отображаются, как и было определено, во всплывающих подсказках к диаграммам индикатора и отображаются в окне Data Window.

      В коде индикатора ADX объявленное количество буферов индикатора больше, чем количество графических построений:

      #property indicator_buffers 6

      #property indicator_plots 3

      Сделано это для того, чтобы использовать три буфера индикатора для промежуточных расчетов:

      SetIndexBuffer (0,ExtADXBuffer);

      SetIndexBuffer (1,ExtPDIBuffer);

      SetIndexBuffer (2,ExtNDIBuffer);

      SetIndexBuffer (3,ExtPDBuffer, INDICATOR_CALCULATIONS);

      SetIndexBuffer (4,ExtNDBuffer, INDICATOR_CALCULATIONS);

      SetIndexBuffer (5,ExtTmpBuffer, INDICATOR_CALCULATIONS);

      В функции OnCalculate индикатора, значения массивов ExtPDBuffer, ExtNDBuffer, ExtTmpBuffer рассчитываются на основе загруженной ценовой истории, а затем уже на их основе рассчитываются значения массивов ExtADXBuffer, ExtPDIBuffer, ExtNDIBuffer, которые используются для отрисовки диаграмм индикатора.

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

      В описании индикатора ADX сказано, что:

      Сигнал на покупку формируется тогда, когда +DI поднимается выше – DI и при этом сам ADX растет.

      В момент, когда +DI расположен выше – DI, но сам ADX начинает снижаться, индикатор подает сигнал о том, что рынок «перегрет» и пришло время фиксировать прибыль.

      Сигнал на продажу формируется тогда, когда +DI опускается ниже – DI и при этом ADX растет.

      В момент, когда +DI расположен ниже – DI, но сам ADX начинает снижаться, индикатор подает сигнал о том, что рынок «перегрет» и пришло время фиксировать прибыль.

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

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

      #property indicator_type1 DRAW_COLOR_LINE

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

      #property indicator_buffers 7

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

      double ExtColorsBuffer [];

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

      SetIndexBuffer (0,ExtADXBuffer);

      SetIndexBuffer


Скачать книгу