Chiến lược này sử dụng hai điểm dừng ATR với các tham số khác nhau để thiết lập mức dừng lỗ động - một điểm dừng nhanh và một điểm dừng chậm. Nó thiết lập các vị trí dài dựa trên sự đột phá giá của các mức dừng khác nhau và ra khỏi các vị trí bằng cách sử dụng các điểm dừng. Mục tiêu là sử dụng các điểm dừng ATR để thiết lập các mức dừng lỗ hợp lý trong khi tối đa hóa khả năng theo dõi xu hướng.
Chiến lược này sử dụng chỉ số ATR để tính toán hai mức dừng lỗ. Dừng nhanh sử dụng ATR 5 giai đoạn nhân 0,5 như khoảng cách dừng. Dừng chậm sử dụng ATR 10 giai đoạn nhân 3 như khoảng cách dừng. Khi giá vượt qua mức dừng nhanh, một vị trí dài được thiết lập. Khi giá tiếp tục vượt qua mức dừng chậm, dừng được điều chỉnh theo mức dừng chậm. Nếu giá giảm, mức dừng được điều chỉnh dựa trên các mối quan hệ chéo.
Lý do là:
Tính toán dừng nhanh Trail1: 5 thời kỳ ATR * 0,5
Tính toán dừng chậm Trail2: 10 thời gian ATR * 3
Khi giá phá vỡ trên Trail1, thiết lập vị trí dài
Khi giá tiếp tục phá vỡ trên Trail2, điều chỉnh dừng lại để Trail2
Nếu giá giảm xuống phá vỡ Trail1, điều chỉnh dừng lại trở lại Trail1
Nếu giá tiếp tục giảm phá vỡ Trail2, điều chỉnh dừng lại để Trail2
Cuối cùng, nếu giá đạt mức dừng, thoát khỏi vị trí với dừng lỗ
Bằng cách này, chiến lược có thể tối đa hóa lợi nhuận trong các xu hướng tăng với các điểm dừng cuối cùng trong khi nhanh chóng ngăn chặn lỗ khi xu hướng đảo ngược.
Các mức dừng ATR thiết lập mức dừng lỗ năng động dựa trên sự biến động của thị trường
Cơ chế dừng hai lần cân bằng giữa dừng lỗ và xu hướng kéo theo
Hướng dài phù hợp với xu hướng tăng trưởng tổng thể, lợi nhuận cao hơn
Logic đơn giản và rõ ràng, dễ hiểu và thực hiện
Các quy tắc dừng lỗ nghiêm ngặt hạn chế lỗ hiệu quả
Các thông số ATR không chính xác có thể gây ra việc dừng quá rộng hoặc quá chặt
Hướng dài có thiên hướng hướng, dễ dừng lại ở đỉnh thị trường
Quy tắc dừng hai lần rất phức tạp, có thể thất bại nếu không được đặt đúng cách
Không có bộ lọc như EMA crossovers, có thể gây ra giao dịch xấu
Không quản lý vị trí hoặc rủi ro, rủi ro giao dịch quá mức
Những rủi ro này có thể được giảm bằng cách tối ưu hóa các thông số ATR, thêm các bộ lọc và thực thi quản lý rủi ro.
Tối ưu hóa các kết hợp tham số ATR để có kết quả tốt nhất
Thêm bộ lọc như EMA để đủ điều kiện tín hiệu nhập cảnh
Kết hợp các chỉ số như Stoch RSI để có lợi thế bổ sung
Thêm logic nhập lại để tối ưu hóa quản lý vị trí
Tối ưu hóa các quy tắc quản lý rủi ro để giới hạn stop loss cho mỗi giao dịch
Kết hợp phân tích cấp thị trường để tránh sai hướng
Xem xét các chiến lược khung thời gian nhanh hơn như hàng giờ
Mở rộng đến chiến lược đa thị trường
triển khai công cụ giao dịch hiệu suất cao
Với những cải tiến này, chiến lược có thể mạnh mẽ hơn, ổn định hơn và có lợi nhuận hơn.
Chiến lược này sử dụng các điểm dừng ATR rõ ràng cho các bước vào và ra dài. Lợi thế nằm trong các quy tắc dừng lỗ nghiêm ngặt của nó để hạn chế tổn thất trong khi theo xu hướng. Nó có rủi ro thiên vị theo hướng có thể được giảm thông qua các tối ưu hóa như các thông số tốt hơn, thêm bộ lọc và tăng cường quản lý rủi ro. Với các thử nghiệm và cải tiến hơn nữa, điều này có thể trở thành một chiến lược theo xu hướng đáng tin cậy.
/*backtest start: 2023-10-25 00:00:00 end: 2023-11-01 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("ATR Trailing Stop Strategy (Long Position Only)", overlay=true) SC = input(close, "Source", input.source) // Fast Trail AP1 = input(5, "Fast ATR period", input.integer) AF1 = input(0.5, "Fast ATR multiplier", input.float) SL1 = AF1 * atr(AP1) Trail1 = 0.0 Trail1 := iff(SC > nz(Trail1[1], 0) and SC[1] > nz(Trail1[1], 0), max(nz(Trail1[1], 0), SC - SL1), iff(SC < nz(Trail1[1], 0), SC + SL1, na)) // Slow Trail AP2 = input(10, "Slow ATR period", input.integer) AF2 = input(3, "Slow ATR multiplier", input.float) SL2 = AF2 * atr(AP2) Trail2 = 0.0 Trail2 := iff(SC > nz(Trail2[1], 0) and SC[1] > nz(Trail2[1], 0), max(nz(Trail2[1], 0), SC - SL2), iff(SC < nz(Trail2[1], 0), SC + SL2, na)) Green = Trail1 > Trail2 and close > Trail2 and low > Trail2 Buy = crossover(Trail1, Trail2) plotshape(Buy, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small) strategy.entry("Buy", strategy.long, when = Buy) var float trailingStopPrice = na if (Trail2 > trailingStopPrice) trailingStopPrice := Trail2 if (crossover(Trail1, Trail2)) trailingStopPrice := Trail2 strategy.exit("Exit", from_entry = "Buy", stop=trailingStopPrice)