
Strategi ini adalah sistem perdagangan kuantitatif yang menggabungkan prinsip regresi nilai rata-rata dengan petunjuk teknikal MACD dan ATR. Strategi ini mengenal pasti penyimpangan harga melalui Bollinger Bands, menggunakan momentum pengesahan MACD, dan menggunakan ATR untuk pengurusan risiko dinamik. Idea teras strategi ini adalah untuk menangkap peluang regresi harga dengan mengesahkan pelbagai petunjuk teknikal apabila terdapat penyimpangan yang ketara.
Strategi ini menggunakan tiga cara kerja berserta indikator teknikal: pertama, menilai apakah terdapat penyimpangan harga yang ketara melalui jalur Brin yang naik ke bawah; kedua, menggunakan indikator MACD untuk mengesahkan pergerakan harga, memastikan arah perdagangan selaras dengan trend pasaran; terakhir, memperkenalkan indikator ATR untuk menetapkan kedudukan berhenti dan keuntungan yang dinamik. Secara khusus, apabila harga menembusi jalur Brin yang turun dan garis MACD berada di atas garis isyarat, sistem menghasilkan banyak isyarat; apabila harga menembusi jalur Brin yang naik ke atas dan garis MACD berada di bawah garis isyarat, sistem menghasilkan isyarat kosong.
Ini adalah strategi yang menggabungkan analisis teknikal klasik dengan kaedah dagangan kuantitatif moden. Dengan penggunaan gabungan pelbagai petunjuk, kedua-dua mengekalkan kelebihan utama strategi pulangan rata-rata dan mengatasi batasan satu petunjuk. Strategi yang boleh diperluas, dengan pengoptimuman parameter dan penambahan modul fungsi, dapat terus meningkatkan prestasinya dalam keadaan pasaran yang berbeza.
/*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")