Свойства программ (#property)

У каждой mql5-программы можно указать дополнительные специфические параметры #property, которые помогают клиентскому терминалу правильно обслуживать программы без необходимости их явного запуска. В первую очередь это касается внешних настроек индикаторов. Свойства, описанные во включаемых файлах, полностью игнорируются. Свойства необходимо задавать в главном mq5-файле.

#property идентификатор значение

Компилятор запишет в настройках выполняемого модуля объявленные значения.
 

Константа

Тип

Описание

icon

string

Путь к файлу с картинкой, которая будет показываться для программы EX5. Правила указания пути такие же, как и для ресурсов. Свойство должно указываться в главном модуле с исходным кодом MQL5. Файл иконки должен быть в формате ICO.

link

string

Ссылка на сайт компании-производителя

copyright

string

Название компании-производителя

version

string

Версия программы, не более 31 символа

description

string

Краткое текстовое описание mql5-программы. Может присутствовать несколько description, каждый из которых описывает одну строку текста. Общая длина всех description не может превышать 511 символов с учетом переводов строк

stacksize

int

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

При запуске скрипта или эксперта на графике выделяется стек не менее 8Мб, для индикаторов свойство не работает  - стек всегда фиксированного объема в 1Мб.

При запуске в тестере программе всегда выделяется стек в размере 16 Мб.

library

 

Библиотека; не назначается никакой стартовой функции, функции с модификатором export можно импортировать в других mql5-программах

indicator_applied_price

int

Задает значение по умолчанию для поля "Apply to". Можно задавать одно из значений перечисления ENUM_APPLIED_PRICE. Если свойство не задано, то по умолчанию применяется значение PRICE_CLOSE

indicator_chart_window

 

Выводить индикатор в окно графика

indicator_separate_window

 

Выводить индикатор в отдельное окно

indicator_height

int

Фиксированная высота подокна индикатора в пикселях (свойство INDICATOR_HEIGHT)

indicator_buffers

int

Количество буферов для расчета индикатора

indicator_plots

int

Количество графических серий в индикаторе

indicator_minimum

double

Нижнее ограничение шкалы отдельного окна индикатора

indicator_maximum

double

Верхнее ограничение шкалы отдельного окна индикатора

indicator_labelN

string

Задает метку для N-ой графической серии, отображаемую в окне DataWindow. Для графических серий, требующих несколько индикаторных буферов (DRAW_CANDLES, DRAW_FILLING и другие), имена меток задаются через разделитель ';'.

indicator_colorN

color

Цвет для вывода линии N, где N - номер графической серии; нумерация с 1

indicator_widthN

int

Толщина линии в графической серии, где N - номер графической серии; нумерация с 1

indicator_styleN

int

Стиль линии в графической серии, указываемый с помощью значения из ENUM_LINE_STYLE. N - номер графической серии, нумерация с 1

indicator_typeN

int

Вид графического построения, указываемый с помощью значения из ENUM_DRAW_TYPE. N - номер графической серии, нумерация с 1

indicator_levelN

double

Горизонтальный уровень N в отдельном окне индикатора

indicator_levelcolor

color

Цвет горизонтальных уровней индикатора

indicator_levelwidth

int

Толщина горизонтальных уровней индикатора

indicator_levelstyle

int

Стиль горизонтальных уровней индикатора

script_show_confirm

 

Выводить окно подтверждения перед запуском скрипта

script_show_inputs

 

Выводить окно со свойствами перед запуском скрипта и запретить вывод окна подтверждения

tester_indicator

string

Имя пользовательского индикатора в формате "имя_индикатора.ex5". Необходимые для тестирования индикаторы определяются автоматически из вызова функций iCustom(), если соответствующий параметр задан константной строкой. Для остальных случаев (использование функции IndicatorCreate() или использование неконстантной строки в параметре, задающем имя индикатора) необходимо данное свойство

tester_file

string

Имя файла для тестера с указанием расширения, заключенное в двойные кавычки (как константная строка). Указанный файл будет передан тестеру в работу. Входные файлы для тестирования, если необходимы, должны указываться всегда

tester_library

string

Имя библиотеки с расширением, заключенное в двойные кавычки. Библиотека может быть как с расширением dll, так и с расширением ex5. Необходимые для тестирования библиотеки определяются автоматически. Однако если какая-либо библиотека используется пользовательским индикатором, то необходимо использовать данное свойство

tester_set

string

Имя set-файла со значениями и шагом входных параметров. Указанный файл будет передан тестеру в работу перед началом тестирования или оптимизации. Имя файла необходимо указывать с расширением и в двойных кавычках как константную строку.

 

Если в названии set-файла указать имя эксперта и номер версии как "<expert_name>_<number>.set", то он автоматически добавится в меню загрузки версий параметров под номером версии <number>. Например, имя "MACD Sample_4.set" означает, что это set-файл для эксперта "MACD Sample.mq5" с номером версии равным 4.

 

Для изучения формата рекомендуем вручную сохранить настройки тестирования/оптимизации в тестере стратегий и затем открыть созданный таким образом set-файл.

tester_no_cache

string

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

 

Но для некоторых задач – например, при математических вычислениях – может потребоваться проводить расчеты независимо от наличия готовых результатов в кеше оптимизации. В этом случае в файл необходимо включить свойство tester_no_cache. При этом сами результаты тестирования все равно будут сохраняться в кеше, чтобы можно было в тестере стратегий посмотреть все данные по выполненным проходам.

tester_everytick_calculate

string

В тестере стратегий индикаторы рассчитываются только при обращении к ним за данными – то есть только в тот момент, когда запрашиваются значения индикаторных буферов. Это даёт существенное ускорение при тестировании и оптимизации, если не требуется получать значения индикатора на каждом тике.

 

Указание свойства tester_everytick_calculate позволяет при тестировании принудительно включить режим расчета индикатора на каждом тике.

 

Индикаторы в тестере стратегий также принудительно считаются на каждом тике в следующих случаях:

 

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

optimization_chart_mode

string

Указывает тип графика и имена двух входных параметров, которые будут использоваться для визуализации результатов оптимизации. Например, "3d, InpX, InpY" означает, что будет показан 3D-график с координатными осями на основе значений перебираемых параметров  InpX и InpY.  Таким образом, с помощью данного свойства можно прямо в коде указывать параметры, которые  будут использоваться для показа графика оптимизации и тип самого графика.

Возможные варианты:

  • "3d, input_parameter_name1, input_parameter_name2" – объемный 3D-график визуализации, который можно вращать, приближать, отдалять. Строится по двум входным параметрам.
  • "2d, input_parameter_name1, input_parameter_name2" – плоский график в виде сетки, каждая клетка которого закрашена цветом в зависимости от результата. Строится по двум входным параметрам.
  • "1d, input_parameter_name1, input_parameter_name2" – линейный график, в котором результаты отсортированы по указанному параметру. Каждый проход отбражается в виде точки, строится по одному входному параметру.
  • "0d, input_parameter_name1, input_parameter_name2" – обычный график с результатами, отсортированными в порядке поступления результата прохода. Каждый проход отбражается в виде точки. Не требует указания параметров, но указанные параметры будут использоваться при ручном переключении на другой тип графика.

Можно указать только тип графика и не указывать один или два входных параметра – терминал в таком случае сам выберет необходимые параметры для показа графика оптимизации.

Пример задания описания и номера версии

#property version     "3.70"      // текущая версия эксперта
#property description "ZigZag универсальный с паттернами Песавенто"
#property description "В настоящий момент в индикатор встроены несколько ZigZag с различными алгоритмами"
#property description "Имеется возможность встраивать большое количество других индикаторов, показывающих максимумы и "
#property description "минимумы и автоматически строить от этих минимумов и максимумов различные графические инструменты"

Пример отображения описания и версии при запуске программы

 

Пример указания отдельной метки для каждого индикаторного буфера ("C open;C high;C low;C close")

#property indicator_chart_window
#property indicator_buffers 4
#property indicator_plots   1
#property indicator_type1   DRAW_CANDLES
#property indicator_width1  3
#property indicator_label1  "С open;С high;С low;С close"

Пример отображения метки для каждого индикаторного буфера