
Strategi ini adalah strategi perdagangan kuantitatif yang didasarkan pada perpaduan antara indikator pergerakan harga off-trend (DPO) dan rata-rata pergerakan indeks (EMA). Gagasan inti dari strategi ini adalah untuk menangkap perubahan tren pasar dengan membandingkan hubungan antara DPO dan empat siklus EMA-nya, sehingga menghasilkan sinyal beli dan jual. Strategi ini sangat cocok untuk periode waktu yang lebih besar dari empat jam dan lebih, dan lebih efektif ketika menggunakan grafik geser datar (Heikin Ashi).
Logika inti dari strategi ini mencakup langkah-langkah kunci berikut:
Strategi DPO-EMA trend crossover adalah strategi perdagangan kuantitatif yang sederhana dalam strukturnya namun berpengaruh secara signifikan. Dengan menggabungkan indikator de-trend oscillator dan moving average, strategi ini dapat secara efektif menangkap perubahan tren pasar. Meskipun ada beberapa risiko yang melekat, strategi ini masih memiliki nilai aplikasi nyata yang baik melalui pengoptimalan dan manajemen risiko yang masuk akal.
/*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")