Estratégia de realização de lucro multinível EMA-ADX para rastreamento de tendências dinâmicas

EMA ADX ATR
Data de criação: 2025-02-18 14:08:02 última modificação: 2025-02-18 14:08:02
cópia: 0 Cliques: 405
1
focar em
1617
Seguidores

Estratégia de realização de lucro multinível EMA-ADX para rastreamento de tendências dinâmicas

Visão geral

A estratégia é um sistema de negociação de seguimento de tendências que combina os indicadores EMA e ADX para otimizar o gerenciamento de fundos por meio de vários níveis de stop-loss e stop-loss móvel. A estratégia usa a linha de equilíbrio EMA para determinar a direção da tendência, o indicador ADX para filtrar a força da tendência e projetou um mecanismo de stop-loss de três camadas para dividir os lucros, enquanto usa o ATR para ajustar dinamicamente a posição de stop-loss para controlar o risco.

Princípio da estratégia

A lógica central da estratégia inclui as seguintes partes principais:

  1. Utilizando a linha média da EMA de 50 períodos para determinar a direção da tendência, o preço quebra a EMA acima e abre mais, quebra a EMA abaixo e abre mais
  2. Filtração de tendências fracas através do indicador ADX de 14 períodos e confirmação de tendências válidas quando ADX > 20
  3. Baseado no ATR de 14 períodos, calcula-se a posição de stop loss dinâmica, com o valor de um bônus a menos de 1 ATR no preço mais baixo e um bônus a mais de 1 ATR no preço mais alto.
  4. O sistema de retenção é composto por três camadas:
    • Primeira camada: 30% de posições em 1x ATR.
    • Segunda camada: 50% de posições em 2x ATR.
    • Terceira camada: 20% de posições com um travão móvel de 3 vezes o ATR
  5. Quando o preço atinge o ponto de paralisação do segundo nível, todas as posições restantes são automaticamente eliminadas

Vantagens estratégicas

  1. O projeto Multi-Layer Stop-Stop permite que você bloqueie o lucro e não perca o mercado.
  2. O mecanismo de stop loss móvel pode adaptar-se à volatilidade do mercado e fornecer controle de risco dinâmico
  3. Filtragem ADX é eficaz para evitar falsos sinais de mercados em turbulência
  4. EMA e cruzamento de preços fornecem um sinal claro de entrada
  5. O bloqueio por lotes diminui a volatilidade e favorece a implementação da estratégia a longo prazo.

Risco estratégico

  1. A frequência de entradas e saídas em mercados turbulentos pode aumentar os custos
  2. A EMA como indicador de atraso pode não reagir de forma oportuna em uma rápida reversão
  3. Os limites fixos do ADX podem precisar de ser ajustados em diferentes cenários de mercado
  4. A paralisação de múltiplos níveis pode ser prematura em uma tendência unilateral Medidas de mitigação:
  • Os limites do ADX podem ser ajustados de acordo com a dinâmica de diferentes ciclos de mercado
  • Considere aumentar os indicadores de confirmação de tendências
  • Optimização de parâmetros mais detalhados para a proporção de paralisação

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

  1. Introdução de indicadores de volume de transações para reforçar a confirmação de tendências
  2. Ajuste do ADX de acordo com a dinâmica da volatilidade do mercado
  3. Optimizar a proporção de distribuição de posições no nível de suspensão
  4. Aumentar a escala de intensidade da tendência para responder a diferentes estratégias de suspensão
  5. Considere a inclusão de fatores sazonais e de julgamentos de ciclo de mercado

Resumir

Trata-se de uma estratégia de acompanhamento de tendências de estrutura completa e lógica clara, que equilibra o lucro e o risco por meio de múltiplos níveis de stop-loss e stop-loss dinâmico. A estratégia é projetada de forma global de acordo com os princípios básicos de negociação quantitativa, com boa escalabilidade e espaço para otimização.

Código-fonte da estratégia
/*backtest
start: 2024-03-06 18:40:00
end: 2025-02-17 00:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("BTC Optimized Strategy v6", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=250)

// === 參數設定 ===
lengthEMA = input(50, title="EMA 週期")
adxLength = input(14, title="ADX 週期")
atrLength = input(14, title="ATR 週期")
riskReward = input(2.0, title="風險報酬比")
tp1_ratio = input(1.0, title="TP1 (ATR 倍數)")
tp2_ratio = input(2.0, title="TP2 (ATR 倍數)")
trailATR = input(3.0, title="移動止盈 ATR 倍數")

// === 計算技術指標 ===
ema = ta.ema(close, lengthEMA)
atr = ta.atr(atrLength)

// === 計算 ADX ===
upMove = math.max(high - nz(high[1], high), 0)
downMove = math.max(nz(low[1], low) - low, 0)
tr = math.max(math.max(high - low, math.abs(high - nz(close[1], close))), math.abs(low - nz(close[1], close)))
plusDM = upMove > downMove and upMove > 0 ? upMove : 0
minusDM = downMove > upMove and downMove > 0 ? downMove : 0
plusDI = 100 * ta.rma(plusDM, adxLength) / ta.rma(tr, adxLength)
minusDI = 100 * ta.rma(minusDM, adxLength) / ta.rma(tr, adxLength)
dx = 100 * math.abs(plusDI - minusDI) / (plusDI + minusDI)
adx = ta.rma(dx, adxLength)

// === 趨勢過濾條件 ===
isTrending = adx > 20

// === 進場條件 ===
longCondition = ta.crossover(close, ema) and isTrending
shortCondition = ta.crossunder(close, ema) and isTrending

// === 計算止損、止盈價格 ===
longStopLoss = low - atr
shortStopLoss = high + atr
longTP1 = close + tp1_ratio * atr
longTP2 = close + tp2_ratio * atr
shortTP1 = close - tp1_ratio * atr
shortTP2 = close - tp2_ratio * atr

// === 設定進場和出場 ===
if longCondition
    strategy.entry("Long", strategy.long)
    strategy.exit("Long_Exit1", from_entry="Long", qty_percent=30, limit=longTP1, stop=longStopLoss)
    strategy.exit("Long_Exit2", from_entry="Long", qty_percent=50, limit=longTP2, stop=longStopLoss)
    strategy.exit("Long_Trail", from_entry="Long", qty_percent=20, 
                 trail_points=atr * trailATR, 
                 trail_offset=atr * trailATR)

if shortCondition
    strategy.entry("Short", strategy.short)
    strategy.exit("Short_Exit1", from_entry="Short", qty_percent=30, limit=shortTP1, stop=shortStopLoss)
    strategy.exit("Short_Exit2", from_entry="Short", qty_percent=50, limit=shortTP2, stop=shortStopLoss)
    strategy.exit("Short_Trail", from_entry="Short", qty_percent=20, 
                 trail_points=atr * trailATR, 
                 trail_offset=atr * trailATR)

// === 當價格超過 TP2 後,自動平倉 ===
if close >= longTP2
    strategy.close("Long")

if close <= shortTP2
    strategy.close("Short")

// === 畫圖標示 ===
plotshape(series=longCondition, location=location.belowbar, color=color.blue, style=shape.labelup, title="買入")
plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, title="賣出")
plot(ema, color=color.orange, title="EMA")