Visão geral: A estratégia ATR trailing stop é uma estratégia de negociação que define dinamicamente os níveis de stop loss com base no indicador Average True Range (ATR).
A estratégia calcula o indicador AVERAGE (média móvel de preços) e as faixas superior/inferior DIFF/DIFFLOW com base nos valores ATR, formando um canal de negociação.
Especificamente, ele primeiro calcula a média móvel simples AVERAGE e o indicador ATR. A faixa superior DIFF e a faixa inferior DIFFLOW são então calculadas multiplicando os valores ATR por um coeficiente. Isso forma um canal de negociação limitado por DIFF e DIFFLOW. Quando o preço quebra acima da faixa superior, uma posição longa é tomada. Quando o preço quebra abaixo da faixa inferior, uma posição curta é tomada. Além disso, o nível de stop loss se move dinamicamente com os valores ATR. Isso permite paradas adaptativas.
Assim, a estratégia pode ser continuamente longa/curta para capturar lucros nas principais tendências, ao mesmo tempo em que utiliza ATR trailing stops para controlar o risco, o que a torna adequada para instrumentos voláteis.
As vantagens desta estratégia incluem:
As paradas dinâmicas baseadas em ATR ajustam-se à volatilidade do mercado, evitando paradas demasiado próximas ou demasiado distantes.
O canal de negociação visa capturar a reversão média dentro das tendências.
Negociação de tendências contínuas sem previsão de rupturas.
Parâmetros e regras simples, fáceis de entender e automatizar.
A utilização elevada do capital, o comércio contínuo proporcionam mais oportunidades de lucro.
Alguns riscos a considerar:
Os grandes coeficientes de ATR levam a paradas muito distantes, não conseguindo controlar o risco.
Ajustar os coeficientes ATR para reduzir as paradas indesejadas.
Perdas potenciais quando o preço se inverte após a ruptura inicial.
Grandes picos podem tornar as paradas ineficazes.
Optimizações possíveis:
Otimizar os parâmetros do ATR para encontrar o equilíbrio adequado entre o acompanhamento da volatilidade e a prevenção de paradas excessivas.
Adicionar indicador de tendência, apenas quebras de negociação na direção da tendência.
Os parâmetros de ensaio devem ser analisados individualmente para cada instrumento, a fim de determinar os valores ideais.
Optimize a entrada, considere entrar nas breakouts do canal.
Aumentar o tamanho das posições, controlando simultaneamente o risco total/recuperação.
A estratégia ATR trailing stop negocia continuamente as tendências enquanto gerencia o risco de forma dinâmica. Ela se adapta a instrumentos voláteis e fornece uma boa utilização do capital. A otimização de parâmetros e a adição de filtros podem refinar ainda mais o desempenho.
/*backtest start: 2023-09-18 00:00:00 end: 2023-09-25 00:00:00 period: 5m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Investoz //@version=4 strategy("ATR Strategy FOREX", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100) len = input(26, type=input.integer, minval=1, title="Length") mul = input(1, type=input.float, minval=0, title="Length") mullow = input(2, type=input.float, minval=0, title="Length") price = sma(close, 1) average = ema(close, len) diff = atr(len) * mul difflow = atr(len) * mullow bull_level = average + diff bear_level = average - difflow bull_cross = crossunder(price, bear_level) bear_cross = crossunder(bull_level, price) FromMonth = input(defval = 8, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 18, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2008, title = "From Year", minval = 2008) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 2020, title = "To Year", minval = 2019) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) startTimeOk() => true if (startTimeOk()) strategy.entry("KOP", strategy.long, when=bull_cross) strategy.close("KOP", when=bear_cross) strategy.entry("SALJ", strategy.short, when=bear_cross) strategy.close("SALJ", when=bull_cross) plot(price, title="price", color=color.black, transp=50, linewidth=2) a0 = plot(average, title="average", color=color.red, transp=50, linewidth=1) a1 = plot(bull_level, title="bull", color=color.green, transp=50, linewidth=1) a2 = plot(bear_level, title="bear", color=color.red, transp=50, linewidth=1) fill(a0, a1, color=color.green, transp=97) fill(a0, a2, color=color.red, transp=97)