Stop por ATR e alvo dinâmico: saídas que se ajustam à volatilidade
Por Jackson Jordão · 20 de outubro de 2026 · 6 min

O stop por ATR é um stop cuja distância não é fixa: ela é um múltiplo do ATR (Average True Range), que mede quanto o preço costuma se mover por candle. Quando o mercado está agitado, o stop fica mais largo; quando está calmo, fica mais curto. O alvo pode seguir a mesma lógica, e o robô passa a respeitar a volatilidade do momento.
Um stop fixo de 100 pontos pode ser folgado numa manhã tranquila e curto demais num dia de notícia, quando o ruído normal do preço já passa disso. Neste artigo você vê como o ATR é calculado, como lê-lo no MQL5 e quais cuidados evitam que o robô calcule o stop errado.
O que o ATR mede
O ATR parte do true range (faixa verdadeira) de cada candle, que é o maior valor entre três distâncias: máxima menos mínima, máxima menos o fechamento anterior (em módulo) e mínima menos o fechamento anterior (em módulo). Isso inclui os gaps, que a simples diferença entre máxima e mínima ignoraria. O ATR é a média desse true range num período, e 14 é o valor mais comum.
O resultado vem em unidades de preço, não em porcentagem. Um ATR de 150 pontos no mini índice quer dizer que, em média, o candle andou 150 pontos nesse período. Ele não indica direção: só informa o tamanho típico do movimento.
Como transformar o ATR em stop e alvo
A regra básica usa um multiplicador. Para uma compra: stop = preço de entrada menos (ATR × multiplicador do stop). Alvo = preço de entrada mais (ATR × multiplicador do alvo). Na venda, os sinais se invertem.
- Multiplicador do stop: valores de 1,5 a 3 são comuns em testes. Quanto maior, mais espaço o preço tem para respirar, mas maior a perda por operação.
- Multiplicador do alvo: define a relação entre ganho e perda planejados. Alvo igual a 1,5 vez o stop, por exemplo, é uma escolha de projeto, não uma garantia de resultado.
- Período do ATR: períodos curtos reagem rápido à volatilidade; os longos suavizam. Teste mais de um e compare.
Nada disso torna a estratégia lucrativa por si só. O ATR apenas ajusta a distância das saídas; a entrada continua precisando de uma lógica que funcione no teste e fora dele.
Como ler o ATR no MQL5
No MQL5, o ATR vem do indicador técnico iATR. Segundo a documentação do MQL5, a função iATR recebe o símbolo, o período gráfico e o período médio (ma_period) e devolve um manipulador (handle) do indicador. Em caso de falha, ela devolve INVALID_HANDLE.
- No OnInit, crie o handle com iATR e confira se ele é diferente de INVALID_HANDLE. Se for inválido, devolva INIT_FAILED.
- Quando o robô precisar do valor, use CopyBuffer para copiar o buffer do indicador para um array do tipo double.
- Confira o retorno de CopyBuffer: se ele não devolver a quantidade pedida, os dados ainda não estão prontos e o robô deve esperar, não operar.
- No OnDeinit, libere o handle com IndicatorRelease.
Dica: Leia o ATR do candle já fechado (deslocamento 1), não do candle em formação. O valor do candle atual muda a cada tick, e um stop calculado em cima dele pode variar de uma execução para outra, o que dificulta o teste e a conferência.
Cuidados ao calcular o stop
- Normalize o preço: arredonde o stop e o alvo para a precisão do ativo (SYMBOL_DIGITS) e, em ativos com passo de preço, para um múltiplo de SYMBOL_TRADE_TICK_SIZE. Preço fora do passo é recusado pelo servidor.
- Respeite a distância mínima: a corretora define a distância mínima do stop em relação ao preço (SYMBOL_TRADE_STOPS_LEVEL). Com ATR muito pequeno, o stop calculado pode ficar mais perto do que o permitido.
- Limite o stop: defina um valor mínimo e um máximo em pontos. Um ATR anormalmente alto, como num leilão ou numa notícia, geraria um stop gigante.
- Considere o spread: em compra, o stop fecha pelo preço Bid; em venda, pelo Ask. Num ativo com spread largo, o stop pode ser tocado antes do que o gráfico sugere.
O lote precisa acompanhar o stop
Com stop variável, o lote fixo vira um problema: o mesmo lote com um stop de 80 pontos e com um de 240 pontos significa riscos três vezes diferentes. A forma correta é inverter a conta: defina quanto você aceita perder por operação e calcule o lote a partir da distância do stop daquele momento.
Assim, quando a volatilidade sobe e o stop alarga, o lote diminui; quando ela cai, o lote pode aumentar dentro do limite configurado. Esse raciocínio está detalhado no artigo sobre gestão de risco, em /blog/gestao-de-risco-robo-forex-metatrader-5. Lembre-se de respeitar o lote mínimo, o máximo e o passo de lote do ativo.
Alvo dinâmico e trailing por ATR
O ATR também serve para mover o stop depois que a operação abre. No trailing por ATR, o stop acompanha o preço a uma distância de ATR × multiplicador, e só se move a favor da posição, nunca contra. Combinado com um ponto de breakeven, ele protege parte do movimento sem apertar demais a saída. Os detalhes de como o trailing funciona no MT5 estão em /blog/trailing-stop-breakeven-robo-metatrader-5.
Sobre o alvo, há duas escolhas: fixá-lo no momento da entrada (ATR daquele instante) ou recalculá-lo a cada candle. A primeira é mais simples de testar; a segunda exige cuidado para o alvo não fugir indefinidamente.
Como testar sem enganar a si mesmo
Multiplicador e período do ATR são parâmetros, e parâmetros convidam à otimização exagerada. Se você procurar o par que deu o melhor resultado no passado, provavelmente vai encontrar uma coincidência. Prefira faixas de valores em que o resultado seja parecido, e valide num período que o robô nunca viu. O passo a passo está em /blog/otimizacao-mt5-overfitting-walk-forward.
Faça o backtest com dados de boa qualidade e considere custos e spread. Resultado de teste não garante resultado em conta real, e o mercado pode mudar o comportamento da volatilidade.
Resumo
- O ATR mede o tamanho típico do movimento do preço e não indica direção.
- Stop e alvo por ATR são múltiplos dele: ficam largos com volatilidade alta e curtos com volatilidade baixa.
- No MQL5, crie o handle com iATR, copie o valor com CopyBuffer, confira os retornos e libere com IndicatorRelease.
- Normalize os preços e respeite SYMBOL_TRADE_STOPS_LEVEL; limite o stop com um mínimo e um máximo.
- Com stop variável, calcule o lote pelo risco aceito por operação, e valide fora da amostra.
Quer um robô com saídas por ATR?
Se você tem uma estratégia e quer que as saídas se ajustem à volatilidade, a Digital Master12 programa isso no seu Expert Advisor para MetaTrader 5.
- Descreva sua estratégia pelo Termo de Referência do site ou pelo WhatsApp, incluindo como você quer o stop e o alvo.
- Receba a análise do que é possível programar e o orçamento personalizado.
- Receba o robô testado em conta demo, com o código-fonte.