O recurso está a ser carregado... Carregamento...

Tendência de cruzamento dinâmico de média móvel multi-suavizada seguindo uma estratégia com múltiplas confirmações

Autora:ChaoZhang, Data: 2025-01-17 15:53:16
Tags:MAEMARSIATRSMARMAWMASLTP

 Multi-Smoothed Moving Average Dynamic Crossover Trend Following Strategy with Multiple Confirmations

Resumo

Esta estratégia é um sistema de seguimento de tendências baseado em múltiplas médias móveis suavizadas, usando suavização tripla para filtrar o ruído do mercado, combinando o indicador de momento do RSI, o indicador de volatilidade ATR e o filtro de tendência da EMA de 200 períodos para confirmar os sinais de negociação.

Princípios de estratégia

O núcleo da estratégia consiste em construir uma linha de tendência principal através da tripla suavização dos preços e gerar sinais de negociação através de cruzamento com uma linha de sinal de período mais curto. 1. A posição do preço em relação ao 200EMA confirma a direcção da tendência principal 2. A posição do indicador RSI confirma a dinâmica 3. O indicador ATR confirma uma volatilidade suficiente O cruzamento de linhas de sinal com MA triplo suave confirma pontos de entrada específicos O stop-loss utiliza paradas dinâmicas baseadas em ATR, enquanto o take-profit é definido em 2x ATR para garantir rácios de risco-recompensa favoráveis.

Vantagens da estratégia

  1. A tripla suavização reduz significativamente os falsos sinais e melhora a fiabilidade do julgamento da tendência
  2. Mecanismos de confirmação múltiplos garantem que a orientação do comércio esteja alinhada com as principais tendências
  3. A definição dinâmica de stop-loss e take-profit adapta-se a diferentes ambientes de volatilidade do mercado
  4. A operação estratégica num período de tempo de 1 hora evita eficazmente oscilações de um período de tempo inferior
  5. O recurso de não repintura garante a confiabilidade dos resultados dos backtests

Riscos estratégicos

  1. Pode produzir pequenas perdas consecutivas em mercados variados
  2. Mecanismos de confirmação múltiplos podem causar oportunidades de negociação perdidas
  3. O atraso do sinal pode afetar a otimização do ponto de entrada
  4. Requer volatilidade suficiente para gerar sinais eficazes
  5. As paradas dinâmicas podem não ser suficientemente oportunas em condições extremas de mercado

Orientações para a otimização da estratégia

  1. Pode adicionar indicadores de volume como confirmação auxiliar
  2. Considerar a introdução de mecanismos de otimização de parâmetros adaptativos
  3. Pode acrescentar uma avaliação quantitativa da força da tendência
  4. Otimizar as configurações do multiplicador de stop-loss e take-profit
  5. Considerar a adição de indicadores de oscilador para melhorar o desempenho do mercado de variação

Resumo

Esta é uma estratégia de seguimento de tendências com estrutura completa e lógica rigorosa. Através de múltiplos mecanismos de processamento de suavização e múltiplos mecanismos de confirmação, melhora efetivamente a confiabilidade dos sinais de negociação. O mecanismo dinâmico de gerenciamento de risco fornece boa adaptabilidade. Embora haja algum atraso, a estratégia ainda tem espaço significativo para melhoria por meio da otimização de parâmetros e indicadores auxiliares adicionais.


/*backtest
start: 2024-12-17 00:00:00
end: 2025-01-16 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

//@version=6
strategy("Optimized Triple Smoothed MA Crossover Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=200)

// === Input Settings ===
slength = input.int(7, "Main Smoothing Length", group="Moving Average Settings")
siglen = input.int(12, "Signal Length", group="Moving Average Settings")
src = input.source(close, "Data Source", group="Moving Average Settings")
mat = input.string("EMA", "Triple Smoothed MA Type", ["EMA", "SMA", "RMA", "WMA"], group="Moving Average Settings")
mat1 = input.string("EMA", "Signal Type", ["EMA", "SMA", "RMA", "WMA"], group="Moving Average Settings")

// === Trend Confirmation (Higher Timeframe Filter) ===
useTrendFilter = input.bool(true, "Enable Trend Filter (200 EMA)", group="Trend Confirmation")
trendMA = ta.ema(close, 200)

// === Momentum Filter (RSI Confirmation) ===
useRSIFilter = input.bool(true, "Enable RSI Confirmation", group="Momentum Confirmation")
rsi = ta.rsi(close, 14)
rsiThreshold = input.int(50, "RSI Threshold", group="Momentum Confirmation")

// === Volatility Filter (ATR) ===
useATRFilter = input.bool(true, "Enable ATR Filter", group="Volatility Filtering")
atr = ta.atr(14)
atrMa = ta.sma(atr, 14)

// === Risk Management (ATR-Based Stop Loss) ===
useAdaptiveSL = input.bool(true, "Use ATR-Based Stop Loss", group="Risk Management")
atrMultiplier = input.float(1.5, "ATR Multiplier for SL", minval=0.5, maxval=5, group="Risk Management")
takeProfitMultiplier = input.float(2, "Take Profit Multiplier", group="Risk Management")

// === Moving Average Function ===
ma(source, length, MAtype) =>
    switch MAtype
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "RMA" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)

// === Triple Smoothed Calculation ===
tripleSmoothedMA = ma(ma(ma(src, slength, mat), slength, mat), slength, mat)
signalLine = ma(tripleSmoothedMA, siglen, mat1)

// === Crossovers (Entry Signals) ===
bullishCrossover = ta.crossunder(signalLine, tripleSmoothedMA)
bearishCrossover = ta.crossover(signalLine, tripleSmoothedMA)

// === Additional Confirmation Conditions ===
trendLongCondition = not useTrendFilter or (close > trendMA)  // Only long if price is above 200 EMA
trendShortCondition = not useTrendFilter or (close < trendMA) // Only short if price is below 200 EMA

rsiLongCondition = not useRSIFilter or (rsi > rsiThreshold)  // RSI above 50 for longs
rsiShortCondition = not useRSIFilter or (rsi < rsiThreshold) // RSI below 50 for shorts

atrCondition = not useATRFilter or (atr > atrMa)  // ATR must be above its MA for volatility confirmation

// === Final Trade Entry Conditions ===
longCondition = bullishCrossover and trendLongCondition and rsiLongCondition and atrCondition
shortCondition = bearishCrossover and trendShortCondition and rsiShortCondition and atrCondition

// === ATR-Based Stop Loss & Take Profit ===
longSL = close - (atr * atrMultiplier)
longTP = close + (atr * takeProfitMultiplier)

shortSL = close + (atr * atrMultiplier)
shortTP = close - (atr * takeProfitMultiplier)

// === Strategy Execution ===
if longCondition
    strategy.entry("Long", strategy.long)
    strategy.exit("Long Exit", from_entry="Long", stop=longSL, limit=longTP)

if shortCondition
    strategy.entry("Short", strategy.short)
    strategy.exit("Short Exit", from_entry="Short", stop=shortSL, limit=shortTP)

// === Plots ===
plot(tripleSmoothedMA, title="Triple Smoothed MA", color=color.blue)
plot(signalLine, title="Signal Line", color=color.red)
plot(trendMA, title="200 EMA", color=color.gray)

// === Alerts ===
alertcondition(longCondition, title="Bullish Signal", message="Triple Smoothed MA Bullish Crossover Confirmed")
alertcondition(shortCondition, title="Bearish Signal", message="Triple Smoothed MA Bearish Crossover Confirmed")


Relacionados

Mais.