Quando você começa a escrever um Expert Advisor ou um indicador no MQL5, a primeira preocupação costuma ser “onde guardo as mudanças?”. Na prática, a falta de um esquema de versionamento deixa o código vulnerável a regressões, dificulta a colaboração e transforma a manutenção em um pesadelo. Este texto mostra como estruturar versões de projetos MQL5 de forma que cada alteração seja rastreável, reversível e, sobretudo, compreensível para quem for revisar o código daqui a semanas ou meses.
Versionamento básico com Git
- Repositório local: inicialize
git initna pastaExpertsouIndicators. Cada arquivo.mq5passa a ser monitorado. - Commit semântico: siga o padrão
tipo: descrição curta(ex.:feat: adiciona filtro de volatilidade). Isso cria um histórico legível. - Branch por estratégia: crie
feature/novo‑indicadorpara experimentos. Quando o código estabiliza, façamergena branchmaincom--no-ffpara preservar o ponto de integração.
Organização de arquivos
- Estrutura de diretórios:
Pasta Conteúdo src/ Código-fonte .mq5 inc/ Arquivos de inclusão (.mqh) tests/ Scripts de teste unitário (MetaTrader 5 Strategy Tester) docs/ README, changelog e diagramas - Nomeação de arquivos: inclua a versão no nome apenas em releases (ex.:
MyEA_v1.3.mq5). Dentro do repositório, o controle de versão já cumpre esse papel.
Exemplo prático de fluxo
Imagine que você já tem um EA simples que abre posições baseadas em média móvel. O objetivo agora é inserir um filtro de risco.
- Crie a branch
feature/risk‑filter. - Adicione
RiskManager.mqheminc/e inclua‑o no EA com#include. - Teste no Strategy Tester. Se o filtro gerar falsos positivos, ajuste e faça novos commits.
- Quando tudo estiver estável, abra um Pull Request (mesmo que local) e registre o
changelogemdocs/CHANGELOG.md.
Limitações e armadilhas
- Dependência de arquivos externos: incluir bibliotecas de terceiros sem versionamento próprio pode quebrar o build se o fornecedor mudar a API.
- Merge conflicts frequentes: ao trabalhar simultaneamente em parâmetros de mesma função, use
rebasepara manter o histórico linear. - MetaEditor não entende Git: a integração é manual; automatizar commits ao salvar exige scripts externos (ex.:
pre-commit hook).
FAQ rápido
- Preciso de um servidor remoto? Não, mas um repositório no GitHub ou GitLab facilita o backup e a colaboração.
- Posso versionar arquivos .ex5 compilados? Evite; eles são binários grandes e não trazem informação de código.
- Como rastrear alterações de parâmetros no Strategy Tester? Salve snapshots de
.setemtests/e referencie-os no changelog.
Com esse esquema, cada iteração do seu projeto MQL5 deixa de ser um “arquivo solto” e passa a ser parte de um histórico auditável. A próxima vez que precisar desfazer uma mudança ou explicar um comportamento inesperado, basta consultar o commit correspondente. Veja um modelo de repositório pronto para copiar e colar e comece a aplicar imediatamente.
Primeiros passos após a compra
1. Instale o MetaEditor (versão 5.0 ou superior).
2. Crie uma pasta Projects dentro de Documents\MQL5.
3. Dentro dela, abra MyStrategy e, logo em seguida, v1.0. Cada sub‑pasta representa uma release oficial.
Configuração inicial do versionamento
Utilize o Git localmente – ele é leve, funciona offline e se integra ao MetaEditor via Tools → Options → Editor. Execute:
git init git add . git commit -m "Versão 1.0 – estrutura base"Adote a convenção vMAJOR.MINOR.PATCH. Ex.: v1.2.0 indica nova funcionalidade, v1.2.1 correção de bug.
Módulos prioritários e rotina recomendada
| Módulo | Responsável | Frequência |
|---|---|---|
| Core (arquivo .mq5 principal) | Desenvolvedor | Diária |
| Indicadores auxiliares | Analista | Semi‑semanal |
| Testes unitários (Strategy Tester) | QA | Antes de cada commit |
| Documentação (README.md) | Todos | Ao fechar a sprint |
Workflow simplificado:
- Branch
dev→ desenvolve novas features. - Branch
release/x.y.0→ estabiliza para versão pública. - Merge para
mastersó apósgit tag vX.Y.Z.
Checklist operacional (versão 1.0 → 2.0)
- Revisar
#includeduplicados. - Validar parâmetros de entrada no
input– evitar valores padrão “mágicos”. - Executar Strategy Tester com 10.000 ticks – registrar drawdown e profit factor.
- Gerar relatório
.csve anexar aoCHANGELOG.md. - Commitar com mensagem
feat: adiciona filtro de volatilidadee criar tagv2.0.0.
Erros comuns e como evitá‑los
1. Commits sem descrição. Use o padrão type: descrição curta (feat, fix, docs).
2. Branches “longe demais”. Mantenha dev sincronizado com master a cada 2 dias.
3. Falta de testes automatizados. Inclua ao menos um OnTester() para cada indicador novo.
Sinais de progresso e hábitos complementares
• Commit diário – indica fluxo constante.
• Tag de release a cada 2‑3 semanas – demonstra maturidade do código.
• Revisão de código (pull request) – reduz regressões.
⚠️ Dica rápida: mantenha a pasta
Librariesseparada da lógica de negócio. Isso impede “contaminação” de versões quando atualiza uma biblioteca externa.
Mini dashboard textual – status da sprint atual
| Tarefa | Status | Responsável |
|---|---|---|
| Implementar filtro de spread | 🟢 Em progresso | Ana |
| Refatorar gerenciamento de risco | 🔴 Bloqueada | Bruno |
| Documentar API de callbacks | 🟡 Revisão pendente | Carlos |
Com esses blocos operacionais, seu projeto MQL5 ganha rastreabilidade, reduz risco de regressão e acelera a entrega de versões estáveis.
Quem realmente tira proveito do “Como organizar versões de projetos em MQL5”
Desenvolvedores que já lidam com múltiplas estratégias simultâneas e precisam rastrear cada ajuste de parâmetro encontram aqui um ganho imediato. Se você só escreve um EA por ano, o material gera pouco retorno.
Perfil ideal
- Trader‑programador que mantém bibliotecas de indicadores e robôs em constante evolução.
- Equipe pequena (2‑4 coders) que compartilha repositório sem usar Git.
- Freelancer que entrega versões diferentes a clientes e precisa comprovar histórico de mudanças.
Quem pode se frustrar
- Iniciantes que ainda não entenderam o básico de MQL5 – o guia assume fluência.
- Programas que rodam exclusivamente no MetaEditor com controle de versão externo – a proposta tenta substituir, mas pode criar redundância.
- Quem busca “solução mágica” para gerenciamento de bugs – o método exige disciplina diária.
Limitações práticas
O material não inclui integração automática com sistemas CI/CD; tudo depende de scripts manuais. Também não contempla projetos que envolvem Python‑MQL5 híbrido, exigindo adaptações.
FAQ contextual
- Preciso de Git? Não, mas usar Git ao lado melhora backup.
- É compatível com MT5 Cloud? Apenas para arquivos .mq5; versionamento de dados de teste fica externo.
- Posso aplicar a indicadores? Sim, basta adaptar a estrutura de pastas sugerida.
Checklist rápido antes de comprar
| Critério | Atende? |
|---|---|
| Já usa MQL5 intensamente | ✔ |
| Precisa rastrear dezenas de builds | ✔ |
| Depende de integração GitHub | ✘ (exige adaptação) |
| É novato absoluto | ✘ |
Parecer editorial equilibrado
O guia entrega um framework sólido para quem tem pressa em organizar versões sem migrar imediatamente para controle de código tradicional. A proposta é prática, porém não substitui boas práticas de versionamento distribuído. É um “step‑up” útil, não o destino final.
Mini cenários reais
• Freelancer X entregou três variantes de um scalper em duas semanas usando o método; reduziu o tempo de documentação em 40%.
• Equipe Y tentou aplicar o mesmo esquema em um projeto que incluía DLLs de C++; a falta de suporte a binários atrapalhou.
Observações práticas e próximos passos
Comece criando um diretório “v1.0”, “v1.1” conforme instruído, e teste a migração para um repositório Git depois de um mês. Se a curva de aprendizado ficar confortável, expanda para tags automatizadas.
Pronto para experimentar? Acesse o material agora



