---
title: "Compilar - Desenvolvimento de programas - Ajuda para o MetaEditor"
description: "A compilação é um processo que consiste em traduzir o código fonte MQL4/MQL5 do programa para linguagem de má... - Compilar - Desenvolvimento de programas - Ajuda para o MetaEditor"
image: "https://www.metatrader5.com/i/logo_metatrader5.png"
url: "https://www.metatrader5.com/pt/metaeditor/help/development/compile"
---

[Ajuda para o MetaEditor](https://www.metatrader5.com/pt/metaeditor/help) → [Desenvolvimento de programas](https://www.metatrader5.com/pt/metaeditor/help/development) → Compilar

# Compilar

A compilação é um processo que consiste em traduzir o código fonte MQL4/MQL5 do programa para linguagem de máquina nativa. Seu resultado é a criação do arquivo executável do programa (* EX4 ou *.EX5), que pode ser inicializado na plataforma de negociação.

Compilação consiste em várias etapas:

- Análise lexical
- Análise sintática
- Análise semântica
- Geração de código
- Otimização de código

> Você pode compilar qualquer arquivo (*.MQ4, *.MQ5 ou *.MQH), mas o arquivo executável (*.EX4 ou *.EX5) pode ser obtido apenas como resultado da compilação do arquivo [básico](https://www.metatrader5.com/pt/metaeditor/help/structure#main_file) MQ4/MQ5 do programa ou [projeto](https://www.metatrader5.com/pt/metaeditor/help/mql5storage/projects).O arquivo executável é criado em seu próprio formato privado, ocultando o algoritmo original do programa.Arquivos executáveis ​​EX4/EX5 compilados podem ser distribuídos sem os arquivos de origem MQ4, MQ5 e MQH. Sem eles, a depuração não é possível. Também não é recomendado distribuir arquivos executáveis ​​EX4/EX5 recebidos durante o processo de depuração.

Para obter o arquivo executável do programa, abra o arquivo de origem [básico](https://www.metatrader5.com/pt/metaeditor/help/structure#main_file) ou projeto através do ["Navegador"](https://www.metatrader5.com/pt/metaeditor/help/workspace/navigator) e clique em "![Compilar](https://www.metatrader5.com/i/help/metaeditor/en/compile_icon.png) Compilar "no menu ["Arquivo"](https://www.metatrader5.com/pt/metaeditor/help/main_menu/main_menu_file#compile) ou "F7". O protocolo do processo de compilação será exibido na aba ["Erros"](https://www.metatrader5.com/pt/metaeditor/help/workspace/toolbox#errors) na janela "Caixa de Ferramentas". Se a compilação correu sem erros, você pode executar o programa recebido na plataforma de negociação.

![Compilando o programa e exibindo os resultados na guia &quot;Erros&quot;](https://www.metatrader5.com/i/help/metaeditor/en/compilation.png)

Se erros ou avisos ocorrerem durante o processo de compilação, sua descrição será mostrada na guia "Erros".

Erros de compilação são indicados por ícones ![Mensagem de erro](https://www.metatrader5.com/i/help/metaeditor/en/error_icon.png), tanto na guia "Erros" quanto no próprio código ao acessá-los. Se ocorrerem, não será criado o arquivo executável do programa (*EX4 ou *.EX5). A fim de ir para a linha onde ocorreu o erro, clique duas vezes no erro ou pressione "![Ir para linha](https://www.metatrader5.com/i/help/metaeditor/en/go_to_line_icon.png) Ir para linha" no menu de contexto. O número da linha e da coluna em que o erro foi encontrado é exibido nas colunas correspondentes.

Avisos indicados por um ícone ![Aviso de código executável](https://www.metatrader5.com/i/help/metaeditor/en/warning_icon.png), mostram os locais de possíveis erros. Ou seja, o compilador presta atenção a locais do código fonte que poderiam ser mal interpretados (por exemplo, alteração implícita do tipo de valor). Ir para essa linha no código pode ser exatamente o mesmo que no caso de erros.

Várias mensagens informativas são marcadas com o ícone![Mensagem informativa](https://www.metatrader5.com/i/help/metaeditor/en/info_icon.png) Por exemplo, mensagens sobre arquivos de inclusão que o programa acessou ao compilar.

## Modo de compilação [#](#mode)

Há dois modos de compilação no editor: com optimização máxima do código e sem optimização.

A falta de optimização reduz significativamente o tempo necessário para criar um executável. Utilize esse modo quando estiver em uma fase ativa de desenvolvimento e precisar de verificar rapidamente o código escrito. Já, ao compilar o programa, mude para o modo de optimização máxima para melhor desempenho.

Para alternar entre modos, utilize o menu de construção ou o menu de comandos de compilação na barra de ferramentas:

![Controle o modo de compilação](https://www.metatrader5.com/i/help/metaeditor/en/compilation_mode.png)

O parâmetro "[Optimização máxima](https://www.metatrader5.com/pt/metaeditor/help/mql5storage/projects#properties)" nas definições do projeto desempenha a mesma função.

> Uma descrição completa dos erros de compilação é fornecida no manual de referência da linguagem MQL4/MQL5.Se houver avisos, o arquivo executável será criado. No entanto, não se recomenda ignorá-los. Avisos indicam possíveis erros no código.Ao compilar, o arquivo executável (*.EX4 ou *.EX5) é criado no mesmo diretório que o [arquivo de origem básico](https://www.metatrader5.com/pt/metaeditor/help/structure#main_file) do programa (*.MQ4 ou *.MQ5) ou [projeto](https://www.metatrader5.com/pt/metaeditor/help/mql5storage/projects).O arquivo executável metaeditor.exe pode ser usado como [compilador externo num IDE de terceiros](https://www.metatrader5.com/pt/metaeditor/help/beginning/integration_ide).

## Compilação para processadores com arquitetura diferente [#](#architecture)

Os processadores modernos têm um conjunto de instruções avançadas que aceleram significativamente os cálculos matemáticos: [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). Essas instruções são compatíveis com o compilador MQL5, o que permite gerar códigos mais eficientes e mais rápidos. Seu uso é opcional:

- Se estiver criando um programa para uso pessoal e tiver certeza de que ele será executado em um processador compatível com a arquitetura necessária, poderá compilá-lo usando instruções avançadas. Com isso, o desempenho será aprimorado.
- Se você criar um programa para uso/venda pública, compile-o com o conjunto de instruções básicas no modo X64 Regular. Dessa forma, será possível garantir que o aplicativo seja o mais compatível possível com o equipamento dos usuários.

Para saber quais instruções seu processador suporta, use o [utilitário gratuito CPU-Z.](https://www.cpuid.com/softwares/cpu-z.html). Após a instalação, abra a seção "CPU" e verifique o campo "Instructions":

![Verifique quais instruções seu processador suporta com ajuda do CPU-Z](https://www.metatrader5.com/i/help/metaeditor/en/cpu_z.png)

Use o menu de compilação para selecionar a arquitetura do processador. Em seguida, clique em "Compilar". Você também pode definir a nas [configurações do MetaEditor](https://www.metatrader5.com/pt/metaeditor/help/beginning/settings#compiler) e nas [configurações de cada projeto](https://www.metatrader5.com/pt/metaeditor/help/mql5storage/projects#properties).

![Selecione a arquitetura do processador com a qual o programa será compilado](https://www.metatrader5.com/i/help/metaeditor/en/compilation_architecture.png)

Caso o aplicativo seja compilado com base em uma arquitetura que não seja compatível com o processador do usuário, será exibida a seguinte mensagem no log da plataforma quando você tentar executá-lo:

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

Restrições:

- Os programas compilados para processadores AVX512 ainda não são compatíveis com [MQL5 Cloud Network](https://www.metatrader5.com/pt/terminal/help/algotrading/strategy_optimization#cloud) e [VPS embutido](https://www.metatrader5.com/pt/terminal/help/virtual_hosting).
- No [Mercado](https://www.mql5.com/pt/articles/385) é possível fazer download apenas de arquivos compilados para o X64 Regular. Isso é feito para garantir a compatibilidade máxima dos aplicativos com o hardware dos usuários.

## In this section

- [Controle inteligente](https://www.metatrader5.com/pt/metaeditor/help/development/intelligent_management)
- [Procurar e Substituir](https://www.metatrader5.com/pt/metaeditor/help/development/source_code_find)
- [Estilizador](https://www.metatrader5.com/pt/metaeditor/help/development/styler)
- Compilar
- [Proteção adicional de programa (MQL5 Protector)](https://www.metatrader5.com/pt/metaeditor/help/development/mql5_cloud_protector)
- [Depurando código](https://www.metatrader5.com/pt/metaeditor/help/development/debug)
- [Criação de perfil de código](https://www.metatrader5.com/pt/metaeditor/help/development/profiling)
- [Ajuda do AI Assistant ao escrever código](https://www.metatrader5.com/pt/metaeditor/help/development/ai_assistant)
- [Gerando código de inclusão](https://www.metatrader5.com/pt/metaeditor/help/development/generate_mqh)
- [Trabalhando com DLL C++ (integração com MS Visual Studio)](https://www.metatrader5.com/pt/metaeditor/help/development/c_dll)
- [Trabalho com Python](https://www.metatrader5.com/pt/metaeditor/help/development/python)
- [Suporte a OpenCL](https://www.metatrader5.com/pt/metaeditor/help/development/opencl)

```json
{"@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [ {"@type": "ListItem", "position": 1, "item": {"@id": "https://www.metatrader5.com/pt/metaeditor/help", "name": "Ajuda para o MetaEditor"}}, {"@type": "ListItem", "position": 2, "item": {"@id": "https://www.metatrader5.com/pt/metaeditor/help/development", "name": "Desenvolvimento de programas"}}, {"@type": "ListItem", "position": 3, "item": {"@id": "https://www.metatrader5.com/pt/metaeditor/help/development/compile", "name": "Compilar"}} ]}
{ "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{ "@type": "Question", "name": "MetaTrader 5: Compilar", "acceptedAnswer": { "@type": "Answer", "text": "A compilação é um processo que consiste em traduzir o código fonte MQL4/MQL5 do programa para linguagem de má..." } }] }
```
