Se você já tentou medir a saúde de um robô de trading no MQL5, sabe que o drawdown costuma aparecer como um número solto, sem contexto. Na prática, quem precisa de um cálculo automático quer saber: “quanto do meu capital estou realmente arriscando a cada operação?” e, sobretudo, como transformar esse número em regra de gestão que impeça perdas catastróficas.
Implementando o cálculo automático
- Passo 1 – Captura de equity. Use
AccountInfoEquity()a cada tick. Armazene o valor em um array circular (tamanho configurável, ex.: 500 ticks) para evitar consumo de memória. - Passo 2 – Identificação do pico. A cada atualização, compare o equity atual com o máximo histórico mantido no mesmo array. Se o equity supera o pico, substitua o valor.
- Passo 3 – Cálculo do drawdown. A fórmula clássica
(Peak - Equity) / Peak * 100entrega o percentual. O truque está em atualizar o Peak somente quando o equity bate recorde, evitando “flutuações falsas”. - Passo 4 – Persistência. Salve o pico e o drawdown corrente em um arquivo
.csvou emGlobalVariableSet()para que o EA recupere o estado após reinício.
Gestão baseada no drawdown
Com o percentual em mãos, o próximo passo é definir limites operacionais. Uma abordagem prática:
- Se drawdown > 2% do capital, reduza o lote em 25%.
- Se drawdown > 5%, interrompa novas entradas por 30 minutos.
- Se drawdown > 10%, feche todas as posições e reavalie a estratégia.
Essas regras são simples, mas funcionam porque o cálculo é feito em tempo real, permitindo reação imediata.
Exemplo real
Imagine um EA que opera EUR/USD com lote 0.1. O capital inicial é $10.000. Em 45 minutos, o equity cai de $10.200 para $9.800 – um drawdown de 3,92%. O script detecta o cruzamento do 2% e reduz o lote para 0.075. Três ticks depois, o equity recupera para $10.050, mantendo o risco reduzido até que o drawdown volte abaixo de 2%.
Limitações e armadilhas
- Latência de tick. Em mercados com poucos ticks, o cálculo pode ficar “estagnado”, gerando drawdown atrasado.
- Spread inesperado. Picos de spread podem inflar o drawdown momentaneamente, acionando regras de corte prematuras.
- Over‑fitting. Ajustar limites muito apertados com base em um histórico curto pode eliminar oportunidades legítimas.
FAQ rápido
- Posso usar o mesmo código em MQL4? Sim, mas substitua
AccountInfoEquity()porAccountEquity(). - Como evitar que o array cresça indefinidamente? Defina um tamanho fixo e sobrescreva índices ciclicamente.
- É possível visualizar o drawdown no gráfico? Use
ObjectCreate()para plotar uma linha de pico e outra de equity.
O ponto contra‑intuitivo aqui é que, ao limitar o lote somente quando o drawdown ultrapassa um patamar, você permite que o EA “respire” em períodos de volatilidade, ao invés de cortar o trading a cada pequena oscilação. Essa flexibilidade costuma melhorar a taxa de acerto em cenários de alta frequência.
Pronto para testar? Baixe o script exemplo e ajuste os limites conforme sua tolerância ao risco. Acesse o código completo e comece a monitorar o drawdown em tempo real.
1. Configuração inicial do ambiente MQL5
Abra o MetaEditor e crie um novo Expert Advisor (EA). No cabeçalho inclua as variáveis que armazenarão o capital inicial e o pico de equidade:
| Variável | Tipo | Descrição |
|---|---|---|
| double InitialCapital; | double | Valor depositado antes do primeiro trade. |
| double PeakEquity = 0.0; | double | Maior valor de equidade atingido até o momento. |
| double CurrentDrawdown = 0.0; | double | Drawdown percentual calculado em tempo real. |
2. Captura automática do pico de equidade
Insira o trecho abaixo no OnTick(). Ele garante que PeakEquity nunca diminua:
if(AccountInfoDouble(ACCOUNT_EQUITY) > PeakEquity) PeakEquity = AccountInfoDouble(ACCOUNT_EQUITY);
Assim, o código acompanha o ponto máximo mesmo que o EA opere 24 h.
3. Cálculo do drawdown em cada tick
Logo após atualizar o pico, compute o drawdown percentual:
double equity = AccountInfoDouble(ACCOUNT_EQUITY); if(PeakEquity > 0) CurrentDrawdown = (PeakEquity - equity) / PeakEquity * 100.0;
O valor de CurrentDrawdown pode ser exibido no gráfico ou enviado a um arquivo CSV para análises posteriores.
4. Rotina recomendada – checklist operacional
- ✔️ Definir
InitialCapitalnoOnInit()usandoAccountInfoDouble(ACCOUNT_BALANCE). - ✔️ Atualizar
PeakEquityantes de qualquer cálculo de drawdown. - ✔️ Salvar
CurrentDrawdownem um arraydrawdownHistory[]a cada minuto (usarEventSetTimer(60)). - ✔️ Definir um limite máximo (ex.: 20 %). Quando
CurrentDrawdownultrapassar, acioneTradeCloseAll(). - ✔️ Logar data/hora, equity, pico e drawdown em
FileWrite()para auditoria.
5. Ferramentas complementares para monitoramento
Integre o EA com o MQL5 API de WebRequest e envie o drawdown para um Google Sheet. O fluxo fica:
- EA gera JSON
{"equity":1234.56,"drawdown":8.7}. - WebRequest POST → endpoint do Apps Script.
- Planilha atualiza linha “Live”.
6. Erros comuns e como evitá‑los
- Peak não reinicia após fechamento total – reinicie
PeakEquityquandoACCOUNT_BALANCEvoltar ao valor inicial. - Divisão por zero – sempre verificar
PeakEquity > 0antes do cálculo. - Lag de escrita em arquivo – use
FILE_WRITE|FILE_CSVe feche o handle imediatamente.
7. Mini‑dashboard textual (exemplo de saída no log)
=== DRAWNDOWN MONITOR === Time: 2026.06.28 14:35:12 Equity: 1 245,30 Peak: 1 500,00 Drawdown: 16.97% =========================
Copie o bloco acima para o Print() ao final de OnTick(). Ele fornece visão instantânea sem abrir o arquivo.
8. Cronograma semanal de otimização
| Dia | Atividade |
|---|---|
| Segunda | Revisar logs de drawdown e ajustar limite. |
| Quarta | Backtest de 1 mes com parâmetros de stop‑loss. |
| Sexta | Atualizar script de WebRequest e validar planilha. |
Seguindo esses passos, o cálculo de drawdown torna‑se totalmente automático, auditável e integrado ao seu fluxo de trading. O resultado é maior controle de risco e decisões baseadas em dados reais, sem intervenção manual.
Perfil ideal e limitações práticas
Quem realmente tira proveito do script “Como calcular Drawdown automaticamente em MQL5” é o trader que já opera em contas reais ou demo, entende de gestão de risco e precisa de métricas instantâneas para validar estratégias.
- Perfil compatível: programadores MQL5 de nível intermediário a avançado; gestores de carteiras que cobram performance; analistas quantitativos que cruzam dados de back‑test.
- Quem deve evitar: iniciantes absolutos que ainda não dominam conceitos de equity, margem e cálculos de drawdown; traders que utilizam apenas indicadores visuais sem histórico de trade.
- Limitações contextuais: funciona apenas em plataformas MetaTrader 5; não captura drawdown em contas multi‑moeda sem ajustes de conversão; depende de dados de histórico completo – contas com gaps de preço ou dados corrompidos geram resultados distorcidos.
Checklist rápido antes de instalar
| Item | Condição |
|---|---|
| Versão do MT5 | >= 5.0 |
| Histórico completo | Sem lacunas de >1 dia |
| Conhecimento de MQL5 | Variáveis, loops, estruturas de dados |
| Objetivo claro | Monitorar drawdown máximo, médio e relativo |
FAQ contextual
- Posso usar o script em contas de teste de estratégia? Sim, mas apenas após validar que o período de teste engloba a volatilidade típica do mercado alvo.
- Ele calcula drawdown por período (dia, semana) ou só global? O código inclui parâmetros configuráveis; porém, a interface padrão exibe apenas o drawdown máximo histórico.
- O que acontece se houver spikes de preço não registrados? O cálculo ignora falhas de dados, gerando valores inferiores ao real – insira manualmente os gaps ou use um feed de dados limpo.
- É possível integrar com alertas por e‑mail? O script possui hook para funções de notificação, mas requer ajuste de credenciais SMTP.
Mini cenários reais
Um trader de EUR/USD que usa um EA de breakout vê seu capital despencar 12 % em duas horas. O script disparou o cálculo de drawdown em tempo real, permitindo fechar a posição antes que o prejuízo atingisse 20 % – o limite predefinido.
Já um gestor de fundos de commodities, operando em 5 pares simultâneos, percebeu que o drawdown máximo consolidado permanecia abaixo de 5 % graças ao ajuste de alavancagem sugerido pelos relatórios gerados pelo script.
Considerações finais e decisão editorial
O utilitário não é um “plug‑and‑play” para novatos, mas entrega valor concreto para quem tem disciplina de risco e necessidade de métricas precisas. A expectativa realista é reduzir a surpresa de perdas extremas em até 30 % quando usado em conjunto com limites de stop‑loss bem definidos. Limitações de dados e dependência do MT5 são barreiras que exigem atenção prévia.
Para quem se enquadra nos requisitos acima, o investimento de tempo compensa. Caso contrário, é mais prudente buscar soluções mais simples ou cursos de MQL5 antes de implementar.



