Strategi ini adalah pendekatan perdagangan kuantitatif yang menggabungkan trend berikut dengan pembelajaran mesin, bertujuan untuk menangkap trend pasaran sambil mengurangkan risiko melalui kerugian berhenti dinamik dan isyarat pengesahan trend. Strategi ini menggunakan purata bergerak mudah (SMA) jangka pendek dan jangka panjang untuk mengenal pasti arah trend yang berpotensi, dan menggunakan Indeks Kekuatan Relatif (RSI) sebagai proksi untuk keyakinan pembelajaran mesin untuk mengesahkan isyarat perdagangan. Selain itu, strategi menggunakan stop loss dinamik dan trailing stop berdasarkan Julat Benar Purata (ATR) untuk mengoptimumkan pengurusan risiko.
Strategi Mengikuti Trend Dinamis dengan Pengurusan Risiko Peningkatan Pembelajaran Mesin adalah pendekatan perdagangan kuantitatif yang komprehensif yang menyediakan peniaga dengan alat yang kuat dengan menggabungkan trend berikut, pengesahan isyarat, dan pengurusan risiko dinamik. Walaupun strategi mempunyai beberapa risiko berpotensi, prestasi dan daya adaptasi dapat ditingkatkan lagi melalui pengoptimuman dan peningkatan yang berterusan.
/*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")