Estratégia de acompanhamento de tendências ATR


Data de criação: 2023-09-28 11:32:09 última modificação: 2023-09-28 11:32:09
cópia: 0 Cliques: 795
1
focar em
1617
Seguidores

Visão geral

A estratégia baseia-se na direção da tendência com base no indicador de amplitude real média ATR, fazendo mais quando a tendência sobe e fazendo menos quando a tendência desce, pertencendo ao tipo de estratégia de acompanhamento de tendência.

Princípio da estratégia

A estratégia primeiro calcula uma média móvel simples (sma) e uma média móvel indexada (ema) dos preços. Em seguida, calcula-se o indicador ATR, ou seja, a faixa de flutuação média dos últimos N dias.

A estratégia determina a direção da tendência por meio da linha média e da linha superior (eMA + ATR *) e da linha inferior (eMA - ATR *). Quando o preço sobe, faça mais; quando o preço desce, faça menos.

A lógica principal do código:

  1. Calcular a média entre os preços de sma e ema
  2. Calcular o intervalo de variação do ATR médio
  3. Cálculo de trajectória ascendente e descendente
  4. Os preços estão em alta, mas os preços estão em alta.
  5. Sinais de falência: Preços abaixo da linha de queda
  6. Configuração de parada de perda de equilíbrio: preço abaixo do plano de linha de equilíbrio de entrada; preço acima do plano de linha de equilíbrio de saída

O ATR permite o ajuste dinâmico de posições e o acompanhamento de tendências.

Vantagens estratégicas

  1. Utilizando o indicador ATR para determinar a direção da tendência, é possível capturar a tendência dos preços de forma eficaz
  2. Stop Loss baseado em média para controlar o risco razoavelmente
  3. A lógica da estratégia é simples, clara e fácil de entender.
  4. Parâmetros configuráveis flexíveis para diferentes ambientes de mercado

Risco estratégico

  1. Indicadores ATR vão falhar em um mercado em forte turbulência
  2. Parâmetros mal definidos podem causar abertura de posição com muita frequência
  3. A parada de prejuízo pode não ser válida quando um evento inesperado causa uma reversão precipitada.
  4. Mercados com custos mais elevados, acompanhamento de configurações que necessitam de ajustes

Solução:

  1. Em um mercado com grande volatilidade, é melhor suspender a estratégia ou usar outros indicadores
  2. Parâmetros de otimização para reduzir a frequência de abertura de posições
  3. Aumentar a Stop Loss Rate para eventos de dados importantes
  4. Adaptação do ATR de acordo com a variedade

Direção de otimização da estratégia

  1. Combinação de parâmetros de otimização de indicadores de tendência, como a inclusão do MACD para determinar a tendência
  2. Adição de filtros, como os de Brin, que determinam a entrada
  3. Optimizar o stop loss, como mover o stop loss ou o indicador de saída
  4. Optimizar a escala ATR para uma variedade específica
  5. Aumentar as estratégias de gestão de fundos, como a quota fixa
  6. Parâmetros de otimização dinâmica combinados com métodos de aprendizagem de máquina

Resumir

A estratégia de rastreamento de tendências ATR tem uma visão geral clara, julga a direção da tendência através dos indicadores ATR e é uma estratégia típica de rastreamento de tendências. A vantagem da estratégia é a facilidade de operação e a capacidade de rastrear tendências de forma eficaz.

Código-fonte da estratégia
/*backtest
start: 2023-08-28 00:00:00
end: 2023-09-27 00:00:00
period: 1h
basePeriod: 15m
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(2.618, type=input.float, minval=0, title="Length")
mullow = input(2.386, 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()) and ema(close,1) > ema(close,528)
    strategy.entry("KOP", strategy.long, when=bull_cross) 
    strategy.close("KOP", when=bear_cross)  
if (startTimeOk()) and ema(close,1) < ema(close,528)
   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)