Strategi ini adalah strategi perdagangan kuantitatif yang menggabungkan regression rata-rata dan pelacakan tren, terutama dengan penggunaan tiga indikator teknis MA, MACD, dan ATR untuk menghasilkan sinyal perdagangan dan mengendalikan risiko. Ide inti dari strategi ini adalah ketika harga menyimpang dari rata-rata, sinyal silang dari indikator MACD dikombinasikan untuk menangkap peluang pembalikan pasar, sementara ATR digunakan untuk mengendalikan risiko.
Strategi ini menggunakan tiga mekanisme verifikasi: 1. Menggunakan moving average (MA) untuk menentukan tingkat deviasi harga, pilih SMA atau EMA 2. Waktu pembalikan tren berdasarkan indikator MACD 3. Menggunakan indikator ATR untuk mengatur posisi stop loss secara dinamis Secara khusus, ketika harga di bawah rata-rata dan MACD gold fork, buka posisi banyak; ketika harga di atas rata-rata dan MACD dead fork, buka posisi kosong; dan secara otomatis mengatur posisi stop loss berdasarkan volatilitas ATR.
Strategi ini menghasilkan sistem perdagangan yang relatif stabil dengan kombinasi regressi rata-rata dan pelacakan tren. Mekanisme verifikasi multi-indikator meningkatkan keandalan sinyal perdagangan, sementara ATR stop loss dinamis mengendalikan risiko dengan baik. Meskipun ada beberapa ruang untuk optimasi, secara keseluruhan merupakan kerangka strategi yang logis, jelas dan praktis.
/*backtest start: 2024-10-01 00:00:00 end: 2024-10-31 23:59:59 period: 3h basePeriod: 3h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Mean Reversion Strategy with ATR, MACD and MA", overlay=true) // === Настройки для индикаторов === // Параметры скользящей средней (MA) maLength = input.int(30, title="Период скользящей средней (MA)") maType = input.string("EMA", title="Тип скользящей средней", options=["SMA", "EMA"]) // Параметры ATR atrLength = input.int(10, title="Период ATR") atrMultiplier = input.float(10, title="ATR множитель для стоп-лосса") // Параметры MACD macdFastLength = input.int(8, title="Период быстрой EMA для MACD") macdSlowLength = input.int(26, title="Период медленной EMA для MACD") macdSignalLength = input.int(5, title="Период сигнальной линии MACD") // === Рассчёт индикаторов === // Скользящая средняя ma = if maType == "SMA" ta.sma(close, maLength) else ta.ema(close, maLength) // ATR (Средний истинный диапазон) atr = ta.atr(atrLength) // MACD [macdLine, signalLine, _] = ta.macd(close, macdFastLength, macdSlowLength, macdSignalLength) // Условия для входа на покупку и продажу longCondition = ta.crossover(macdLine, signalLine) and close < ma shortCondition = ta.crossunder(macdLine, signalLine) and close > ma // === Управление позициями === if (longCondition) strategy.entry("Buy", strategy.long) // Стоп-лосс на основе ATR stopLossLevel = close - atr * atrMultiplier strategy.exit("Take Profit/Stop Loss", "Buy", stop=stopLossLevel) if (shortCondition) strategy.entry("Sell", strategy.short) // Стоп-лосс на основе ATR stopLossLevel = close + atr * atrMultiplier strategy.exit("Take Profit/Stop Loss", "Sell", stop=stopLossLevel) // Визуализация plot(ma, title="MA", color=color.blue, linewidth=2) plot(macdLine, title="MACD Line", color=color.green) plot(signalLine, title="Signal Line", color=color.red) hline(0, "Zero Line", color=color.gray)