Strategi ini adalah sistem perdagangan kuantitatif yang menggabungkan prinsip-prinsip reversi rata-rata dengan indikator teknis MACD dan ATR. Ini menggunakan Bollinger Bands untuk mengidentifikasi penyimpangan harga, MACD untuk konfirmasi momentum, dan ATR untuk manajemen risiko dinamis.
Strategi ini menggunakan tiga indikator teknis yang bekerja sama: Pertama, Bollinger Bands menentukan penyimpangan harga yang signifikan; kedua, MACD memvalidasi momentum harga, memastikan arah perdagangan selaras dengan tren pasar; akhirnya, ATR menetapkan stop-loss dan take-profit tingkat yang dinamis. Secara khusus, sinyal panjang dihasilkan ketika harga pecah di bawah Bollinger Band bagian bawah dengan garis MACD di atas garis sinyalnya, sementara sinyal pendek terjadi ketika harga pecah di atas Bollinger Band bagian atas dengan garis MACD di bawah garis sinyalnya. ATR secara dinamis menyesuaikan stop-loss dan take-profit tingkat berdasarkan volatilitas pasar.
Strategi ini menggabungkan analisis teknis klasik dengan metode perdagangan kuantitatif modern. Melalui penggunaan terkoordinasi dari beberapa indikator, ia mempertahankan keuntungan inti dari reversi rata-rata sambil mengatasi keterbatasan indikator tunggal. Strategi ini sangat dapat diperluas, mampu perbaikan terus menerus melalui optimasi parameter dan modul fungsional tambahan. Sementara itu, mekanisme kontrol risiko yang komprehensif memastikan stabilitas.
/*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")