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.
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.
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")