이 전략은 동적 스톱 손실 및 트렌드 확인 신호를 통해 위험을 줄이는 동시에 시장 추세를 포착하는 것을 목표로하는 기계 학습과 트렌드를 따르는 양적 거래 접근법입니다. 이 전략은 잠재적 인 트렌드 방향을 식별하기 위해 단기 및 장기간 간단한 이동 평균 (SMA) 을 활용하며, 거래 신호를 확인하기 위해 상대 강도 지수 (RSI) 를 기계 학습 신뢰의 대리점으로 사용합니다. 또한 전략은 위험 관리를 최적화하기 위해 평균 진정한 범위 (ATR) 에 기반한 동적 스톱 손실 및 트레일링 스톱을 사용합니다.
머신러닝 강화된 리스크 관리와 함께 동적 트렌드 추적 전략은 트렌드 추적, 신호 확인 및 동적 리스크 관리를 결합하여 거래자에게 강력한 도구를 제공하는 포괄적 인 정량적 거래 접근법입니다. 전략에는 잠재적인 위험이 있지만 지속적인 최적화 및 향상으로 성능과 적응력이 더욱 향상 될 수 있습니다. 미래 개발은 끊임없이 변화하는 시장 환경에 대처하기 위해 더 고급 기계 학습 기술, 다차원 분석 및 적응 메커니즘을 도입하는 데 중점을 두어야합니다.
/*backtest start: 2024-09-18 00:00:00 end: 2024-09-25 00:00:00 period: 15m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Enhanced Trend Following with ML", overlay=true) // User Inputs shortLength = input.int(20, minval=1, title="Short Moving Average Length") longLength = input.int(50, minval=1, title="Long Moving Average Length") atrPeriod = input.int(14, title="ATR Period") stopLossMultiplier = input.float(2.0, title="Stop Loss Multiplier") mlConfidenceThreshold = input.float(0.5, title="ML Confidence Threshold") // Calculate Moving Averages shortMA = ta.sma(close, shortLength) longMA = ta.sma(close, longLength) // Plot Moving Averages plot(shortMA, title="Short MA", color=color.red) plot(longMA, title="Long MA", color=color.blue) // Trend Strength Indicator (using RSI as a proxy for ML confidence) mlSignal = math.round(ta.rsi(close, 14) / 100) // Conditions for entering trades longCondition = ta.crossover(shortMA, longMA) and mlSignal > mlConfidenceThreshold shortCondition = ta.crossunder(shortMA, longMA) and mlSignal < (1 - mlConfidenceThreshold) // ATR for dynamic stop loss atrValue = ta.atr(atrPeriod) stopLoss = atrValue * stopLossMultiplier // Trade Entry if (longCondition) strategy.entry("Long", strategy.long) strategy.exit("SLLong", "Long", stop=strategy.position_avg_price - stopLoss) if (shortCondition) strategy.entry("Short", strategy.short) strategy.exit("SLShort", "Short", stop=strategy.position_avg_price + stopLoss) // Trade Management longCrossover = ta.crossover(shortMA, longMA) shortCrossunder = ta.crossunder(shortMA, longMA) if (strategy.position_size > 0) if (longCrossover) strategy.close("Long") if (strategy.position_size < 0) if (shortCrossunder) strategy.close("Short") // Trailing Stop for existing positions var float trailStopLong = strategy.position_avg_price var float trailStopShort = strategy.position_avg_price if (strategy.position_size > 0) trailStopLong := math.min(trailStopLong, close) strategy.exit("TrailLong", "Long", stop=trailStopLong) if (strategy.position_size < 0) trailStopShort := math.max(trailStopShort, close) strategy.exit("TrailShort", "Short", stop=trailStopShort) // Additional alert for trend changes alertcondition(longCrossover, title="Bullish Trend Change", message="Bullish trend change detected") alertcondition(shortCrossunder, title="Bearish Trend Change", message="Bearish trend change detected")