Strategi ini adalah sistem perdagangan kuantitatif yang menggabungkan prinsip regresi rata-rata dengan indikator teknis MACD dan ATR. Strategi ini mengidentifikasi deviasi harga melalui Bollinger Bands, memanfaatkan momentum konfirmasi MACD, dan melakukan manajemen risiko dinamis dalam kombinasi dengan ATR. Ide inti dari strategi ini adalah untuk menangkap peluang untuk regresi harga melalui verifikasi dari beberapa indikator teknis ketika ada deviasi yang signifikan.
Strategi ini menggunakan tiga teknik indikator yang bekerja sama: pertama, menilai apakah ada harga yang menyimpang secara signifikan melalui Bollinger Bands up and down; kedua, menggunakan indikator MACD untuk memverifikasi pergerakan harga, memastikan arah perdagangan sesuai dengan tren pasar; dan terakhir, memperkenalkan indikator ATR untuk mengatur posisi stop loss dan gain yang dinamis. Secara khusus, ketika harga menembus Bollinger Bands down dan MACD line di atas garis sinyal, sistem menghasilkan sinyal multi; dan ketika harga menembus Bollinger Bands up dan MACD line di bawah garis sinyal, sistem menghasilkan sinyal kosong.
Ini adalah strategi yang menggabungkan analisis teknis klasik dengan metode perdagangan kuantitatif modern. Dengan penggunaan kombinasi dari beberapa indikator, strategi ini mempertahankan keunggulan inti dari strategi mean reversion dan mengatasi keterbatasan dari satu indikator. Strategi ini sangat terukur, dengan pengoptimalan parameter dan penambahan modul fungsional, dapat terus meningkatkan kinerjanya di berbagai lingkungan pasar.
/*backtest
start: 2024-11-12 00:00:00
end: 2024-12-11 08:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Enhanced Mean Reversion with MACD and ATR", overlay=true)
// Nastavenia Bollinger Bands
bbLength = input(20, title="Bollinger Bands Length")
bbMult = input(2, title="Bollinger Bands Multiplier")
basis = ta.sma(close, bbLength)
dev = ta.stdev(close, bbLength)
upperBand = basis + bbMult * dev
lowerBand = basis - bbMult * dev
// MACD indikátor
macdShort = input(12, title="MACD Short Length")
macdLong = input(26, title="MACD Long Length")
macdSignal = input(9, title="MACD Signal Length")
[macdLine, signalLine, _] = ta.macd(close, macdShort, macdLong, macdSignal)
// ATR pre dynamický Stop Loss a Take Profit
atrLength = input(14, title="ATR Length")
atrMultiplier = input(1.5, title="ATR Multiplier")
atrValue = ta.atr(atrLength)
// Vstupné podmienky pre long pozície
longCondition = ta.crossover(close, lowerBand) and macdLine > signalLine
if (longCondition)
strategy.entry("Long", strategy.long)
// Vstupné podmienky pre short pozície
shortCondition = ta.crossunder(close, upperBand) and macdLine < signalLine
if (shortCondition)
strategy.entry("Short", strategy.short)
// Dynamický Stop Loss a Take Profit na základe ATR
longSL = strategy.position_avg_price - atrValue * atrMultiplier
longTP = strategy.position_avg_price + atrValue * atrMultiplier * 2
shortSL = strategy.position_avg_price + atrValue * atrMultiplier
shortTP = strategy.position_avg_price - atrValue * atrMultiplier * 2
// Pridanie stop loss a take profit
if (strategy.position_size > 0)
strategy.exit("Take Profit/Stop Loss", "Long", stop=longSL, limit=longTP)
if (strategy.position_size < 0)
strategy.exit("Take Profit/Stop Loss", "Short", stop=shortSL, limit=shortTP)
// Vizualizácia Bollinger Bands a MACD
plot(upperBand, color=color.red, title="Upper Bollinger Band")
plot(lowerBand, color=color.green, title="Lower Bollinger Band")
plot(basis, color=color.blue, title="Bollinger Basis")
hline(0, "MACD Zero Line", color=color.gray)
plot(macdLine - signalLine, color=color.blue, title="MACD Histogram")
plot(macdLine, color=color.red, title="MACD Line")
plot(signalLine, color=color.green, title="Signal Line")
// Generovanie alertov
alertcondition(longCondition, title="Long Alert", message="Long Entry Signal")
alertcondition(shortCondition, title="Short Alert", message="Short Entry Signal")