Gestão de risco no robô de Forex: lote, stop e limite diário
Por Jackson Jordão · 6 de outubro de 2026 · 6 min
Gestão de risco no robô de Forex é um conjunto de três regras programadas no código: o lote calculado pelo risco por operação, o stop loss sempre definido e um limite de perda diária que desliga o robô. Sem isso, o robô opera com o mesmo lote em qualquer situação, e uma sequência ruim de operações pode consumir a conta antes de você perceber.
A regra mais importante é calcular o lote a partir da distância do stop e de um percentual fixo do saldo, usando os dados do próprio ativo que a plataforma informa. Lote fixo no código é o erro mais comum, e é ele que faz o mesmo robô arriscar 0,5% num par e 3% em outro.
Risco por operação: o que significa
Risco por operação é o valor que você aceita perder se o stop for atingido, definido como percentual do saldo ou do patrimônio. Quem arrisca 1% de uma conta de 10.000 aceita perder 100 naquela operação. O percentual é uma decisão sua, e o robô só precisa obedecê-la.
Esse valor não depende do lote isoladamente. Ele depende do lote, da distância do stop e do valor de cada ponto do ativo. Por isso o lote precisa ser calculado a cada operação, e não digitado uma vez nos parâmetros.
Como calcular o lote pelo risco no MT5
O cálculo segue uma sequência simples. O robô precisa de quatro informações: o saldo, o percentual de risco, a distância do stop e o valor do tick do ativo.
- Valor em risco: saldo multiplicado pelo percentual de risco. A função AccountInfoDouble com ACCOUNT_BALANCE (ou ACCOUNT_EQUITY) entrega o saldo.
- Distância do stop em ticks: a diferença entre o preço de entrada e o stop, dividida pelo tamanho do tick (SYMBOL_TRADE_TICK_SIZE, lida com SymbolInfoDouble).
- Perda por lote: distância em ticks multiplicada pelo valor do tick (SYMBOL_TRADE_TICK_VALUE) na moeda da conta.
- Lote bruto: valor em risco dividido pela perda por lote.
Falta o último passo, que muita gente esquece: ajustar o lote às regras do ativo. O lote bruto quase nunca é um número válido. O robô deve arredondar para baixo, de acordo com o passo de volume (SYMBOL_VOLUME_STEP), e respeitar o mínimo (SYMBOL_VOLUME_MIN) e o máximo (SYMBOL_VOLUME_MAX). Arredondar para baixo evita arriscar mais do que o definido.
Dica: Se o lote mínimo do ativo já arrisca mais do que o percentual escolhido, o robô deve recusar a operação em vez de abrir com o lote mínimo mesmo assim. Esse comportamento precisa estar nas regras combinadas.
Alguns ativos têm valor do tick que varia, como pares em que a moeda de cotação é diferente da moeda da conta. Ler o valor do tick na hora do cálculo, e não guardá-lo em constante, resolve isso. A função OrderCalcProfit também pode ser usada para simular o resultado de uma operação hipotética no stop, o que dá uma conferência independente do cálculo.
Stop loss: sempre definido e validado
O risco por operação só existe de verdade se o stop existe. O robô deve enviar o stop junto com a ordem, e não depender de uma segunda ordem enviada depois. Se a conexão cair entre as duas, a posição fica sem proteção.
O stop pode ser fixo em pontos, baseado em ATR ou ligado a uma estrutura do gráfico, como a última mínima. O método muda a distância, mas o cálculo do lote continua o mesmo. Quanto mais longe o stop, menor o lote para o mesmo risco.
O robô também precisa respeitar a distância mínima que a corretora aceita entre o preço e o stop (SYMBOL_TRADE_STOPS_LEVEL). Ordens com stop perto demais são rejeitadas, e um robô que não trata a rejeição pode ficar sem operar ou, pior, sem stop. A função OrderCheck valida a ordem antes do envio.
Limite de perda diária
O limite diário é um disjuntor. Quando a perda do dia atinge o valor definido, o robô fecha o que estiver aberto, se você quiser, e para de abrir novas operações até o dia seguinte. Ele protege contra dias em que a estratégia está descompassada com o mercado.
A conta do dia precisa somar duas partes: o resultado das operações já fechadas e o resultado flutuante das posições abertas. Veja como o robô monta isso:
- Resultado fechado: o robô chama HistorySelect do início do dia até o momento atual e soma o lucro, a comissão e o swap das negociações de saída.
- Resultado aberto: percorre as posições abertas com PositionsTotal e soma o lucro de cada uma.
- Comparação: se a soma for menor ou igual ao limite negativo (em valor ou em percentual do saldo inicial do dia), o robô aciona o bloqueio.
O início do dia deve seguir o horário do servidor da corretora, que costuma ser diferente do horário de Brasília. Esse detalhe causa limites que "resetam" no meio da tarde e confundem o usuário. Deixe claro no robô qual referência de horário ele usa.
Dica: O bloqueio precisa sobreviver a um reinício do MetaTrader. Se o robô guarda o estado só na memória, ao reiniciar ele volta a operar como se o dia estivesse zerado. Grave o estado em variável global do terminal (GlobalVariableSet) ou recalcule tudo pelo histórico a cada início.
Outros limites que valem a pena
- Número máximo de operações por dia, para impedir que um erro de lógica abra ordens em sequência.
- Limite de posições abertas ao mesmo tempo no mesmo ativo ou na conta inteira.
- Spread máximo para entrar: se o spread está anormal, o robô não abre a ordem.
- Parada após uma sequência de perdas, com retomada manual ou no dia seguinte.
- Filtro de margem livre, para não abrir uma operação que deixe a conta perto da chamada de margem.
O que a gestão de risco não faz
Gestão de risco limita o tamanho da perda, mas não torna uma estratégia lucrativa. Um robô com boa gestão e uma estratégia ruim perde devagar. Também não elimina o risco de gap, de derrapagem (slippage) em notícias ou de execução acima do stop em momentos de baixa liquidez. Operar no mercado financeiro envolve risco de perda de capital, e nenhum robô garante resultado.
Por isso, depois de programar, é preciso testar. O testador de estratégias do MT5 mostra se o lote está sendo calculado como esperado e se o limite diário dispara no dia certo. O teste em conta demo e em conta cent confirma o comportamento com a execução real.
Resumo
- Calcule o lote a cada operação, a partir do risco em porcentagem e da distância do stop.
- Leia o valor do tick, o passo e os limites de volume do ativo na plataforma, sem valores fixos no código.
- Arredonde o lote para baixo e recuse a operação se o lote mínimo arriscar mais do que o definido.
- Envie o stop junto com a ordem e valide a distância mínima aceita pela corretora.
- Programe o limite diário somando o resultado fechado e o flutuante, com o estado preservado após reinícios.
Quer a gestão de risco no seu robô de Forex?
Na MQLExpert, a gestão de risco entra no robô desde o primeiro desenho da estratégia, com lote por risco, limite diário e filtros configuráveis nos parâmetros.
- Descreva a sua estratégia e as regras de risco que você quer pelo Termo de Referência ou pelo WhatsApp.
- Fazemos a análise e confirmamos o que é viável no MetaTrader 5, incluindo o comportamento no seu ativo.
- Entregamos o robô testado em conta demo e com o código-fonte.