← Todos os artigos

Stop por ATR e alvo dinâmico: saídas que se ajustam à volatilidade

Por Jackson Jordão · 20 de outubro de 2026 · 6 min

Gráfico de linha verde oscilando na tela de um notebook
Foto: Markus Winkler/Unsplash

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.

  1. No OnInit, crie o handle com iATR e confira se ele é diferente de INVALID_HANDLE. Se for inválido, devolva INIT_FAILED.
  2. Quando o robô precisar do valor, use CopyBuffer para copiar o buffer do indicador para um array do tipo double.
  3. 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.
  4. 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.

  1. Descreva sua estratégia pelo Termo de Referência do site ou pelo WhatsApp, incluindo como você quer o stop e o alvo.
  2. Receba a análise do que é possível programar e o orçamento personalizado.
  3. Receba o robô testado em conta demo, com o código-fonte.

Orçamento pelo WhatsApp: (84) 99652-3661

Leia também