
Chiến lược này là một chiến lược giao dịch định lượng dựa trên sự giao thoa của chỉ số biến động giá giảm xu hướng (DPO) và đường trung bình di chuyển chỉ số (EMA). Ý tưởng cốt lõi của chiến lược là để nắm bắt sự thay đổi xu hướng thị trường bằng cách so sánh DPO với mối quan hệ của 4 chu kỳ EMA của nó, để tạo ra tín hiệu mua và bán. Chiến lược này đặc biệt phù hợp cho các chu kỳ thời gian lớn hơn 4 giờ và hiệu quả hơn khi sử dụng biểu đồ trượt trơn (Heikin Ashi).
Logic cốt lõi của chiến lược bao gồm các bước chính sau:
Chiến lược giao dịch chéo xu hướng DPO-EMA là một chiến lược giao dịch định lượng có cấu trúc đơn giản nhưng có hiệu quả đáng kể. Bằng cách kết hợp các chỉ số biến động theo xu hướng và các đường trung bình di chuyển, chiến lược này có thể nắm bắt được sự thay đổi xu hướng thị trường một cách hiệu quả. Mặc dù có một số rủi ro vốn có, nhưng với các biện pháp tối ưu hóa và quản lý rủi ro hợp lý, chiến lược này vẫn có giá trị ứng dụng thực tế tốt.
/*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")