
Chiến lược này là một chiến lược theo dõi xu hướng dựa trên nhiều chỉ số kỹ thuật, tích hợp nhiều chỉ số kỹ thuật như đường trung bình di chuyển (EMA), chỉ số xu hướng trung bình (ADX) và chỉ số tương đối yếu (RSI) và kết hợp các phương pháp phân tích nhiều khung thời gian. Chiến lược chủ yếu xác nhận hướng xu hướng bằng cách giao chéo EMA nhanh và chậm, sử dụng ADX để lọc cường độ xu hướng, thông qua RSI để đánh giá động lực thị trường, do đó giao dịch tần suất cao trên biểu đồ 1 phút.
Chiến lược hoạt động dựa trên cơ chế cốt lõi sau:
Chiến lược này xây dựng một hệ thống theo dõi xu hướng vững chắc thông qua sự phối hợp hợp của nhiều chỉ số kỹ thuật. Chiến lược này đạt được lợi nhuận đáng kể thông qua cơ chế kiểm soát rủi ro tốt, trong khi vẫn duy trì tỷ lệ thắng cao. Mặc dù có một số không gian tối ưu hóa, nhưng hiệu suất tổng thể là thỏa đáng, đặc biệt phù hợp với các nhà giao dịch theo đuổi lợi nhuận ổn định.
/*backtest
start: 2024-02-19 00:00:00
end: 2025-02-17 08:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Enhanced Trend Following Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=200)
// === INPUTS ===
emaFastLength = input(50, title="Fast EMA Length")
emaSlowLength = input(200, title="Slow EMA Length")
adxLength = input(14, title="ADX Length")
adxSmoothing = input(14, title="ADX Smoothing")
adxThreshold = input(25, title="ADX Threshold")
rsiLength = input(14, title="RSI Length")
rsiOverbought = input(70, title="RSI Overbought Level")
rsiOversold = input(30, title="RSI Oversold Level")
// === INDICATORS ===
emaFast = ta.ema(close, emaFastLength)
emaSlow = ta.ema(close, emaSlowLength)
[dip, dim, adxValue] = ta.dmi(adxLength, adxSmoothing)
rsiValue = ta.rsi(close, rsiLength)
// === MULTI-TIMEFRAME EMA ===
emaFastHTF = request.security(syminfo.tickerid, "240", ta.ema(close, emaFastLength))
emaSlowHTF = request.security(syminfo.tickerid, "240", ta.ema(close, emaSlowLength))
// === CONDITIONS ===
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 * 1.05, stop=close * 0.98)
if (bearishTrend)
strategy.entry("Short", strategy.short)
strategy.exit("TakeProfit_Short", from_entry="Short", limit=close * 0.95, stop=close * 1.02)
// === PLOT INDICATORS ===
plot(emaFast, color=color.blue, title="Fast EMA")
plot(emaSlow, color=color.red, title="Slow EMA")
hline(adxThreshold, "ADX Threshold", color=color.gray, linestyle=hline.style_dotted)
bgcolor(bullishTrend ? color.green : bearishTrend ? color.red : na, transp=90)
// === ALERTS ===
alertcondition(bullishTrend, title="Buy Signal", message="A bullish trend detected!")
alertcondition(bearishTrend, title="Sell Signal", message="A bearish trend detected!")
// === STRATEGY SETTINGS ===
strategy.close("Long", when=rsiValue > rsiOverbought)
strategy.close("Short", when=rsiValue < rsiOversold)