
Chiến lược này là một hệ thống giao dịch theo dõi xu hướng kết hợp phân tích nhiều khung thời gian, giao dịch trên khung thời gian 15 phút bằng cách tích hợp các chỉ số kỹ thuật như moving average (EMA), chỉ số xu hướng trung bình (ADX) và chỉ số tương đối mạnh (RSI). Chiến lược sử dụng phương pháp quản lý vị trí bảo thủ, kiểm soát rủi ro trên mỗi giao dịch trong vòng 2% tổng tài khoản để đạt được lợi nhuận ổn định lâu dài.
Chiến lược sử dụng sự giao thoa của EMA (50 chu kỳ) và EMA (200 chu kỳ) để xác định hướng của xu hướng và kết hợp với chỉ số ADX để xác nhận cường độ của xu hướng. Khi ADX lớn hơn 25, thị trường đang trong tình trạng xu hướng mạnh. Chỉ số RSI được sử dụng để xác định tình trạng mua quá mức, mua quá mức khi RSI đạt 70 và RSI đạt 30 .
Chiến lược này cho thấy tiềm năng giao dịch tốt thông qua phương pháp phân tích kỹ thuật đa chiều và kiểm soát rủi ro nghiêm ngặt. Mặc dù hoạt động ổn định trong phản hồi, nhưng vẫn cần được xác minh đầy đủ trong môi trường thực. Thiết kế mô đun của chiến lược cho phép nó có khả năng thích ứng và tối ưu hóa mạnh mẽ, có thể điều chỉnh linh hoạt theo sự thay đổi của thị trường.
/*backtest
start: 2024-02-20 00:00:00
end: 2025-02-18 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"DOGE_USDT"}]
*/
//@version=5
strategy("DOGE Enhanced Trend Following Strategy",
overlay=true,
default_qty_type=strategy.percent_of_equity,
default_qty_value=5,
commission_value=0.1,
slippage=2)
// === INPUT PARAMETERS ===
emaFastLength = input(50, title="Fast EMA Length")
emaSlowLength = input(200, title="Slow EMA Length")
adxLength = input.int(14, title="ADX Length")
adxSmoothing = input.int(14, title="ADX Smoothing Factor")
adxThreshold = input.float(25, title="ADX Trend Strength Threshold")
rsiLength = input.int(14, title="RSI Length")
rsiOverbought = input.float(70, title="RSI Overbought Level")
rsiOversold = input.float(30, title="RSI Oversold Level")
takeProfitMultiplier = input.float(1.03, title="Take Profit Multiplier", tooltip="Set a dynamic take profit level, e.g., 1.03 = 3% profit")
stopLossMultiplier = input.float(0.97, title="Stop Loss Multiplier", tooltip="Set stop loss level, e.g., 0.97 = 3% below entry price")
// === INDICATOR CALCULATIONS ===
emaFast = ta.ema(close, emaFastLength)
emaSlow = ta.ema(close, emaSlowLength)
[dip, dim, adxValue] = ta.dmi(adxLength, adxSmoothing)
rsiValue = ta.rsi(close, rsiLength)
// === MULTI-TIMEFRAME CONFIRMATION ===
emaFastHTF = request.security(syminfo.tickerid, "240", ta.ema(close, emaFastLength))
emaSlowHTF = request.security(syminfo.tickerid, "240", ta.ema(close, emaSlowLength))
// === CONDITIONS FOR TRADE ENTRY ===
bullishTrend = ta.crossover(emaFast, emaSlow) and adxValue > adxThreshold and rsiValue > rsiOversold
bearishTrend = ta.crossunder(emaFast, emaSlow) and adxValue > adxThreshold and rsiValue < rsiOverbought
// === TRADE EXECUTION ===
if (bullishTrend)
strategy.entry("Long", strategy.long)
strategy.exit("TakeProfit_Long", from_entry="Long", limit=close * takeProfitMultiplier, stop=close * stopLossMultiplier)
if (bearishTrend)
strategy.entry("Short", strategy.short)
strategy.exit("TakeProfit_Short", from_entry="Short", limit=close * (2 - takeProfitMultiplier), stop=close * (2 - stopLossMultiplier))
// === VISUAL INDICATORS AND PLOTTING ===
plot(emaFast, color=color.blue, linewidth=2, title="Fast EMA")
plot(emaSlow, color=color.red, linewidth=2, title="Slow EMA")
hline(adxThreshold, "ADX Threshold", color=color.gray, linestyle=hline.style_dotted)
bgcolor(bullishTrend ? color.new(color.green, 85) : bearishTrend ? color.new(color.red, 85) : na)
// === ALERTS ===
alertcondition(bullishTrend, title="Buy Signal", message="Bullish trend detected. Consider entering a long position.")
alertcondition(bearishTrend, title="Sell Signal", message="Bearish trend detected. Consider entering a short position.")
// === STRATEGY SETTINGS FOR REALISTIC TESTING ===
strategy.close("Long", when=rsiValue > rsiOverbought, comment="Exit Long on RSI Overbought")
strategy.close("Short", when=rsiValue < rsiOversold, comment="Exit Short on RSI Oversold")