Chiến lược này là một cách tiếp cận giao dịch định lượng dựa trên sự chéo chéo giữa Động dao giá bị ngắt (DPO) và trung bình chuyển động theo cấp số nhân (EMA) 4 giai đoạn. Khái niệm cốt lõi là nắm bắt những thay đổi xu hướng thị trường bằng cách so sánh mối quan hệ giữa DPO và EMA 4 giai đoạn của nó để tạo ra tín hiệu mua và bán. Chiến lược đặc biệt hiệu quả trên các khung thời gian 4 giờ trở lên, đặc biệt là khi sử dụng nến Heikin Ashi.
Logic cốt lõi bao gồm các bước chính sau:
DPO-EMA Trend Crossover Strategy là một chiến lược giao dịch định lượng đơn giản nhưng hiệu quả về mặt cấu trúc. Bằng cách kết hợp dao động giảm giá với đường trung bình động, chiến lược có hiệu quả nắm bắt những thay đổi xu hướng thị trường. Trong khi rủi ro vốn có tồn tại, chiến lược duy trì giá trị thực tế thông qua các biện pháp tối ưu hóa và quản lý rủi ro thích hợp. Đối với các nhà giao dịch trung và dài hạn, chiến lược này đại diện cho một cách tiếp cận giao dịch khả thi đáng xem xé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")