이 전략은 트렌드를 따르는 시스템으로, 여러 개의 평형 이동 평균을 기반으로 삼중 평형화를 사용하여 시장 소음을 필터하고, RSI 모멘텀 지표, ATR 변동성 지표 및 200주기 EMA 트렌드 필터를 결합하여 거래 신호를 확인합니다. 이 전략은 1시간 시간 프레임에서 작동하며, 이는 기관 거래 행동과 조화를 이루면서 거래 빈도와 트렌드 신뢰성을 효과적으로 균형있게합니다.
전략의 핵심은 가격의 세 배 평형화를 통해 주요 트렌드 라인을 구축하고 짧은 기간 신호 라인과 교차를 통해 거래 신호를 생성하는 것입니다. 거래 신호는 동시에 다음 조건을 충족해야합니다. 1. 200EMA에 대한 가격 지위는 주요 트렌드 방향을 확인합니다. 2. RSI 지표 위치가 동력을 확인 3. ATR 지표는 충분한 변동성을 확인합니다. 세 번 매끄러운 MA와 신호 라인 교차 특정 입구점을 확인 스톱 로스는 ATR 기반의 동적 스톱을 사용하며, 수익은 ATR의 2배로 설정되어 유리한 리스크/어워드 비율을 보장합니다.
이것은 완전한 구조와 엄격한 논리를 가진 트렌드를 따르는 전략입니다. 여러 매끄러운 처리 및 여러 확인 메커니즘을 통해 거래 신호의 신뢰성을 효과적으로 향상시킵니다. 동적 위험 관리 메커니즘은 좋은 적응력을 제공합니다. 약간의 지연이 있지만, 전략은 여전히 매개 변수 최적화 및 추가 보조 지표를 통해 개선 할 수있는 상당한 여지가 있습니다.
/*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")