Strategi ini adalah sistem perdagangan kuantitatif berdasarkan teori pulangan rata-rata, yang menggabungkan Bollinger Bands, RSI dan ATR Dynamic Stop Loss. Strategi ini melakukan perdagangan dengan mengenal pasti keadaan melampau harga yang menyimpang dari nilai rata-rata, melakukan perdagangan apabila harga menyentuh Bollinger Bands bawah dan RSI berada di kawasan oversold, apabila harga menyentuh Bollinger Bands atas dan RSI berada di kawasan overbought dan kosong.
Strategi ini menggunakan 20 pusingan Bollinger Bands sebagai petunjuk utama untuk menilai trend, dengan standard deviasi ganda 2.0, untuk menentukan batas atas dan bawah pergerakan harga. Strategi ini juga memperkenalkan 14 pusingan RSI sebagai petunjuk tambahan, RSI di bawah 30 dianggap sebagai oversold, lebih tinggi dari 70 dianggap sebagai overbought. Apabila harga menembusi Bollinger Bands dan RSI di bawah 30 menunjukkan pasaran mungkin oversold, sistem mengeluarkan banyak isyarat; Apabila harga menembusi Bollinger Bands dan RSI di atas 70, menunjukkan pasaran mungkin oversold, sistem mengeluarkan isyarat kosong.
Strategi ini membina sistem perdagangan pulangan rata-rata yang lengkap melalui aplikasi gabungan Brin dan RSI. Pengenalan ATR stop loss dinamik mengawal risiko dengan berkesan, menjadikan strategi ini mempunyai ciri-ciri keuntungan risiko yang baik. Walaupun terdapat ruang untuk pengoptimuman, konsep reka bentuk keseluruhan jelas dan praktikal.
/*backtest
start: 2024-11-19 00:00:00
end: 2024-11-26 00:00:00
period: 15m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("SOL/USDT Mean Reversion Strategy", overlay=true)
// Input parameters
length = input(20, "Bollinger Band Length")
std_dev = input(2.0, "Standard Deviation")
rsi_length = input(14, "RSI Length")
rsi_oversold = input(30, "RSI Oversold")
rsi_overbought = input(70, "RSI Overbought")
// Calculate indicators
[middle, upper, lower] = ta.bb(close, length, std_dev)
rsi = ta.rsi(close, rsi_length)
// Entry conditions
long_entry = close < lower and rsi < rsi_oversold
short_entry = close > upper and rsi > rsi_overbought
// Exit conditions
long_exit = close > middle or rsi > rsi_overbought
short_exit = close < middle or rsi < rsi_oversold
// Strategy execution
if (long_entry)
strategy.entry("Long", strategy.long)
if (short_entry)
strategy.entry("Short", strategy.short)
if (long_exit)
strategy.close("Long")
if (short_exit)
strategy.close("Short")
// Stop loss and take profit
atr = ta.atr(14)
strategy.exit("Long SL/TP", "Long", stop=strategy.position_avg_price - 2*atr, limit=strategy.position_avg_price + 3*atr)
strategy.exit("Short SL/TP", "Short", stop=strategy.position_avg_price + 2*atr, limit=strategy.position_avg_price - 3*atr)
// Plot indicators
plot(middle, color=color.yellow, title="BB Middle")
plot(upper, color=color.red, title="BB Upper")
plot(lower, color=color.green, title="BB Lower")
// Plot entry and exit points
plotshape(long_entry, title="Long Entry", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(short_entry, title="Short Entry", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
plotshape(long_exit, title="Long Exit", location=location.abovebar, color=color.orange, style=shape.circle, size=size.small)
plotshape(short_exit, title="Short Exit", location=location.belowbar, color=color.orange, style=shape.circle, size=size.small)