Справка по 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.exe можно использовать как внешний компилятор в сторонних IDE.

Компиляция под процессоры с разной архитектурой #

Современные процессоры имеют набор расширенных инструкций, значительно ускоряющих математические расчеты: AVX, AVX2, AVX512, FMA3. Эти инструкции поддерживаются в компиляторе MQL5, что позволяет генерировать более эффективный и быстрый код. При этом их использование является опциональным:

  • Если вы создаете программу исключительно для себя и уверены, что она будет запускаться на процессоре с поддержкой нужной архитектуры, вы можете скомпилировать ее c использованием продвинутых инструкций. Это даст прирост производительности.
  • Если вы создаете программу для публичного использования/продажи, скомпилируйте ее с базовым набором инструкций в режиме X64 Regular. Это обеспечит максимальную совместимость приложения с оборудованием пользователей.

Чтобы узнать, какие инструкции поддерживает ваш процессор, воспользуйтесь бесплатной утилитой CPU-Z. После установки откройте раздел "CPU" и проверьте поле "Instructions":

Проверьте, какие инструкции поддерживает ваш процессор, при помощи CPU-Z

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

Выберите архитектуру процессора, под которую будет скомпилирована программа

Если приложение скомпилировано под архитектуру, которая не поддерживается процессором пользователя, то при попытке его запустить в журнал платформы будет выведено соответствующее сообщение:

your CPU architecture does not allow to run the file '<file-name>.ex5': AVX512 required, you have AVX2 only

Ограничения:

  • Программы, скомпилированный под процессоры с AVX512, пока не поддерживаются в MQL5 Cloud Network и встроенном VPS.
  • В Маркет можно загружать только файлы, скомпилированные под X64 Regular. Это необходимо для обеспечения максимальной совместимости приложений с оборудованием пользователей.