
Strategi ini didasarkan pada prinsip regresi rata-rata, memanfaatkan harga yang menyimpang dari rata-rata bergerak untuk membuat keputusan perdagangan. Ketika harga menyimpang ke atas dari jalur atas, lakukan shorting, ketika harga menyimpang ke bawah dari jalur bawah, lakukan shorting, dan ketika harga kembali ke rata-rata bergerak, lakukan equalisation. Inti dari strategi ini adalah asumsi bahwa harga akan selalu kembali ke level rata-rata.
Strategi Mean reversion adalah strategi perdagangan kuantitatif yang didasarkan pada prinsip-prinsip statistik untuk membuat keputusan perdagangan dengan membangun harga rata-rata naik atau turun. Logika strategi ini sederhana, pelaksanaan yang jelas, tetapi harus memperhatikan pilihan varietas dan optimasi parameter. Dalam aplikasi praktis, juga perlu mempertimbangkan faktor-faktor seperti tren, biaya perdagangan, kontrol risiko, untuk meningkatkan kehandalan strategi dan profitabilitas.
/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Mean Regression Strategy", overlay=true)
// Define the lookback period for the moving average
length = input.int(20, title="Moving Average Length")
mult = input.float(1.5, title="Standard Deviation Multiplier")
// Calculate the moving average and standard deviation
ma = ta.sma(close, length)
dev = mult * ta.stdev(close, length)
// Calculate upper and lower bands
upper_band = ma + dev
lower_band = ma - dev
// Plot the moving average and bands
plot(ma, color=color.blue, linewidth=2, title="Moving Average")
plot(upper_band, color=color.red, linewidth=2, title="Upper Band")
plot(lower_band, color=color.green, linewidth=2, title="Lower Band")
// Entry conditions
long_condition = ta.crossover(close, lower_band)
short_condition = ta.crossunder(close, upper_band)
// Exit conditions
exit_long_condition = ta.crossunder(close, ma)
exit_short_condition = ta.crossover(close, ma)
// Strategy orders
if (long_condition)
strategy.entry("Long", strategy.long)
if (short_condition)
strategy.entry("Short", strategy.short)
if (exit_long_condition)
strategy.close("Long")
if (exit_short_condition)
strategy.close("Short")
// Plot signals on the chart
plotshape(series=long_condition, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal")
plotshape(series=short_condition, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal")