
Strategi ini adalah kaedah perdagangan kuantitatif yang menggabungkan trend-tracking dan pembelajaran mesin yang bertujuan untuk menangkap trend pasaran dan mengurangkan risiko melalui sinyal pengesahan dan pengesahan trend yang dinamik. Strategi ini menggunakan purata bergerak sederhana jangka pendek dan jangka panjang (SMA) untuk mengenal pasti arah trend yang berpotensi, dan menggunakan indeks kekuatan relatif (RSI) sebagai ejen ketidakpercayaan pembelajaran mesin untuk mengesahkan isyarat perdagangan.
Strategi Pemantauan Trend Dinamis dan Pengurusan Risiko Peningkatan Pembelajaran Mesin adalah kaedah perdagangan kuantitatif yang komprehensif, yang menyediakan alat yang kuat kepada peniaga dengan menggabungkan pemantauan trend, pengesahan isyarat, dan pengurusan risiko dinamik. Walaupun terdapat beberapa risiko yang berpotensi dalam strategi, prestasi dan kesesuaian dapat ditingkatkan lagi dengan pengoptimuman dan penambahbaikan yang berterusan. Arah perkembangan masa depan harus memberi tumpuan kepada pengenalan teknologi pembelajaran mesin yang lebih maju, analisis pelbagai dimensi, dan mekanisme penyesuaian diri untuk menghadapi persekitaran pasaran yang sentiasa berubah.
/*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")