Chiến lược này là một hệ thống theo xu hướng kết hợp Chỉ số chuyển động theo hướng (DMI) với phạm vi trung bình thực sự (ATR). Cơ chế cốt lõi sử dụng các chỉ số DI + và DI- để xác định hướng và sức mạnh xu hướng thị trường, trong khi sử dụng ATR để điều chỉnh dừng lỗ và lấy lợi nhuận năng động. Việc giới thiệu một trung bình chuyển động lọc xu hướng làm tăng thêm độ tin cậy tín hiệu.
Chiến lược hoạt động dựa trên các cơ chế cốt lõi sau:
Rủi ro thị trường dao động - Có thể dẫn đến việc dừng liên tục ở các thị trường giới hạn phạm vi. Đề xuất: Thêm các chỉ số dao động để lọc hoặc điều chỉnh ngưỡng tham số.
Rủi ro trượt - Có thể phải đối mặt với trượt đáng kể trong thời gian biến động cao. Lời khuyên: Mở rộng các vị trí dừng lỗ một cách thích hợp để phù hợp với trượt.
Rủi ro phá vỡ sai - Những đánh giá sai tiềm năng tại các điểm chuyển hướng. Đề xuất: Kết hợp các chỉ số âm lượng để xác nhận tín hiệu.
Độ nhạy của tham số - Hiệu suất thay đổi đáng kể với các kết hợp tham số khác nhau. Lời khuyên: Tìm các phạm vi tham số ổn định thông qua backtesting.
Tối ưu hóa tín hiệu - Xem xét giới thiệu chỉ số ADX để đánh giá sức mạnh xu hướng hoặc thêm các cơ chế xác nhận khối lượng.
Quản lý vị trí - Thực hiện phân loại vị trí năng động dựa trên sức mạnh xu hướng để kiểm soát rủi ro tinh tế hơn.
Cấu trúc thời gian - Xem xét phân tích nhiều khung thời gian để tăng độ tin cậy tín hiệu.
Khả năng thích nghi với thị trường - Phát triển các cơ chế điều chỉnh tham số thích nghi dựa trên các đặc điểm khác nhau của công cụ.
Chiến lược này đạt được theo dõi xu hướng năng động và kiểm soát rủi ro bằng cách kết hợp các chỉ số định hướng và biến động. Thiết kế chiến lược nhấn mạnh tính thực tế và khả năng vận hành, chứng minh khả năng thích nghi thị trường mạnh mẽ. Thông qua tối ưu hóa tham số và cải thiện tín hiệu, có nhiều chỗ để tăng cường hơn nữa. Các nhà đầu tư được khuyên nên kiểm tra kỹ lưỡng và thực hiện các điều chỉnh cụ thể dựa trên đặc điểm thị trường trước khi thực hiện.
/*backtest start: 2019-12-23 08:00:00 end: 2025-01-04 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("使用 DI+ 和 DI- 的策略 (最終完整修正且含圖表止損止盈線)", overlay=true) // 輸入參數 diLength = input.int(title="DI 長度", defval=14) adxSmoothing = input.int(title="ADX Smoothing", defval=14) trendFilterLength = input.int(title="趨勢過濾均線長度", defval=20) strengthThreshold = input.int(title="趨勢強度門檻值", defval=20) atrLength = input.int(title="ATR 長度", defval=14) atrMultiplierStop = input.float(title="ATR 停損倍數", defval=1.5) atrMultiplierTakeProfit = input.float(title="ATR 止盈倍數", defval=2.5) // 計算 DI+ 和 DI- [diPlus, diMinus, _] = ta.dmi(diLength, adxSmoothing) // 計算趨勢過濾均線 trendFilterMA = ta.sma(close, trendFilterLength) // 判斷趨勢方向和強度 strongUpTrend = diPlus > diMinus + strengthThreshold and close > trendFilterMA strongDownTrend = diMinus > diPlus + strengthThreshold and close < trendFilterMA // 計算 ATR atr = ta.atr(atrLength) // 追蹤止損止盈價格 (使用 var 宣告,只在進場時更新) var float longStopPrice = na var float longTakeProfitPrice = na var float shortStopPrice = na var float shortTakeProfitPrice = na // 進場邏輯 longCondition = strongUpTrend shortCondition = strongDownTrend if (longCondition) strategy.entry("多單", strategy.long) longStopPrice := close - atr * atrMultiplierStop // 進場時計算並更新止損價 longTakeProfitPrice := close + atr * atrMultiplierTakeProfit // 進場時計算並更新止盈價 if (shortCondition) strategy.entry("空單", strategy.short) shortStopPrice := close + atr * atrMultiplierStop // 進場時計算並更新止損價 shortTakeProfitPrice := close - atr * atrMultiplierTakeProfit // 進場時計算並更新止盈價 // 出場邏輯 (使用 time 限制和 ATR) inLongPosition = strategy.position_size > 0 inShortPosition = strategy.position_size < 0 lastEntryTime = strategy.opentrades.entry_bar_index(strategy.opentrades - 1) if (inLongPosition and time > lastEntryTime) strategy.exit("多單出場", "多單", stop=longStopPrice, limit=longTakeProfitPrice) if (inShortPosition and time > lastEntryTime) strategy.exit("空單出場", "空單", stop=shortStopPrice, limit=shortTakeProfitPrice) // 繪製 DI+、DI- 和趨勢過濾均線 plot(diPlus, color=color.green, title="DI+") plot(diMinus, color=color.red, title="DI-") plot(trendFilterMA, color=color.blue, title="趨勢過濾均線") // 繪製止損止盈線 (使用 plot 函數繪製) plot(strategy.position_size > 0 ? longStopPrice : na, color=color.red, style=plot.style_linebr, linewidth=2, title="多單停損") plot(strategy.position_size > 0 ? longTakeProfitPrice : na, color=color.green, style=plot.style_linebr, linewidth=2, title="多單止盈") plot(strategy.position_size < 0 ? shortStopPrice : na, color=color.red, style=plot.style_linebr, linewidth=2, title="空單停損") plot(strategy.position_size < 0 ? shortTakeProfitPrice : na, color=color.green, style=plot.style_linebr, linewidth=2, title="空單止盈")