Estratégia de rastreamento de tendência adaptável ATR filtrada por médias móveis duplas

EMA ATR HEIKIN ASHI Trailing Stop TAKE PROFIT
Data de criação: 2025-04-25 15:01:18 última modificação: 2025-04-25 15:01:18
cópia: 0 Cliques: 403
2
focar em
319
Seguidores

Estratégia de rastreamento de tendência adaptável ATR filtrada por médias móveis duplas Estratégia de rastreamento de tendência adaptável ATR filtrada por médias móveis duplas

Visão geral

A estratégia combina um sistema de filtragem de dupla linha uniforme e um mecanismo de stop loss de seguimento adaptativo ATR, que permite o acompanhamento de tendências de alta taxa de ganho, através do mapeamento Heikin Ashi para suavizar a flutuação dos preços. O núcleo da estratégia é usar o EMA rápido e o EMA lento como filtros de direção de tendência, enquanto o stop loss dinâmico baseado no ATR é usado para proteger os lucros.

Princípio da estratégia

  1. Camada de geração de sinais

    • Preços com a conversão de Heikin Ashi como fonte de dados base (preço original comutável)
    • Calcule o canal ATR: Determine a largura do canal dinâmico através do comprimento do ATR () 20) e do múltiplo () 1.0)
    • Realização de stop loss de rastreamento adaptativo: acionamento de um sinal de reversão quando o preço ultrapassa um canal
  2. Filtragem de tendências

    • Sistema de dupla EMA ((10 ciclos de linha rápida / 50 ciclos de linha lenta)
    • Só é permitido fazer mais quando a linha rápida é mais alta que a linha lenta, ao contrário, é permitido fazer menos
  3. Gestão de Riscos

    • Tracking stop loss: controle de stop loss por meio dos parâmetros trail_step e trail_offset
    • Ponto fixo de parada: take_profit_points define um objetivo de lucro absoluto
  4. Execução lógica

    • Abrir uma posição quando o preço ultrapassar o canal ATR e estiver de acordo com a direção da EMA
    • Aparecimento de um sinal de reversão ou toque de um ponto de parada

Análise de vantagens

  1. Projeto de alta taxa de sucessoO mecanismo de filtragem triplo ((Heikin Ashi Smooth + ATR Channel + EMA Cross) é eficaz na redução de falsos sinais
  2. Adaptação ao ventoATR: Ajustação dinâmica de stop loss para expandir automaticamente o espaço de erro quando a volatilidade aumenta
  3. Continuidade da tendênciaEMA: Filtragem para garantir que apenas as oportunidades de negociação estejam de acordo com a direção das grandes tendências
  4. Compatível com vários quadros temporaisParâmetros ajustáveis para diferentes variedades de volatilidade
  5. Ajuda visualA marcação de sinais de compra e venda embutida e a visualização de linha uniforme facilitam a verificação manual.

Análise de Riscos

  1. Risco de reversão de tendênciaO ATR é um canal de transmissão de dados que pode causar perdas excessivas em situações de reversão acentuada.
    • Otimização: aumento do limite máximo de perda de retração
  2. Parâmetros não se encaixamA taxa de sucesso de 90% pode ser optimizada em dados históricos específicos.
    • Otimização: Realização de testes de Walk-Forward com múltiplos ciclos
  3. Desgaste do discoA EMA intercepta um sinal falso em uma cidade em tremor
    • Otimização: introdução de filtros ADX ou um limite de taxa de flutuação
  4. Efeito de deslizamentoO preço de um stop loss pode ser desfavorável em uma corrida rápida.
    • Otimização: Configurar a tolerância mínima de deslizamento

Direção de otimização

  1. Ajuste de parâmetros dinâmicos

    • Ajuste automático do múltiplo ATR de acordo com a volatilidade do mercado (como o índice VIX)
    • Princípio de implementação: porcentagem do diferencial padrão ou da flutuação histórica
  2. Sistema de filtragem composto

    • Adição de confirmação de peso de transação: requer um aumento de volume de transação para uma brecha
    • Aumentar o filtro de tempo: evitar a divulgação de dados econômicos importantes
  3. Otimização de aprendizagem de máquina

    • Ajustar o conjunto de ciclos EMA usando a dinâmica de aprendizagem por reforço
    • Previsão do ponto de parada ideal através do LSTM
  4. Verificação multidimensional

    • Introdução de confirmação de tendência em nível de circunferência
    • Adição de desvio do RSI como sinal auxiliar de saída

Resumir

A estratégia permite a captura de tendências de alta probabilidade por meio da estrutura tripla Heikin Ashi-ATR-EMA, e o mecanismo de parada dinâmica protege efetivamente os lucros. A principal vantagem reside na integração orgânica entre a determinação da direção da tendência (EMA), a adaptação da taxa de flutuação (ATR) e a filtragem de ruído (Heikin Ashi).

Código-fonte da estratégia
/*backtest
start: 2025-01-01 00:00:00
end: 2025-04-23 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"DOGE_USDT"}]
*/

//@version=5
strategy("UTBot + EMA Filter (HA + ATR Logic)", overlay = true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// === INPUTS ===
bandwidth = input.float(8., 'Bandwidth')
atr_mult = input.float(1.0, 'ATR Multiplier')
atr_len = input.int(20, 'ATR Length')
ema_fast_len = input.int(10, 'EMA Fast Length')
ema_slow_len = input.int(50, 'EMA Slow Length')
use_heikin = input.bool(true, title='Use Heikin Ashi Candle')
trail_step = input.float(10.0, title='Trailing Step (Points)', minval=0.1)
trail_offset = input.float(10.0, title='Trailing Offset (Points)', minval=0.1)
take_profit_points = input.float(100.0, title='Take Profit (Points)', minval=0.1)

// === SOURCE ===
sr = use_heikin ? request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close) : close

// === ATR Trailing Stop ===
atr = ta.atr(atr_len)
nLoss = atr_mult * atr

var float trail = na
iff_1 = sr > nz(trail[1]) ? sr - nLoss : sr + nLoss
iff_2 = sr < nz(trail[1]) and sr[1] < nz(trail[1]) ? math.min(nz(trail[1]), sr + nLoss) : iff_1
trail := sr > nz(trail[1]) and sr[1] > nz(trail[1]) ? math.max(nz(trail[1]), sr - nLoss) : iff_2

// === EMA FILTER ===
ema_fast = ta.ema(sr, ema_fast_len)
ema_slow = ta.ema(sr, ema_slow_len)

// === ENTRY & EXIT CONDITIONS ===
buy = sr[1] < trail[1] and sr > trail and ema_fast > ema_slow
sell = sr[1] > trail[1] and sr < trail and ema_fast < ema_slow

// === EXIT on opposite signal ===
exit_buy = sell
exit_sell = buy

// === STRATEGY EXECUTION ===
if buy
    strategy.entry("Buy", strategy.long)
if sell
    strategy.entry("Sell", strategy.short)

if exit_buy and strategy.position_size > 0
    strategy.close("Buy")
if exit_sell and strategy.position_size < 0
    strategy.close("Sell")

// === TRAILING STOP + TAKE PROFIT ===
// Long
if strategy.position_size > 0
    strategy.exit("Exit Long", from_entry="Buy", trail_points=trail_step, trail_offset=trail_offset, limit=sr + take_profit_points)

// Short
if strategy.position_size < 0
    strategy.exit("Exit Short", from_entry="Sell", trail_points=trail_step, trail_offset=trail_offset, limit=sr - take_profit_points)

// === PLOTS ===
plotshape(buy, title='Buy Signal', text='Buy', location=location.belowbar, color=color.green, style=shape.labelup, textcolor=color.white, size=size.tiny)
plotshape(sell, title='Sell Signal', text='Sell', location=location.abovebar, color=color.red, style=shape.labeldown, textcolor=color.white, size=size.tiny)

plot(ema_fast, color=color.teal, title='EMA Fast')
plot(ema_slow, color=color.purple, title='EMA Slow')

// === ALERTS ===
alertcondition(buy, title='UTBot Buy', message='UTBot Buy Signal')
alertcondition(sell, title='UTBot Sell', message='UTBot Sell Signal')