Свойства программ (#property)
У каждой mql5-программы можно указать дополнительные специфические параметры #property, которые помогают клиентскому терминалу правильно обслуживать программы без необходимости их явного запуска. В первую очередь это касается внешних настроек индикаторов. Свойства, описанные во включаемых файлах, полностью игнорируются. Свойства необходимо задавать в главном mq5-файле.
#property идентификатор значение |
Компилятор запишет в настройках выполняемого модуля объявленные значения.
Константа | Тип | Описание |
|---|---|---|
icon | Путь к файлу с картинкой, которая будет показываться для программы EX5. Правила указания пути такие же, как и для ресурсов. Свойство должно указываться в главном модуле с исходным кодом MQL5. Файл иконки должен быть в формате ICO. | |
link | Ссылка на сайт компании-производителя | |
copyright | Название компании-производителя | |
version | Версия программы, не более 31 символа | |
description | Краткое текстовое описание mql5-программы. Может присутствовать несколько description, каждый из которых описывает одну строку текста. Общая длина всех description не может превышать 511 символов с учетом переводов строк | |
stacksize | Указывает размер стека для MQL5 программы, стек достаточного объема требуется в случае выполнения рекурсивных вызовов функций. При запуске скрипта или эксперта на графике выделяется стек не менее 8Мб, для индикаторов свойство не работает - стек всегда фиксированного объема в 1Мб. При запуске в тестере программе всегда выделяется стек в размере 16 Мб. | |
library |
| Библиотека; не назначается никакой стартовой функции, функции с модификатором export можно импортировать в других mql5-программах |
indicator_applied_price | Задает значение по умолчанию для поля "Apply to". Можно задавать одно из значений перечисления ENUM_APPLIED_PRICE. Если свойство не задано, то по умолчанию применяется значение PRICE_CLOSE | |
indicator_chart_window |
| Выводить индикатор в окно графика |
indicator_separate_window |
| Выводить индикатор в отдельное окно |
indicator_height | Фиксированная высота подокна индикатора в пикселях (свойство INDICATOR_HEIGHT) | |
indicator_buffers | Количество буферов для расчета индикатора | |
indicator_plots | Количество графических серий в индикаторе | |
indicator_minimum | Нижнее ограничение шкалы отдельного окна индикатора | |
indicator_maximum | Верхнее ограничение шкалы отдельного окна индикатора | |
indicator_labelN | Задает метку для N-ой графической серии, отображаемую в окне DataWindow. Для графических серий, требующих несколько индикаторных буферов (DRAW_CANDLES, DRAW_FILLING и другие), имена меток задаются через разделитель ';'. | |
indicator_colorN | Цвет для вывода линии N, где N - номер графической серии; нумерация с 1 | |
indicator_widthN | Толщина линии в графической серии, где N - номер графической серии; нумерация с 1 | |
indicator_styleN | Стиль линии в графической серии, указываемый с помощью значения из ENUM_LINE_STYLE. N - номер графической серии, нумерация с 1 | |
indicator_typeN | Вид графического построения, указываемый с помощью значения из ENUM_DRAW_TYPE. N - номер графической серии, нумерация с 1 | |
indicator_levelN | Горизонтальный уровень N в отдельном окне индикатора | |
indicator_levelcolor | Цвет горизонтальных уровней индикатора | |
indicator_levelwidth | Толщина горизонтальных уровней индикатора | |
indicator_levelstyle | Стиль горизонтальных уровней индикатора | |
script_show_confirm |
| Выводить окно подтверждения перед запуском скрипта |
script_show_inputs |
| Выводить окно со свойствами перед запуском скрипта и запретить вывод окна подтверждения |
tester_indicator | Имя пользовательского индикатора в формате "имя_индикатора.ex5". Необходимые для тестирования индикаторы определяются автоматически из вызова функций iCustom(), если соответствующий параметр задан константной строкой. Для остальных случаев (использование функции IndicatorCreate() или использование неконстантной строки в параметре, задающем имя индикатора) необходимо данное свойство | |
tester_file | Имя файла для тестера с указанием расширения, заключенное в двойные кавычки (как константная строка). Указанный файл будет передан тестеру в работу. Входные файлы для тестирования, если необходимы, должны указываться всегда | |
tester_library | Имя библиотеки с расширением, заключенное в двойные кавычки. Библиотека может быть как с расширением dll, так и с расширением ex5. Необходимые для тестирования библиотеки определяются автоматически. Однако если какая-либо библиотека используется пользовательским индикатором, то необходимо использовать данное свойство | |
tester_set | Имя set-файла со значениями и шагом входных параметров. Указанный файл будет передан тестеру в работу перед началом тестирования или оптимизации. Имя файла необходимо указывать с расширением и в двойных кавычках как константную строку.
Если в названии set-файла указать имя эксперта и номер версии как "<expert_name>_<number>.set", то он автоматически добавится в меню загрузки версий параметров под номером версии <number>. Например, имя "MACD Sample_4.set" означает, что это set-файл для эксперта "MACD Sample.mq5" с номером версии равным 4.
Для изучения формата рекомендуем вручную сохранить настройки тестирования/оптимизации в тестере стратегий и затем открыть созданный таким образом set-файл. | |
tester_no_cache | Тестер стратегий при выполнении оптимизации сохраняет все результаты выполненных проходов в кеш оптимизации, в котором для каждого набора входных параметров сохраняется результат тестирования. Это позволяет при повторной оптимизации на тех же параметрах брать готовые результаты без повторного вычисления и затрат времени.
Но для некоторых задач – например, при математических вычислениях – может потребоваться проводить расчеты независимо от наличия готовых результатов в кеше оптимизации. В этом случае в файл необходимо включить свойство tester_no_cache. При этом сами результаты тестирования все равно будут сохраняться в кеше, чтобы можно было в тестере стратегий посмотреть все данные по выполненным проходам. | |
tester_everytick_calculate | В тестере стратегий индикаторы рассчитываются только при обращении к ним за данными – то есть только в тот момент, когда запрашиваются значения индикаторных буферов. Это даёт существенное ускорение при тестировании и оптимизации, если не требуется получать значения индикатора на каждом тике.
Указание свойства tester_everytick_calculate позволяет при тестировании принудительно включить режим расчета индикатора на каждом тике.
Индикаторы в тестере стратегий также принудительно считаются на каждом тике в следующих случаях:
Данное свойство касается только работы в тестере стратегий, в терминале индикаторы всегда считаются на каждом поступившем тике. | |
optimization_chart_mode | Указывает тип графика и имена двух входных параметров, которые будут использоваться для визуализации результатов оптимизации. Например, "3d, InpX, InpY" означает, что будет показан 3D-график с координатными осями на основе значений перебираемых параметров InpX и InpY. Таким образом, с помощью данного свойства можно прямо в коде указывать параметры, которые будут использоваться для показа графика оптимизации и тип самого графика. Возможные варианты:
Можно указать только тип графика и не указывать один или два входных параметра – терминал в таком случае сам выберет необходимые параметры для показа графика оптимизации. |
Пример задания описания и номера версии
#property version "3.70" // текущая версия эксперта |

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