Programadores que já mexem com MQL5 sabem que a maior dor de cabeça não está na sintaxe, e sim em manter o capital vivo quando o mercado vira. O gerenciamento de risco percentual tenta garantir que, independente da volatilidade, cada operação consuma apenas a fração que você definiu previamente – nada de “perdi tudo num trade”. A seguir, mostro como transformar esse conceito em código funcional, onde a dificuldade prática costuma estar na conversão de lotes, stop‑loss e margem em um único parâmetro de risco.
1. Definindo o percentual de risco
- Risco desejado (%): normalmente entre 0,5 % e 2 % do saldo livre.
- Valor em moeda:
RiskMoney = AccountFreeMargin() * RiskPercent / 100. - Impacto do stop‑loss: quanto o preço pode mover antes de fechar a posição.
2. Calculando o tamanho do lote
O ponto crítico é relacionar RiskMoney ao StopLoss em pontos. A fórmula básica:
| Variável | Descrição |
|---|---|
| RiskMoney | Valor monetário que se aceita perder. |
| SL_Points | Distância entre preço de entrada e stop‑loss, em pontos. |
| TickValue | Valor de um ponto para o símbolo. |
| LotSize | Resultado = RiskMoney / (SL_Points * TickValue). |
Exemplo: saldo livre R$10.000, risco 1 % → R$100. Se o SL for 50 pontos e o tick value for $0,10, o lote será 100 / (50*0.10) = 20 lotes padrão. Ajuste para o SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN) e o SYMBOL_VOLUME_STEP para evitar rejeição.
3. Implementação prática no EA
double GetLotSize(double riskPercent, double stopLossPoints) { double freeMargin = AccountFreeMargin(); double riskMoney = freeMargin * riskPercent / 100.0; double tickValue = SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE); double lot = riskMoney / (stopLossPoints * tickValue); double minLot = SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN); double lotStep = SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP); lot = MathFloor(lot/lotStep)*lotStep; // alinhamento ao passo return (lotChamado antes de abrir a ordem, o EA já garante que o risco não ultrapasse o limite estabelecido.
4. Onde o método pode falhar
- Mercados de alta alavancagem (ex.: Forex) podem ter
SYMBOL_TRADE_TICK_VALUEvariável durante o dia, distorcendo o cálculo. - Stops em pips “não‑redondos” podem gerar lotes abaixo do mínimo, provocando rejeição da ordem.
- Eventos de slippage podem fazer o preço de execução ficar acima do stop, aumentando o risco real.
5. FAQ rápido
- Posso usar risco fixo em dólares? Sim, basta substituir
AccountFreeMargin()porAccountBalance()ou por um valor estático. - E se o stop‑loss for em % ao invés de pontos? Converta a porcentagem para preço e depois para pontos antes de aplicar a fórmula.
- Como lidar com símbolos de spread variável? Recalcule
tickValuea cada tick ou useSymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)dentro da função.
Aplicar risco percentual em MQL5 não é magia; é disciplina codificada. Ajuste os parâmetros ao seu perfil, teste em conta demo e, quando o algoritmo provar consistência, leve para o real. Para quem quer aprofundar, o guia oficial da MetaQuotes sobre gerenciamento de risco traz detalhes de margem que complementam este tutorial.
Primeiros passos após a compra
- Instale o MetaEditor e abra o arquivo .mq5 entregue.
- Crie um novo script chamado
RiskManager.mq5e cole o template base. - Defina a variável global
riskPercent(ex.:input double riskPercent=1.5;).
Configuração inicial do módulo de risco
| Parâmetro | Descrição | Valor padrão |
|---|---|---|
riskPercent | Percentual do capital a arriscar por operação. | 1.0 |
accountEquity | Equidade da conta obtida via AccountEquity(). | Atualizada a cada tick |
lotSize | Tamanho de lote calculado dinamicamente. | — |
Rotina recomendada de cálculo
- Capture a equidade:
double equity = AccountEquity(); - Calcule o risco monetário:
double riskMoney = equity * riskPercent / 100; - Obtenha o valor do ponto (pip) do ativo:
double pipValue = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE); - Determine a distância do stop‑loss em pips (ex.: 30 pips).
- Calcule o lote:
lotSize = NormalizeDouble(riskMoney / (stopLossPips * pipValue), 2);
Checklist operacional – antes de enviar a ordem
- ✅
riskPercentajustado ao perfil (0.5 % – 2 %). - ✅ Stop‑loss definido em pips coerente com a volatilidade atual.
- ✅ Verificação de margem:
AccountFreeMargin()>lotSize * MarginRequired. - ✅ Condição de mercado (tendência, suporte/resistência) validada.
- ✅ Log de cálculo gravado em
FileWrite()para auditoria.
Erros comuns e como evitá‑los
- Uso de risco fixo em dólares – substitua por percentual para manter consistência quando a equidade varia.
- Ignorar o spread – inclua o spread no cálculo do stop‑loss para não subestimar o risco real.
- Redimensionamento manual de lote – deixe o algoritmo controlar o tamanho; intervenções manuais geram viés.
Fluxograma simplificado de execução
[Início] → [Ler riskPercent] → [Obter equity] → [Calcular riskMoney] → [Definir stopLossPips] → [Calcular lotSize] → [Validar margem] → [Enviar ordem] → [Log] → [Fim]
Sinais de progresso
- Redução da volatilidade do drawdown em 2‑3 % nas primeiras 100 trades.
- Consistência de R‑multiple acima de 1,5.
- Relatórios semanais mostrando
lotSizesempre dentro do intervalo0.01‑0.10(para contas < 10k).
Hábitos complementares para não abandonar o workflow
- Reserve 15 minutos ao final de cada sessão para revisar o log e ajustar
riskPercentse a equidade mudar mais de 5 %. - Utilize o painel de métricas do MetaTrader para monitorar drawdown e taxa de acerto.
- Mantenha um diário de trade separado – anote o motivo da entrada, o stop‑loss escolhido e a reação do mercado.
Quem realmente tira proveito do “Como criar gerenciamento de risco percentual em MQL5”?
Se você já codifica EAs e tem a necessidade de limitar perdas de forma matemática, esse material encaixa como uma luva. Não serve para quem busca “copy‑paste” de scripts pré‑prontos sem entender a lógica subjacente.
Perfil ideal
- Trader programador. Conhecimento básico de MQL5, loops e funções.
- Gestor de risco consciente. Já usa stop‑loss ou trailing, mas quer automatizar a alocação percentual por operação.
- Operador de contas de médio a alto volume. Onde uma variação de 1 % pode representar milhares de dólares.
Quem provavelmente ficará frustrado
- Iniciantes absolutos que não sabem nem abrir um MetaEditor.
- Investidores que preferem usar apenas indicadores visuais no gráfico.
- Quem espera “ganhar 10 % ao dia” sem adaptar a estratégia ao seu capital.
Limitações práticas
O guide foca em cálculo percentual puro; ele não resolve slippage, latência de execução ou falta de liquidez, que podem corroer o resultado esperado. Além disso, a implementação depende de dados de preço em tempo real; em back‑testes com dados limitados, o risco pode parecer sub‑ou super‑estimatado.
Checklist rápido antes de aplicar
| Item | Verificação |
|---|---|
| Domínio básico de MQL5? | ✔️ Sim / ❌ Não |
| Capital suficiente para suportar múltiplas perdas de X %? | ✔️ Sim / ❌ Não |
| Broker com execução de ordens em menos de 50 ms? | ✔️ Sim / ❌ Não |
| Estratégia já testada sem gerenciamento? | ✔️ Sim / ❌ Não |
FAQ contextual
Q: Posso usar o mesmo script em contas demo?
A: Funciona, mas sem a pressão real de capital, o “comportamento do risco” pode ser ilusório.
Q: O código limita a quantidade de trades simultâneos?
Não. Ele calcula o lote ideal por operação; o controle de múltiplas posições fica a cargo do trader.
Q: Há suporte a hedging?
O exemplo padrão usa net‑position, porém a lógica pode ser adaptada para contas que permitem hedging.
Mini cenários reais
Maria, 34, desenvolve um scalper de 5 pips. Com 10 % de risco por dia, o script sugeriu lotes de 0,02 lots, preservando 0,5 % de capital por operação. Resultado: reduziu a frequência de chamadas de margem em 70 %.
Já o João, 41, trader de notícias, tentou aplicar a mesma fórmula a um robô que abre 20 ordens por evento. O risco total saiu acima de 5 % em poucos segundos, levando a um stop‑out inesperado.
Percepção prática e decisão editorial
O material entrega a ferramenta de cálculo que falta para quem quer “fazer o próprio risco” em MQL5. Ele não é um plug‑and‑play universal; exige adaptação e consciência das condições de mercado. Se você tem disciplina para calibrar tamanho de posição e tolerância a drawdown, o guia é um investimento de tempo que paga dividendos de controle.
Se você não está disposto a mexer no código ou a monitorar a qualidade da execução, o risco de usar o script “às cegas” pode superar o benefício. Em termos de custo‑benefício, o conteúdo vale para programadores intermediários que pretendem solidificar a camada de risco de seus EAs.
Pronto para testar? Baixar o guia agora

