Ao montar um Expert Advisor ou um indicador no MetaTrader 5, a primeira dor de cabeça costuma ser o caos de arquivos espalhados, funções duplicadas e alterações que “some” no meio do caminho. O objetivo aqui é mostrar, passo a passo, como transformar esse caos em um repositório organizado, versionado e pronto para escalar – sem precisar reinventar a roda a cada novo projeto.
Estrutura de pastas que realmente funciona
- Experts/ – contém o EA principal.
- Indicators/ – scripts de indicadores auxiliares.
- Libraries/ – código reutilizável, como gerenciadores de ordens ou calculadoras de risco.
- Include/ – arquivos
.mqhde constantes e macros. - Tests/ – casos de teste automatizados (MetaEditor Unit Test).
Separar assim evita que um ajuste na biblioteca de gerenciamento de risco quebre, por exemplo, um indicador visual. A regra de ouro: um arquivo, uma responsabilidade.
Modularização prática
Divida a lógica em blocos pequenos. Um módulo OrderManager.mqh cuida de abertura, fechamento e trailing; outro RiskCalculator.mqh devolve o tamanho de lote com base no stop‑loss. No EA basta chamar:
#include OrderManager::OpenBuy(symbol, volume); Essa abordagem reduz o tempo de depuração – se um trade não abre, você verifica apenas o módulo de ordem.
Versionamento sem drama
Mesmo quem nunca usou Git no trading pode adotar GitHub Desktop para controlar versões. Crie um repositório local, faça commits a cada mudança funcional e use branches para testar novas estratégias. O ponto crítico: nunca commite arquivos .ex5 compilados; eles são artefatos que só aumentam o ruído.
Boas práticas que salvam noites de sono
- Nomeie variáveis com prefixos claros (
dbl_para double,int_para inteiros). - Documente funções com comentários do tipo
// @param price – preço de entrada. - Limite o uso de
global variables; prefira passar parâmetros. - Desative
Print()em produção; use um logger que grava em arquivo somente quandoDEBUGestá ativo.
Recursos e aplicações avançadas
Bibliotecas como Trade.mqh da própria MQL5 já oferecem wrappers seguros. Combine-as com Structs para agrupar informações de trade (ticket, preço, SL/TP). Em projetos de alta frequência, use EventSetTimer() ao invés de OnTick() para controlar a frequência de chamadas.
FAQ rápido
| Pergunta | Resposta |
|---|---|
| Posso misturar scripts e EAs na mesma pasta? | Não. Mantê‑los separados evita carregamentos indevidos. |
| Como lidar com dependências circulares? | Reestruture o código; módulos não devem chamar uns aos outros diretamente. |
| O que fazer se o Git conflitar arquivos .mqh? | Revise manualmente a lógica; conflitos em módulos críticos indicam falha de design. |
Organizar projetos MQL5 não é só estética – é a diferença entre lançar uma estratégia às 9 h e descobrir, às 9:05, que o script não encontrou a biblioteca correta. Estruture, modularize, versiona e teste. O próximo passo? Criar um repositório modelo e clonar para cada nova ideia. Assim, a única coisa que você precisará otimizar será a própria estratégia, não a sua bagunça de código.
Primeiros passos após a compra
- Descompacte o pacote em
C:\Users\.\AppData\Roaming\MetaQuotes\Terminal\Common\Files\MQL5 - Abra o MetaEditor e verifique se a pasta
Projectsaparece no painel “Navegador”. - Crie um novo diretório com o nome do seu cliente ou estratégia (ex.:
Projects/AlphaTrader).
Configuração inicial do workspace
| Elemento | Local padrão | Recomendação |
|---|---|---|
| Arquivos fonte | .../MQL5/Projects/AlphaTrader | Separar Indicators, Experts e Scripts. |
| Bibliotecas | .../MQL5/Libraries | Manter versões v1.0, v1.1 em subpastas. |
| Dados de back‑test | .../MQL5/Tester | Usar subpastas por símbolo e timeframe. |
Modularização e prioridade de módulos
- CoreEngine.mqh – funções de gerenciamento de ordens e cálculo de risco.
- SignalGenerator.mqh – lógica de geração de sinais; mantenha‑a livre de chamadas ao gráfico.
- TradeExecutor.mqh – wrapper que consome
CoreEngineeSignalGenerator. Priorize testes unitários aqui. - UIHelper.mqh – apenas para visualizações; pode ser carregado condicionalmente.
Checklist operacional (semana 1)
- ✔️ Estrutura de pastas criada e versionada no Git.
- ✔️ Primeiro módulo (
CoreEngine) compilado sem warnings. - ✔️ Teste de unidade “OrderSize” aprovado (coverage ≥ 80%).
- ✔️ Commit inicial com mensagem “setup base – core engine”.
- ✔️ Configuração do Git no MetaEditor.
Rotina recomendada de desenvolvimento
- Segunda‑feira: revisão de requisitos e atualização do
README.md. - Terça‑quarta: implementação de funções no módulo prioritário.
- Quinta: compilação e execução de back‑test rápido (≤ 5 min).
- Sexta: revisão de código, pull‑request interno e merge.
Erros comuns e como evitá‑los
- Hard‑code de símbolos. Use constantes no arquivo
Config.mqh. - Chamadas de funções gráficas dentro do loop de negociação. Separe lógica de UI em
OnChartEvent. - Versões de biblioteca divergentes. Defina
#pragma librarycom caminho absoluto.
Produtividade prática – aceleração de resultados
Implemente um mini‑dashboard no próprio terminal:
#property indicator_chart_window void OnTick() { Comment("Equity: ",AccountInfoDouble(ACCOUNT_EQUITY), "\nOpen: ",OrdersTotal(), "\nSignal: ",SignalGenerator::Current()); } Esse snippet fornece feedback imediato, reduzindo a necessidade de abrir múltiplas janelas de teste.
FAQ rápido
- Posso usar o mesmo repositório para vários clientes? Sim, basta criar ramos (
client-A,client-B) e usar.gitattributespara excluir arquivos sensíveis. - Qual a frequência ideal de commits? Cada mudança funcional (não apenas correções de estilo) deve gerar um commit; isso gera pontos de restauração claros.
- Como integrar o MetaTrader 5 com CI/CD? Use o GitHub Action para MQL5 – compila o código a cada push e envia o .ex5 para um bucket S3.
Quem realmente se beneficia?
Se você desenvolve robôs de trading ou indicadores avançados no MetaTrader 5, esse guia é quase obrigatório.
Programadores que ainda tratam cada script como um monólito vão encontrar aqui um mapa de migração para projetos organizados, reduzindo bugs e facilitando colaborações.
Já traders‑analistas que só mexem em parâmetros esporádicos provavelmente não ganharão muito; o esforço de estruturar pastas e versionar código pode ser desnecessário para estratégias pontuais.
Perfis incompatíveis
- Iniciantes que não dominam sequer a sintaxe básica de MQL5. O material parte de premissas de conhecimento prévio.
- Freelancers que entregam “quick‑fix” e nunca retornam ao código. A modularização requer manutenção contínua.
- Equipes que utilizam exclusivamente o MetaEditor sem integração Git; a proposta de versionamento será limitada.
Limitações práticas
O guia pressupõe acesso ao Windows 10/11 e ao MetaTrader 5 build 2500 ou superior; versões legacy podem não suportar as convenções de diretório propostas.
Bibliotecas externas, como a StdLib, são tratadas como opcionais; quem depende de terceiros pode esbarrar em incompatibilidades de compilação.
O capítulo de “Versionamento” foca em Git CLI; usuários que preferem interfaces gráficas precisarão adaptar as instruções.
FAQ contextual
| Pergunta | Resposta |
|---|---|
| Preciso usar GitHub? | Não estritamente, mas o fluxo recomendado usa um repositório remoto para evitar perda de alterações. |
| Posso aplicar a estrutura em projetos já existentes? | Sim, mas requer refatoração cuidadosa; o guia inclui um checklist de migração passo‑a‑passo. |
| O que fazer se o MetaEditor reclamar de caminhos longos? | Reduza a profundidade das pastas ou habilite o parâmetro --allow_long_paths nas opções de compilação. |
Checklist de avaliação rápida
- Domina MQL5 básico? ✔
- Usa Git ou aceita aprender? ✔
- Projeto com mais de 5 arquivos fonte? ✔
- Precisa colaborar com outros desenvolvedores? ✔
Parecer editorial equilibrado
A abordagem é prática, porém não é um manual de “zero a herói”. Ela combina teoria mínima com exemplos reais, permitindo que desenvolvedores já atuantes ganhem organização sem reescrever tudo.
Para quem busca apenas ganhar alguns pontos de performance, o custo de adoção pode superar o benefício imediato.
Mini cenários de uso
Um trader que mantém três EAs diferentes, cada um com múltiplas estratégias, pode centralizar funções auxiliares em Libraries/Utils.mqh e versionar tudo num único repo. Resultado: deploy em minutos, rollback em segundos.
Um analista que cria um único indicador pontual não verá ganho significativo; a sobrecarga de estrutura pode até atrapalhar a entrega rápida.
Próximos passos
Revisite o capítulo de “Modularização” e aplique a template de pasta em um projeto piloto. Depois, faça o commit inicial e teste o fluxo de CI/CD básico.
Quer aprofundar? Veja o material completo na página oficial e baixe o checklist em PDF.



