Чтение онлайн

на главную - закладки

Жанры

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

а во вкладке 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 (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] <ExtADXBuffer [i-1]) {

ExtColorsBuffer [i] =2;

}

if (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;

}

Откомпилируем код и получим индикатор с визуальным отображением сигналов на покупку и продажу:

<
Поделиться:
Популярные книги

Мастер...

Чащин Валерий
1. Мастер
Фантастика:
героическая фантастика
попаданцы
аниме
6.50
рейтинг книги
Мастер...

Жених из гроба

Сотис Майя
1. Гробокопательница
Фантастика:
юмористическое фэнтези
сказочная фантастика
фэнтези
5.00
рейтинг книги
Жених из гроба

Ищу жену с прицепом

Рам Янка
2. Спасатели
Любовные романы:
современные любовные романы
6.25
рейтинг книги
Ищу жену с прицепом

Гримуар тёмного лорда I

Грехов Тимофей
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Гримуар тёмного лорда I

Заклятие предков

Прозоров Александр Дмитриевич
3. Ведун
Фантастика:
фэнтези
альтернативная история
8.49
рейтинг книги
Заклятие предков

Крепость над бездной

Лисина Александра
4. Гибрид
Фантастика:
боевая фантастика
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Крепость над бездной

Рота Его Величества

Дроздов Анатолий Федорович
Новые герои
Фантастика:
боевая фантастика
8.55
рейтинг книги
Рота Его Величества

Экспансия: Сотрудничество. Том 5

Белов Артем
5. Планетарный десант
Фантастика:
боевая фантастика
аниме
5.00
рейтинг книги
Экспансия: Сотрудничество. Том 5

Отверженный III: Вызов

Опсокополос Алексис
3. Отверженный
Фантастика:
фэнтези
альтернативная история
7.73
рейтинг книги
Отверженный III: Вызов

Князь Серединного мира

Земляной Андрей Борисович
4. Страж
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Князь Серединного мира

Возвышение Меркурия. Книга 8

Кронос Александр
8. Меркурий
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 8

Эволюционер из трущоб. Том 5

Панарин Антон
5. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Эволюционер из трущоб. Том 5

Локки 7. Потомок бога

Решетов Евгений Валерьевич
7. Локки
Фантастика:
аниме
эпическая фантастика
фэнтези
5.00
рейтинг книги
Локки 7. Потомок бога

Черный Маг Императора 4

Герда Александр
4. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 4