Ini adalah strategi trend-following yang menggabungkan crossover rata-rata bergerak dengan Relative Strength Index (RSI). Strategi ini menentukan arah tren pasar melalui crossover rata-rata bergerak jangka pendek dan jangka panjang, sambil menggunakan RSI sebagai filter momentum untuk mengkonfirmasi kekuatan tren, sehingga meningkatkan keandalan sinyal perdagangan. Strategi ini juga menggabungkan stop-loss dan take-profit berbasis persentase untuk manajemen risiko.
Strategi ini menggunakan 9-periode dan 21-periode Simple Moving Averages (SMA) sebagai indikator tren utama. Sinyal panjang dihasilkan ketika MA jangka pendek melintasi di atas MA jangka panjang dan RSI di atas 50, sementara sinyal pendek terjadi ketika MA jangka pendek melintasi di bawah MA jangka panjang dan RSI di bawah 50.
Ini adalah strategi trend-mengikuti terstruktur dengan logika yang jelas. Ini memberikan arah tren dasar melalui MA crossover, konfirmasi momentum melalui RSI, dikombinasikan dengan mekanisme manajemen risiko untuk membentuk sistem perdagangan yang lengkap. Meskipun memiliki beberapa keterbatasan yang melekat, melalui optimasi dan penyesuaian terus-menerus, strategi ini memiliki potensi untuk mempertahankan kinerja yang stabil di berbagai lingkungan pasar. Kunci keberhasilan terletak pada optimasi parameter dan pelaksanaan kontrol risiko.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-10 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Moving Average Crossover + RSI Strategy", overlay=true, shorttitle="MA RSI Strategy") // --- Input Parameters --- shortMA = input.int(9, title="Short MA Period", minval=1) longMA = input.int(21, title="Long MA Period", minval=1) rsiLength = input.int(14, title="RSI Length", minval=1) rsiOverbought = input.int(70, title="RSI Overbought Level", minval=50, maxval=100) rsiOversold = input.int(30, title="RSI Oversold Level", minval=0, maxval=50) stopLossPercent = input.float(1, title="Stop Loss Percentage", minval=0.1, maxval=10.0) / 100 takeProfitPercent = input.float(2, title="Take Profit Percentage", minval=0.1, maxval=10.0) / 100 // --- Calculate Moving Averages --- shortMA_value = ta.sma(close, shortMA) longMA_value = ta.sma(close, longMA) // --- Calculate RSI --- rsi_value = ta.rsi(close, rsiLength) // --- Buy and Sell Conditions --- longCondition = ta.crossover(shortMA_value, longMA_value) and rsi_value > 50 shortCondition = ta.crossunder(shortMA_value, longMA_value) and rsi_value < 50 // --- Plot Moving Averages --- plot(shortMA_value, color=color.blue, linewidth=2, title="Short MA") plot(longMA_value, color=color.red, linewidth=2, title="Long MA") // --- Plot RSI (Optional) --- hline(rsiOverbought, "Overbought", color=color.red) hline(rsiOversold, "Oversold", color=color.green) plot(rsi_value, color=color.purple, title="RSI") // --- Strategy Execution --- if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.entry("Short", strategy.short) // --- Risk Management (Stop Loss and Take Profit) --- longStopLoss = close * (1 - stopLossPercent) longTakeProfit = close * (1 + takeProfitPercent) shortStopLoss = close * (1 + stopLossPercent) shortTakeProfit = close * (1 - takeProfitPercent) // Set the stop loss and take profit for long and short positions strategy.exit("Long Exit", from_entry="Long", stop=longStopLoss, limit=longTakeProfit) strategy.exit("Short Exit", from_entry="Short", stop=shortStopLoss, limit=shortTakeProfit)