Strategi ini adalah pendekatan perdagangan kuantitatif berdasarkan crossover antara Detrended Price Oscillator (DPO) dan 4-periode Exponential Moving Average (EMA). Konsep inti adalah untuk menangkap perubahan tren pasar dengan membandingkan hubungan antara DPO dan EMA 4-periode untuk menghasilkan sinyal beli dan jual. Strategi ini sangat efektif pada jangka waktu 4 jam ke atas, terutama ketika menggunakan lilin Heikin Ashi.
Logika inti mencakup langkah-langkah kunci berikut: 1. Menghitung 24-periode Simple Moving Average (SMA) sebagai garis dasar 2. Pindahkan SMA ke depan dengan (panjang/2+1) periode untuk mendapatkan nilai SMA yang dipindahkan 3. Kurangi SMA yang dipindahkan dari harga penutupan untuk mendapatkan nilai DPO 4. Menghitung EMA 4 periode dari DPO 5. Menghasilkan sinyal beli ketika DPO melintasi di atas EMA 4 periode 6. Menghasilkan sinyal jual ketika DPO melintasi di bawah EMA 4 periode
Strategi DPO-EMA Trend Crossover adalah strategi perdagangan kuantitatif yang sederhana secara struktural namun efektif. Dengan menggabungkan osilator detrended dengan moving average, strategi secara efektif menangkap perubahan tren pasar. Meskipun ada risiko yang melekat, strategi ini mempertahankan nilai praktis melalui pengoptimalan yang tepat dan langkah-langkah manajemen risiko.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-04 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("DPO 4,24 Strategy", shorttitle="DPO Strategy", overlay=true) // Define a fixed lookback period and EMA length length = 24 ema_length = 4 // Calculate the Simple Moving Average (SMA) of the closing prices sma = ta.sma(close, length) // Calculate the shifted SMA value shifted_sma = sma[length / 2 + 1] // Calculate the Detrended Price Oscillator (DPO) dpo = close - shifted_sma // Calculate the 4-period Exponential Moving Average (EMA) of the DPO dpo_ema = ta.ema(dpo, ema_length) // Generate buy and sell signals based on crossovers buy_signal = ta.crossover(dpo, dpo_ema) sell_signal = ta.crossunder(dpo, dpo_ema) // Overlay buy and sell signals on the candlestick chart plotshape(series=buy_signal, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY") plotshape(series=sell_signal, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL") // Strategy entry and exit conditions if (buy_signal) strategy.entry("Buy", strategy.long) if (sell_signal) strategy.close("Buy")