Strategi ini adalah pendekatan perdagangan kuantitatif berdasarkan persilangan antara Detrended Price Oscillator (DPO) dan 4-period Exponential Moving Average (EMA). Konsep terasnya adalah untuk menangkap perubahan trend pasaran dengan membandingkan hubungan antara DPO dan EMA 4-periodnya untuk menjana isyarat beli dan jual. Strategi ini sangat berkesan pada jangka masa 4 jam dan ke atas, terutamanya apabila menggunakan lilin Heikin Ashi.
Logik teras merangkumi langkah utama berikut: 1. Hitung purata bergerak mudah 24 tempoh (SMA) sebagai garis asas 2. Pindahkan SMA ke hadapan oleh (panjang/2 + 1) tempoh untuk mendapatkan nilai SMA yang dipindahkan 3. Kurangkan SMA yang dipindahkan dari harga penutupan untuk mendapatkan nilai DPO 4. Hitung EMA 4 tempoh DPO 5. Menghasilkan isyarat beli apabila DPO melintasi di atas EMA 4 tempoh 6. Menjana isyarat jual apabila DPO melintasi di bawah EMA 4 tempoh
DPO-EMA Trend Crossover Strategy adalah strategi perdagangan kuantitatif yang sederhana tetapi berkesan. Dengan menggabungkan osilator detrended dengan purata bergerak, strategi ini berkesan menangkap perubahan trend pasaran. Walaupun terdapat risiko yang melekat, strategi ini mengekalkan nilai praktikal melalui pengoptimuman dan langkah pengurusan risiko yang betul.
/*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")