Справка по MetaEditor

Компиляция

Компиляция — это процесс перевода исходного кода MQL4/MQL5 программы на машинный язык. Этот процесс состоит из нескольких этапов:

  • Лексический анализ;
  • Синтаксический анализ;
  • Семантический анализ;
  • Генерация кода;
  • Оптимизация кода.

Результатом успешной компиляции является создание исполняемого файла программы (*EX4 или *.EX5), который может быть запущен в клиентском терминале.

  • Скомпилировать можно любой файл (*.MQ4, *.MQ5 или *.MQH), однако исполняемый файл (*.EX4 или *.EX5) может быть получен только в результате компиляции основного MQ4 или MQ5 файла программы.
  • Исполняемый файл создается в собственном закрытом формате, что скрывает исходный алгоритм программы.
  • Скомпилированные исполняемые EX4/EX5 файлы можно распространять без исходных MQ4, MQ5 и MQH-файлов. Без них отладка невозможна. Также не рекомендуется распространять исполняемые EX4/EX5 файлы, полученные в процессе отладки.

Для того чтобы приступить к компиляции, необходимо открыть исходный файл через окно "Навигатор" и выполнить команду "Компилировать Компилировать" в меню "Файл" или на панели инструментов "Стандартная", либо нажать клавишу "F7".

Протокол процесса компиляции будет отображен на вкладке "Ошибки" в окне "Инструменты". Если на данной вкладке отсутствуют ошибки, то можно приступать к запуску программы в торговом терминале. Сообщения об ошибках и предупреждения обозначаются соответствующими иконками рядом с их описанием:

Ошибки

Ошибки компиляции обозначаются иконками Ошибка, как на вкладке "Ошибки", так и в самом коде при переходе к ним. При их возникновении исполняемый файл программы (*EX4 или *.EX5) не создастся. Для того чтобы перейти к строке, где возникла ошибка, необходимо дважды щелкнуть левой кнопкой мыши на строке, либо выполнить команду "Перейти к строке Перейти к строке" в контекстном меню. Номер строки и столбца, где была найдена ошибка, показываются в соответствующих колонках.

Полное описание ошибок при компиляции приведено в справочнике по языку MQL4/MQL5.

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

Допускается возможность оставить предупреждения без внимания. Однако, это не рекомендуется, поскольку они указывают на потенциальные места возникновения ошибок.

Также в журнале отображаются различные информационные сообщения, помеченные иконками Информация. С помощью них показываются, например, включаемые файлы, к которым обращалась программа при компиляции.

Исполняемый файл (*.EX4 или *.EX5), созданный в результате успешной компиляции, помещается в то же место, где расположен основной файл исходного кода программы (*.MQ4 или *.MQ5).

Компиляция из командной строки

Исполняемый файл MetaEditor можно использовать в качестве компилятора при работе с исходным кодом во внешних редакторах. Компилятор запускается из командной строки с указанием пути и имени файла, который необходимо скомпилировать:

  • metaeditor.exe /compile:"<полный путь к исходному файлу>"
  • metaeditor64.exe /compile:"<полный путь к исходному файлу>"

Пример

"C:\Program Files\TradingPlatform\metaeditor64.exe" /compile:"C:\Program Files\TradingPlatform\MQL5\Scripts\myscript.mq5"

Массовая компиляция файлов в каталоге

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

Если для исходного файла уже есть скомпилированная версия, перекомпиляция не производится.

В примере ниже компиляция будет проведена для каталога \MQL5\Scripts

Пример

"C:\Program Files\TradingPlatform\metaeditor64.exe" /compile:"C:\Program Files\TradingPlatform\MQL5\Scripts"

Собственный каталог MQL5/MQL4 с включаемыми файлами

Программы могут использовать дополнительные включаемые файлы (*.mqh), расположенные вне рабочего каталога текущей платформы. Например, в каталоге \MQL5 другой копии платформы на том же компьютере. Для корректной компиляции укажите путь к этому каталогу через ключ "/inc".

Пример

"C:\Program Files\TradingPlatform\metaeditor64.exe" /compile:"C:\Program Files\TradingPlatform\MQL5\Scripts" /inc:"C:\Program Files\TradingPlatform 2\MQL5"

Журнал компиляции

Для получения информации о процессе компиляции укажите дополнительный ключ /log. В этом случае в папке, где расположен исходный файл, будет создан файл журнала компиляции <имя исходного файла>.log.

Пример

"C:\Program Files\TradingPlatform\metaeditor64.exe" /compile:"C:\Program Files\TradingPlatform\MQL5\Scripts\myscript.mq5" /log
Файл журнала: C:\Program Files\TradingPlatform\MQL5\Script\myscript.log

Проверка синтаксиса

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

Пример

"C:\Program Files\TradingPlatform\metaeditor64.exe" /compile:"C:\Program Files\TradingPlatform\MQL5\Scripts\myscript.mq5" /s /log
Файл с результатами проверки: C:\Program Files\TradingPlatform\MQL5\Script\myscript.log