- Макроподстановка (#define)
- Свойства программ (#property)
- Включение файлов (#include)
- Импорт функций (#import)
- Условная компиляция (#ifdef, #ifndef, #else, #endif)
Свойства программ (#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
|