Strategi ini adalah sistem perdagangan kuantitatif yang menggabungkan prinsip-prinsip pembalikan purata dengan penunjuk teknikal MACD dan ATR. Ia menggunakan Bollinger Bands untuk mengenal pasti penyimpangan harga, MACD untuk pengesahan momentum, dan ATR untuk pengurusan risiko dinamik.
Strategi ini menggunakan tiga penunjuk teknikal yang bekerja bersama: Pertama, Bollinger Bands menentukan penyimpangan harga yang ketara; kedua, MACD mengesahkan momentum harga, memastikan arah perdagangan sejajar dengan trend pasaran; akhirnya, ATR menetapkan tahap stop-loss dan take-profit yang dinamik. Khususnya, isyarat panjang dihasilkan apabila harga pecah di bawah Bollinger Band bawah dengan garis MACD di atas garis isyaratnya, sementara isyarat pendek berlaku apabila harga pecah di atas Bollinger Band atas dengan garis MACD di bawah garis isyaratnya. ATR secara dinamik menyesuaikan tahap stop-loss dan take-profit berdasarkan turun naik pasaran.
Strategi ini menggabungkan analisis teknikal klasik dengan kaedah perdagangan kuantitatif moden. Melalui penggunaan pelbagai penunjuk yang diselaraskan, ia mengekalkan kelebihan utama pembalikan purata sambil mengatasi batasan penunjuk tunggal. Strategi ini sangat boleh diperluaskan, mampu peningkatan berterusan melalui pengoptimuman parameter dan modul fungsional tambahan. Sementara itu, mekanisme kawalan risiko yang komprehensif memastikan kestabilan.
/*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")