
Strategi ini adalah sistem perdagangan kuantitatif yang didasarkan pada teori regresi rata-rata, yang menggabungkan Bollinger Bands, RSI, dan ATR Dynamic Stop Loss. Strategi ini melakukan perdagangan dengan mengidentifikasi situasi ekstrim di mana harga menyimpang dari rata-rata. Strategi ini melakukan perdagangan ketika harga menyentuh Bollinger Bands dan RSI berada di zona oversold, melakukan trading ketika harga menyentuh Bollinger Bands dan RSI berada di zona oversold, dan melakukan trading dengan posisi kosong ketika harga menyentuh Bollinger Bands dan RSI berada di zona oversold.
Strategi ini menggunakan 20 siklus Bollinger Bands sebagai indikator utama untuk menilai tren, dengan standar deviasi ganda 2.0, untuk menentukan batas atas dan bawah dari pergerakan harga. Selain itu, strategi ini juga memperkenalkan 14 siklus RSI sebagai indikator tambahan, RSI di bawah 30 dianggap sebagai oversold, di atas 70 dianggap sebagai overbought.
Strategi ini melalui aplikasi kombinasi Brin dan RSI, membangun sebuah sistem perdagangan regresi rata-rata yang lengkap. Pengenalan stop loss dinamis ATR secara efektif mengendalikan risiko, membuat strategi memiliki karakteristik risiko-penghasilan yang baik. Meskipun ada ruang untuk optimasi, konsep desain keseluruhan jelas dan praktis.
/*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)