
Strategi ini adalah strategi perdagangan kuantitatif berdasarkan penyambungan indikator pergerakan harga yang tidak bergaya (DPO) dan purata bergerak indeks (EMA). Gagasan utama strategi ini adalah untuk menangkap perubahan trend pasaran dengan membandingkan hubungan DPO dengan empat kitaran EMA, untuk menghasilkan isyarat membeli dan menjual. Strategi ini sangat sesuai untuk tempoh masa yang lebih besar dari 4 jam dan lebih, dan lebih berkesan apabila menggunakan grafik geser rata (Heikin Ashi).
Logik teras strategi merangkumi langkah utama berikut:
Strategi persilangan trend DPO-EMA adalah strategi perdagangan kuantitatif yang sederhana dalam struktur tetapi mempunyai kesan yang ketara. Dengan menggabungkan indikator goyah dan pergerakan rata-rata, strategi ini dapat menangkap perubahan trend pasaran dengan berkesan. Walaupun terdapat beberapa risiko yang wujud, strategi ini masih mempunyai nilai aplikasi sebenar yang baik melalui pengoptimuman dan pengurusan risiko yang munasabah.
/*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")