Chiến lược ATR Trailing Stop (Chỉ dài)

Tác giả:ChaoZhang, Ngày: 2023-11-02 14:05:22
Tags:

img

Tổng quan

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 logic

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à:

  1. Tính toán dừng nhanh Trail1: 5 thời kỳ ATR * 0,5

  2. Tính toán dừng chậm Trail2: 10 thời gian ATR * 3

  3. Khi giá phá vỡ trên Trail1, thiết lập vị trí dài

  4. Khi giá tiếp tục phá vỡ trên Trail2, điều chỉnh dừng lại để Trail2

  5. Nếu giá giảm xuống phá vỡ Trail1, điều chỉnh dừng lại trở lại Trail1

  6. Nếu giá tiếp tục giảm phá vỡ Trail2, điều chỉnh dừng lại để Trail2

  7. 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.

Ưu điểm

  1. 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

  2. Cơ chế dừng hai lần cân bằng giữa dừng lỗ và xu hướng kéo theo

  3. 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

  4. Logic đơn giản và rõ ràng, dễ hiểu và thực hiện

  5. Các quy tắc dừng lỗ nghiêm ngặt hạn chế lỗ hiệu quả

Rủi ro

  1. 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

  2. Hướng dài có thiên hướng hướng, dễ dừng lại ở đỉnh thị trường

  3. 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

  4. Không có bộ lọc như EMA crossovers, có thể gây ra giao dịch xấu

  5. 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.

Các lĩnh vực cải thiện

  1. Tối ưu hóa các kết hợp tham số ATR để có kết quả tốt nhất

  2. Thêm bộ lọc như EMA để đủ điều kiện tín hiệu nhập cảnh

  3. Kết hợp các chỉ số như Stoch RSI để có lợi thế bổ sung

  4. Thêm logic nhập lại để tối ưu hóa quản lý vị trí

  5. 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

  6. Kết hợp phân tích cấp thị trường để tránh sai hướng

  7. Xem xét các chiến lược khung thời gian nhanh hơn như hàng giờ

  8. Mở rộng đến chiến lược đa thị trường

  9. 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.

Tóm lại

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)


Thêm nữa