Ini adalah strategi trend-mengikuti yang menggabungkan crossover purata bergerak dengan Indeks Kekuatan Relatif (RSI). Strategi menentukan arah trend pasaran melalui crossover purata bergerak jangka pendek dan jangka panjang, sambil menggunakan RSI sebagai penapis momentum untuk mengesahkan kekuatan trend, dengan itu meningkatkan kebolehpercayaan isyarat perdagangan. Strategi ini juga menggabungkan stop-loss berasaskan peratusan dan mengambil keuntungan untuk pengurusan risiko.
Strategi ini menggunakan purata bergerak mudah (SMA) 9 tempoh dan 21 tempoh sebagai penunjuk trend utama. Isyarat panjang dihasilkan apabila MA jangka pendek melintasi di atas MA jangka panjang dan RSI adalah di atas 50, sementara isyarat pendek berlaku apabila MA jangka pendek melintasi di bawah MA jangka panjang dan RSI adalah di bawah 50. Reka bentuk ini memastikan arah perdagangan sejajar dengan kedua-dua trend dan momentum pasaran. Sistem mengawal nisbah risiko-balasan melalui tahap stop-loss 1% dan tahap keuntungan 2%.
Ini adalah strategi trend berikut yang berstruktur dengan logika yang jelas. Ia menyediakan arah trend asas melalui persimpangan MA, pengesahan momentum melalui RSI, digabungkan dengan mekanisme pengurusan risiko untuk membentuk sistem perdagangan yang lengkap. Walaupun ia mempunyai beberapa batasan yang melekat, melalui pengoptimuman dan penyesuaian berterusan, strategi ini mempunyai potensi untuk mengekalkan prestasi yang stabil di pelbagai persekitaran pasaran. Kunci kejayaan terletak pada pengoptimuman parameter dan pelaksanaan kawalan 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)