После компиляции наш индикатор автоматически появится в торговом терминале и мы сможем присоединить его к графику финансового инструмента.
Свойства индикатора
Давайте более подробно рассмотрим свойства индикатора.
Цитата из справочника:
Свойства программ (#property). У каждой mql5-программы можно указать дополнительные специфические параметры #property, которые помогают клиентскому терминалу правильно обслуживать программы без необходимости их явного запуска. В первую очередь это касается внешних настроек индикаторов. Свойства, описанные во включаемых файлах, полностью игнорируются. Свойства необходимо задавать в главном mq5-файле: #property идентификатор значение.
Включаемый файл указывается с помощью ключевого слова #include, после которого следует путь к включаемому файлу.
Включаемый файл — это часто используемый блок кода. Такие файлы могут включаться в исходные тексты экспертов, скриптов, пользовательских индикаторов и библиотек на этапе компиляции. Использование включаемых файлов более предпочтительно, чем использование библиотек, из-за дополнительных накладных расходов при вызове библиотечных функций.
Включаемые файлы могут находиться в той же директории, что и исходный файл, в этом случае используется директива #include с двойными кавычками. Другое место хранения включаемых файлов — в директории <каталог_терминала> \MQL5\Include, в этом случае используется директива #include с угловыми скобками.
В качестве первого свойства индикатора, как правило, указывается имя разработчика, например:
#property copyright
Далее указывается ссылка на сайт разработчика:
#property link
После этого идет описание индикатора, каждая строка которого обозначается с помощью идентификатора description, например:
#property description «Average Directional Movement Index»
Далее указывается версия индикатора:
#property version «1.00»
На этом, как правило, объявление общих свойств индикатора заканчивается.
Индикатор может появляться в окне терминала двумя способами — на графике символа или в отдельном окне под графиком символа.
Свойство:
#property indicator_chart_window
Определяет отрисовку индикатора на графике символа.
А свойство:
#property indicator_separate_window
Определяет вывод индикатора в отдельное окно.
Одно из самых важных свойств индикатора — это количество буферов для расчета индикатора, например:
#property indicator_buffers 6
Данное свойство тесно связано с двумя другими свойствами индикатора — количеством графических построений и видом графических построений.
Количество графических построений это количество цветных диаграмм, составляющих индикатор.
Например, для индикатора ADX:
#property indicator_plots 3
Индикатор состоит из трех диаграмм (линий) — индикатора направленности +DI, индикатора направленности — DI и самого индикатора ADX.
Вид графических построений — это та графическая форма, из которой составляется график индикатора.
Например, для индикатора ADX:
#property indicator_type1 DRAW_LINE
#property indicator_type2 DRAW_LINE
#property indicator_type3 DRAW_LINE
Таким образом, каждая диаграмма индикатора ADX — это линия.
Графическая форма сопоставляется с графическим построением с помощью номера графического построения, следующего после indicator_type.
Цвет каждого графического построения индикатора задается свойством indicator_colorN.
Например, для индикатора ADX:
#property indicator_color1 LightSeaGreen
#property indicator_color2 YellowGreen
#property indicator_color3 Wheat
Цвет сопоставляется с графическим построением с помощью номера графического построения, следующего после indicator_color.
В справочнике MQL5 есть таблица Web-цветов для определения цвета графического построения.
Вернемся теперь к количеству буферов для расчета индикатора.
Так как данные для построения каждой диаграммы индикатора берутся из своего буфера индикатора, количество заявленных буферов индикатора не может быть меньше, чем заявленное число графических построений индикатора.
Сразу же возникает вопрос, каким образом конкретный массив, представляющий буфер индикатора, сопоставляется с конкретным графическим построением индикатора.
Делается это в функции обратного вызова OnInit () с помощью вызова функции SetIndexBuffer.
Например, для индикатора ADX: