
Chiến lược này là một hệ thống theo xu hướng dựa trên nhiều chỉ báo kỹ thuật, kết hợp Đường trung bình động (EMA), Chỉ số chuyển động có định hướng (DMI), Chỉ báo dao động giá phi xu hướng (DPO), Chỉ số sức mạnh tương đối (RSI) và Biên độ dao động thực trung bình (ATR). ) và các chỉ báo kỹ thuật khác để xác định xu hướng mạnh và giao dịch thông qua nhiều xác nhận tín hiệu. Ý tưởng cốt lõi của thiết kế chiến lược là chỉ giao dịch sau khi xác nhận nhiều đặc điểm của thị trường như hướng xu hướng, động lượng và biến động, để tăng tỷ lệ giao dịch thành công.
Chiến lược này sử dụng đường trung bình động hàm mũ ba (EMA) làm hệ thống đánh giá xu hướng cốt lõi, kết hợp với các chỉ báo kỹ thuật khác để xác nhận nhiều tín hiệu:
Điều kiện kích hoạt tín hiệu giao dịch:
Biện pháp kiểm soát rủi ro:
Chiến lược này xây dựng một hệ thống giao dịch theo dõi xu hướng hoàn chỉnh thông qua việc áp dụng kết hợp nhiều chỉ báo kỹ thuật. Các tính năng chính của chiến lược này là xác nhận tín hiệu chặt chẽ và kiểm soát rủi ro hợp lý, phù hợp để theo dõi xu hướng trung và dài hạn ở cấp độ hàng ngày. Mặc dù có độ trễ nhất định, hiệu suất chung của chiến lược vẫn ổn định thông qua kiểm soát rủi ro chặt chẽ và xác nhận nhiều tín hiệu. Khi áp dụng vào giao dịch thực tế, nên chú ý lựa chọn môi trường thị trường và tối ưu hóa các thông số theo đặc điểm của từng loại giống cụ thể.
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-15 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/
//@version=5
strategy("Daily Strategy with Triple EMA, DMI, DPO, RSI, and ATR", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// Input parameters
fastEmaLength = input.int(10, title="Fast EMA Length")
mediumEmaLength = input.int(25, title="Medium EMA Length")
slowEmaLength = input.int(50, title="Slow EMA Length")
dmiLength = input.int(14, title="DMI Length")
adxSmoothing = input.int(14, title="ADX Smoothing")
dpoLength = input.int(14, title="DPO Length")
rsiLength = input.int(14, title="RSI Length")
atrLength = input.int(14, title="ATR Length")
riskPercentage = input.float(2.0, title="Risk Percentage", step=0.1)
atrMultiplier = input.float(1.5, title="ATR Multiplier for Stop Loss", step=0.1)
tpMultiplier = input.float(2.0, title="ATR Multiplier for Take Profit", step=0.1)
// Calculate EMAs
fastEma = ta.ema(close, fastEmaLength)
mediumEma = ta.ema(close, mediumEmaLength)
slowEma = ta.ema(close, slowEmaLength)
// Calculate other indicators
[adx, diPlus, diMinus] = ta.dmi(dmiLength, adxSmoothing)
dpo = close - ta.sma(close, dpoLength)
rsi = ta.rsi(close, rsiLength)
atr = ta.atr(atrLength)
// Trading logic
longCondition = ta.crossover(fastEma, mediumEma) and fastEma > slowEma and mediumEma > slowEma and adx > 25 and rsi > 50 and dpo > 0
shortCondition = ta.crossunder(fastEma, mediumEma) and fastEma < slowEma and mediumEma < slowEma and adx > 25 and rsi < 50 and dpo < 0
// Risk management
riskAmount = (strategy.equity * riskPercentage) / 100
stopLoss = atr * atrMultiplier
takeProfit = atr * tpMultiplier
// Entry and exit logic
if (longCondition)
strategy.entry("Buy", strategy.long)
strategy.exit("Exit Long", "Buy", stop=close - stopLoss, limit=close + takeProfit)
if (shortCondition)
strategy.entry("Sell", strategy.short)
strategy.exit("Exit Short", "Sell", stop=close + stopLoss, limit=close - takeProfit)
// Plot indicators
plot(fastEma, color=color.green, title="Fast EMA")
plot(mediumEma, color=color.orange, title="Medium EMA")
plot(slowEma, color=color.red, title="Slow EMA")
hline(25, "ADX Threshold", color=color.gray, linestyle=hline.style_dotted)