
Ini adalah strategi trend-following yang menggabungkan persilangan garis rata dan indikator yang agak kuat ((RSI)). Strategi ini menentukan arah trend pasaran melalui persilangan purata bergerak jangka pendek dan jangka panjang, sambil menggunakan RSI sebagai penapis momentum untuk mengesahkan kekuatan trend, yang meningkatkan kebolehpercayaan isyarat perdagangan. Strategi ini juga merangkumi peratusan stop loss dan stop loss untuk pengurusan risiko.
Strategi ini menggunakan purata bergerak sederhana (SMA) 9 dan 21 kitaran sebagai penunjuk trend utama. Apabila purata jangka pendek melintasi rata-rata jangka panjang ke atas dan RSI lebih besar daripada 50, sistem menghasilkan banyak isyarat; apabila purata jangka pendek melintasi rata-rata jangka panjang ke bawah dan RSI lebih kecil daripada 50, sistem menghasilkan isyarat kosong. Reka bentuk ini memastikan arah perdagangan selaras dengan trend dan pergerakan pasaran.
Ini adalah strategi pengesanan trend yang lengkap dan logik. Ia menyediakan arah trend asas melalui persimpangan linear, RSI memberikan pengesahan momentum, dan kemudian bekerjasama dengan mekanisme pengurusan risiko untuk membentuk sistem perdagangan yang lengkap. Walaupun terdapat beberapa batasan yang wujud, strategi ini dijangka mengekalkan prestasi yang stabil dalam pelbagai keadaan pasaran melalui pengoptimuman dan penyesuaian yang berterusan.
/*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)