Chiến lược xu hướng dựa trên phạm vi thực trung bình được tối ưu hóa v6 (Nắm bắt xu hướng cố định)

ATR EMA SMMA RSI TSL
Ngày tạo: 2025-03-31 16:50:30 sửa đổi lần cuối: 2025-03-31 16:50:41
sao chép: 0 Số nhấp chuột: 417
2
tập trung vào
319
Người theo dõi

Chiến lược xu hướng dựa trên phạm vi thực trung bình được tối ưu hóa v6 (Nắm bắt xu hướng cố định) Chiến lược xu hướng dựa trên phạm vi thực trung bình được tối ưu hóa v6 (Nắm bắt xu hướng cố định)

Tổng quan

Đây là một chiến lược theo dõi xu hướng dựa trên phạm vi trung bình thực (ATR) nhằm nắm bắt các giao dịch có khả năng cao bằng cách kết hợp nhiều chỉ số kỹ thuật. Chiến lược này kết hợp các bộ lọc ATR, chỉ số siêu xu hướng, đường xu hướng đường trung bình di chuyển (EMA) và đường trung bình di chuyển đơn giản (SMMA), xác nhận chỉ số tương đối mạnh (RSI) và hệ thống dừng động để cung cấp một phương pháp giao dịch toàn diện và linh hoạt.

Nguyên tắc chiến lược

Các nguyên tắc cốt lõi của chiến lược dựa trên sự phối hợp của nhiều chỉ số kỹ thuật:

  1. Nhận định xu hướng: sử dụng chỉ số xu hướng siêu (( tham số: nhân số 2, độ dài 5) và xu hướng 50 ngày EMA và 8 ngày SMMA để xác định hướng xu hướng thị trường. Xu hướng được mã hóa bằng màu:

    • Xanh: Xu hướng giảm giá
    • Đỏ: Xu hướng giảm
    • Xám: giai đoạn trung tính
  2. Bộ lọc thông minh ATR: Phát hiện sự mở rộng biến động thông qua 14 chu kỳ ATR và 50 chu kỳ trung bình di chuyển đơn giản, chỉ giao dịch khi ATR tăng lên hoặc cao hơn SMA 101% của nó, đảm bảo chỉ vào trong xu hướng mạnh.

  3. Điều kiện tham gia:

    • Thêm vào: Giá cao hơn 50 ngày EMA, siêu xu hướng lạc quan, RSI > 45, ATR xác nhận cường độ xu hướng
    • Thêm vào: Giá thấp hơn 50 ngày EMA, siêu xu hướng giảm, RSI < 45, ATR xác nhận cường độ xu hướng
  4. Động lực dừng và dừng:

    • Ngưng: Ngưng tự điều chỉnh dựa trên ATR 5 lần
    • Stop Loss: Stop Loss theo dõi 3.5 lần ATR
    • Giữ lỗ: Khởi động sau khi giá chuyển động 2 lần ATR
    • Hạn chế cố định: quản lý rủi ro bằng ATR 0.8 lần

Lợi thế chiến lược

  1. Hiệu quả lọc thị trường biến động, tránh giao dịch trong khu vực biến động thấp
  2. Ngăn chặn quá nhiều giao dịch, ngăn chặn sự tái nhập cảnh sớm thông qua hệ thống khóa ngăn chặn
  3. Ghi lại xu hướng mạnh mẽ, theo dõi dừng lỗ cho phép lợi nhuận tiếp tục
  4. Giảm rút lui, ATR dừng cơ bản để ngăn chặn tổn thất lớn
  5. Các tham số có thể điều chỉnh, có thể điều chỉnh ATR nhân, dừng, dừng và bộ lọc RSI cho các thị trường khác nhau

Rủi ro chiến lược

  1. Sự phụ thuộc quá nhiều vào các chỉ số kỹ thuật có thể dẫn đến tín hiệu sai
  2. Có thể không thành công trong một thị trường bất ổn
  3. Thiết lập tham số không đúng có thể làm tăng chi phí giao dịch
  4. RSI xác nhận có thể bỏ lỡ sự thay đổi xu hướng nhanh chóng

Hướng tối ưu hóa chiến lược

  1. Giới thiệu thuật toán học máy, tham số điều chỉnh động
  2. Thêm các bộ lọc bổ sung, chẳng hạn như xác nhận số lượng giao hàng
  3. Khám phá các tham số tối ưu cho các thị trường và khung thời gian khác nhau
  4. Phát triển cơ chế xác minh nhiều khung thời gian

Tóm tắt

Đây là một chiến lược theo dõi xu hướng tiên tiến, cung cấp cho các nhà giao dịch một công cụ giao dịch linh hoạt và mạnh mẽ thông qua sự phối hợp đa chỉ số và quản lý rủi ro động. Việc phản hồi và tối ưu hóa liên tục là chìa khóa để áp dụng chiến lược này thành công.

Mã nguồn chiến lược
/*backtest
start: 2024-03-31 00:00:00
end: 2025-03-29 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy("Optimized ATR-Based Trend Strategy v6 (Fixed Trend Capture)", overlay=true)

// 🔹 Input parameters
lengthSMMA = input(8, title="SMMA Length")
lengthEMA = input(50, title="EMA Length")
supertrendFactor = input(2.0, title="Supertrend Factor")
supertrendLength = input(5, title="Supertrend Length")
atrLength = input(14, title="ATR Length")  
atrSmoothing = input(50, title="ATR Moving Average Length")  
atrMultiplierTP = input.float(5.0, title="ATR Multiplier for Take-Profit", minval=1.0, step=0.5)  
atrMultiplierTSL = input.float(3.5, title="ATR Multiplier for Trailing Stop-Loss", minval=1.0, step=0.5)  // 🔹 Increased to ride trends
atrStopMultiplier = input.float(0.8, title="ATR Stop Multiplier", minval=0.5, step=0.1)  
breakEvenMultiplier = input.float(2.0, title="Break-Even Trigger ATR Multiplier", minval=1.0, step=0.1)
rsiLength = input(14, title="RSI Length")  

// 🔹 Indicator calculations
smma8 = ta.sma(ta.sma(close, lengthSMMA), lengthSMMA)  
ema50 = ta.ema(close, lengthEMA)  

// 🔹 Supertrend Calculation
[superTrend, _] = ta.supertrend(supertrendFactor, supertrendLength)

// 🔹 Supertrend Conditions
isBullishSupertrend = close > superTrend
isBearishSupertrend = close < superTrend

// 🔹 ATR Calculation for Smarter Filtering
atrValue = ta.atr(atrLength)
atrMA = ta.sma(atrValue, atrSmoothing)
atrRising = ta.rising(atrValue, 3)  // 🔹 More sensitive ATR detection
isTrending = atrValue > atrMA * 1.01 or atrRising  // 🔹 Loosened ATR filter

// 🔹 RSI Calculation
rsi = ta.rsi(close, rsiLength)

// 🔹 RSI Conditions (More Flexible)
isRSIBullish = rsi > 45  // 🔹 Lowered to capture early trends
isRSIBearish = rsi < 45  

// 🔹 TP Lock Mechanism
var bool tpHit = false  
if strategy.position_size == 0 and strategy.closedtrades > 0
    tpHit := true  

// 🔹 Supertrend Flip Detection (Resumes Trading After Trend Change)
trendFlip = (isBullishSupertrend and not isBullishSupertrend[1]) or (isBearishSupertrend and not isBearishSupertrend[1])
if trendFlip
    tpHit := false  

// 🔹 Entry Conditions
bullishEntry = close > ema50 and isBullishSupertrend and isRSIBullish and isTrending and not tpHit
bearishEntry = close < ema50 and isBearishSupertrend and isRSIBearish and isTrending and not tpHit

// 🔹 Dynamic Take-Profit, Stop-Loss, and Break-Even Stop
longTakeProfit = close + (atrValue * atrMultiplierTP)  
shortTakeProfit = close - (atrValue * atrMultiplierTP)  
longTrailStop = atrValue * atrMultiplierTSL  
shortTrailStop = atrValue * atrMultiplierTSL  

// ✅ Adjusted SL to Reduce Drawdown
longStopLoss = close - (atrValue * atrMultiplierTSL * atrStopMultiplier)
shortStopLoss = close + (atrValue * atrMultiplierTSL * atrStopMultiplier)

// ✅ Break-Even Stop Trigger (More Room for Trends)
longBreakEven = strategy.position_avg_price + (atrValue * breakEvenMultiplier)
shortBreakEven = strategy.position_avg_price - (atrValue * breakEvenMultiplier)

// 🔹 Strategy Execution (Fixed Take-Profit & Stop-Loss)
if (bullishEntry)
    strategy.entry("Buy", strategy.long)
    strategy.exit("TSL/TP", from_entry="Buy", stop=longStopLoss, trail_offset=longTrailStop, limit=longTakeProfit)
    strategy.exit("BreakEven", from_entry="Buy", stop=longBreakEven)

if (bearishEntry)
    strategy.entry("Sell", strategy.short)
    strategy.exit("TSL/TP", from_entry="Sell", stop=shortStopLoss, trail_offset=shortTrailStop, limit=shortTakeProfit)
    strategy.exit("BreakEven", from_entry="Sell", stop=shortBreakEven)

// 🔹 Trend Band
trendColor = isBullishSupertrend and smma8 > ema50 and close > ema50 ? color.green :
             isBearishSupertrend and smma8 < ema50 and close < ema50 ? color.red : color.gray
fill(plot(smma8, color=color.new(trendColor, 60), title="8 SMMA Band"),
     plot(ema50, color=color.new(trendColor, 60), title="50 EMA Band"),
     color=color.new(trendColor, 80), title="Trend Band")

// 🔹 Supertrend Line
plot(superTrend, color=color.gray, title="Supertrend", style=plot.style_line)