---
title: "Компиляция - Разработка программ - Справка по MetaEditor"
description: "Компиляция — это процесс перевода исходного кода MQL4/MQL5-программы на машинный язык. Ее результатом является создание... - Компиляция - Разработка программ - Справка по MetaEditor"
image: "https://www.metatrader5.com/i/logo_metatrader5.png"
url: "https://www.metatrader5.com/ru/metaeditor/help/development/compile"
---

[Справка по MetaEditor](https://www.metatrader5.com/ru/metaeditor/help) → [Разработка программ](https://www.metatrader5.com/ru/metaeditor/help/development) → Компиляция

# Компиляция

Компиляция — это процесс перевода исходного кода MQL4/MQL5-программы на машинный язык. Ее результатом является создание исполняемого файла программы (*EX4 или *.EX5), который может быть запущен в торговой платформе.

Компиляция состоит из нескольких этапов:

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

> Скомпилировать можно любой файл (*.MQ4, *.MQ5 или *.MQH), однако исполняемый файл (*.EX4 или *.EX5) может быть получен только в результате компиляции [основного](https://www.metatrader5.com/ru/metaeditor/help/structure#main_file) MQ4/MQ5-файла программы или [проекта](https://www.metatrader5.com/ru/metaeditor/help/mql5storage/projects).Исполняемый файл создается в собственном закрытом формате, что скрывает исходный алгоритм программы.Скомпилированные исполняемые EX4/EX5-файлы можно распространять без исходных MQ4, MQ5 и MQH-файлов. Без них отладка невозможна. Также не рекомендуется распространять исполняемые EX4/EX5-файлы, полученные в процессе отладки.

Чтобы получить исполняемый файл программы, откройте [основной](https://www.metatrader5.com/ru/metaeditor/help/structure#main_file) исходный файл или проект через ["Навигатор"](https://www.metatrader5.com/ru/metaeditor/help/workspace/navigator), а затем нажмите "![Компилировать](https://www.metatrader5.com/i/help/metaeditor/ru/compile_icon.png) Компилировать" в меню ["Файл"](https://www.metatrader5.com/ru/metaeditor/help/main_menu/main_menu_file#compile) или "F7". Протокол процесса компиляции будет отображен на вкладке ["Ошибки"](https://www.metatrader5.com/ru/metaeditor/help/workspace/toolbox#errors) в окне "Инструменты". Если компиляция прошла без ошибок, вы можете запустить полученную программу в торговой платформе.

![Компиляция программы с выводом результатов во вкладке &quot;Ошибки&quot;](https://www.metatrader5.com/i/help/metaeditor/ru/compilation.png)

Если в процессе компиляции возникли ошибки или предупреждения, их описание будет показано на вкладке "Ошибки".

Ошибки компиляции обозначаются иконками ![Ошибка](https://www.metatrader5.com/i/help/metaeditor/ru/error_icon.png) как на вкладке "Ошибки", так и в самом коде при переходе к ним. При их возникновении исполняемый файл программы (*EX4 или *.EX5) не создастся. Чтобы перейти к строке, где возникла ошибка, дважды щелкните мышью на ошибке или нажмите "![Перейти к строке](https://www.metatrader5.com/i/help/metaeditor/ru/go_to_line_icon.png) Перейти к строке" в контекстном меню. Номер строки и столбца, где была найдена ошибка, показываются в соответствующих колонках.

Предупреждения, обозначаемые иконкой ![Предупреждение](https://www.metatrader5.com/i/help/metaeditor/ru/warning_icon.png), указывают на места возможного появления ошибок. То есть компилятор обращает внимание на те места исходного кода, которые могли быть неверно интерпретированы (например, неявная смена типа значения). Перейти к такой строке в коде можно точно так же, как и в случае с ошибками.

Иконками ![Информация](https://www.metatrader5.com/i/help/metaeditor/ru/info_icon.png) помечаются различные информационные сообщения. Например, сообщения о включаемых файлах, к которым обращалась программа при компиляции.

## Режим компиляции [#](#mode)

В редакторе предусмотрено два режима компиляции: с максимальной оптимизацией кода и без оптимизации.

Отсутствие оптимизации значительно сокращает время создания исполняемого файла. Используйте этот режим в активной стадии разработки, когда требуется быстро проверить написанный код. А уже при компиляции программы для реальной работы включайте режим максимальной оптимизации для наилучшей производительности.

Для переключения между режимами используйте меню "Сборка" или меню команды компиляции на панели инструментов:

![Управляйте режимом компиляции](https://www.metatrader5.com/i/help/metaeditor/ru/compilation_mode.png)

Параметр "[Максимальная оптимизация](https://www.metatrader5.com/ru/metaeditor/help/mql5storage/projects#properties)" в настройках проекта выполняет ту же функцию.

> Полное описание ошибок компиляции приведено в справочнике по языку MQL4/MQL5.При наличии предупреждений исполняемый файл создается. Однако их не рекомендуется игнорировать. Предупреждения указывают на потенциальные ошибки в коде.При компиляции исполняемый файл (*.EX4 или *.EX5) создается в том же каталоге, что и [основной исходный файл](https://www.metatrader5.com/ru/metaeditor/help/structure#main_file) программы (*.MQ4 или *.MQ5) или [проект](https://www.metatrader5.com/ru/metaeditor/help/mql5storage/projects).Исполняемый файл metaeditor.exe можно использовать как [внешний компилятор в сторонних IDE](https://www.metatrader5.com/ru/metaeditor/help/beginning/integration_ide).

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

Современные процессоры имеют набор расширенных инструкций, значительно ускоряющих математические расчеты: [AVX](https://en.wikipedia.org/wiki/Advanced_Vector_Extensions), [AVX2](https://en.wikipedia.org/wiki/Advanced_Vector_Extensions), [AVX512](https://en.wikipedia.org/wiki/AVX-512), [FMA3](https://en.wikipedia.org/wiki/FMA_instruction_set). Эти инструкции поддерживаются в компиляторе MQL5, что позволяет генерировать более эффективный и быстрый код. При этом их использование является опциональным:

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

Чтобы узнать, какие инструкции поддерживает ваш процессор, воспользуйтесь [бесплатной утилитой CPU-Z](https://www.cpuid.com/softwares/cpu-z.html). После установки откройте раздел "CPU" и проверьте поле "Instructions":

![Проверьте, какие инструкции поддерживает ваш процессор, при помощи CPU-Z](https://www.metatrader5.com/i/help/metaeditor/ru/cpu_z.png)

Чтобы выбрать архитектуру процессора, воспользуйтесь меню компиляции. Далее нажмите "Компилировать". Вы также можете задать архитектуру в [настройках MetaEditor](https://www.metatrader5.com/ru/metaeditor/help/beginning/settings#compiler) и в [настройках каждого проекта](https://www.metatrader5.com/ru/metaeditor/help/mql5storage/projects#properties).

![Выберите архитектуру процессора, под которую будет скомпилирована программа](https://www.metatrader5.com/i/help/metaeditor/ru/compilation_architecture.png)

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

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

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

- Программы, скомпилированный под процессоры с AVX512, пока не поддерживаются в [MQL5 Cloud Network](https://www.metatrader5.com/ru/terminal/help/algotrading/strategy_optimization#cloud) и [встроенном VPS](https://www.metatrader5.com/ru/terminal/help/virtual_hosting).
- В [Маркет](https://www.mql5.com/ru/articles/385) можно загружать только файлы, скомпилированные под X64 Regular. Это необходимо для обеспечения максимальной совместимости приложений с оборудованием пользователей.

## In this section

- [Интеллектуальное управление](https://www.metatrader5.com/ru/metaeditor/help/development/intelligent_management)
- [Поиск и замена](https://www.metatrader5.com/ru/metaeditor/help/development/source_code_find)
- [Стилизатор](https://www.metatrader5.com/ru/metaeditor/help/development/styler)
- Компиляция
- [Дополнительная защита программ (MQL5 Protector)](https://www.metatrader5.com/ru/metaeditor/help/development/mql5_cloud_protector)
- [Отладка кода](https://www.metatrader5.com/ru/metaeditor/help/development/debug)
- [Профилирование кода](https://www.metatrader5.com/ru/metaeditor/help/development/profiling)
- [Помощь AI Assistant](https://www.metatrader5.com/ru/metaeditor/help/development/ai_assistant)
- [Генерация включаемого кода](https://www.metatrader5.com/ru/metaeditor/help/development/generate_mqh)
- [Работа с C++ DLL (интеграция с MS Visual Studio)](https://www.metatrader5.com/ru/metaeditor/help/development/c_dll)
- [Работа с Python](https://www.metatrader5.com/ru/metaeditor/help/development/python)
- [Поддержка OpenCL](https://www.metatrader5.com/ru/metaeditor/help/development/opencl)

```json
{"@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [ {"@type": "ListItem", "position": 1, "item": {"@id": "https://www.metatrader5.com/ru/metaeditor/help", "name": "Справка по MetaEditor"}}, {"@type": "ListItem", "position": 2, "item": {"@id": "https://www.metatrader5.com/ru/metaeditor/help/development", "name": "Разработка программ"}}, {"@type": "ListItem", "position": 3, "item": {"@id": "https://www.metatrader5.com/ru/metaeditor/help/development/compile", "name": "Компиляция"}} ]}
{ "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{ "@type": "Question", "name": "MetaTrader 5: Компиляция", "acceptedAnswer": { "@type": "Answer", "text": "Компиляция — это процесс перевода исходного кода MQL4/MQL5-программы на машинный язык. Ее результатом является создание исполняемого файла..." } }] }
```
