Chiến lược này có tên là
Chiến lược này sử dụng chỉ số ATR để thiết lập giá dừng lỗ. ATR phản ánh sự biến động của thị trường và có thể được sử dụng để thiết lập khoảng cách dừng lỗ một cách năng động. Chiến lược tính toán giá trị ATR dựa trên thời gian và nhân nhập của người dùng ATR, và sử dụng giá trị ATR nhân với nhân để thiết lập khoảng cách dừng lỗ. Cụ thể, công thức tính toán ATR trailing stop là:
ATR Line = Prior ATR Line ± nLoss (nLoss = nATRMultip * ATR value)
If close > ATR Line, adjust ATR Line up to close - nLoss
If close < ATR Line, adjust ATR Line down to close + nLoss
Bằng cách này, đường ATR có thể điều chỉnh năng động dựa trên biến động giá để đạt được xu hướng sau khi dừng lỗ.
Ngoài ATR trailing stop, chiến lược này cũng sử dụng kênh lệch chuẩn để xác định tín hiệu đầu vào.
Middle Line = ATR Trailing Stop Line
Upper Band = Middle Line + n * Standard Deviation
Lower Band = Middle Line - n * Standard Deviation
Đi dài khi giá phá vỡ đường trung bình lên. Đi ngắn khi giá phá vỡ đường trung bình xuống.
Ưu điểm lớn nhất của chiến lược này là nó sử dụng chỉ số ATR để thiết lập dừng lỗ một cách năng động dựa trên sự biến động của thị trường, cho phép xu hướng sau khi dừng lỗ và kiểm soát rủi ro hiệu quả.
Ngoài ra, việc sử dụng kênh lệch chuẩn cho các tín hiệu nhập cảnh tránh việc mở các vị trí thường xuyên do biến động giá nhỏ.
Nguy cơ chính là nếu khoảng cách dừng lỗ quá lớn, nó không thể kiểm soát rủi ro hiệu quả, nhưng nếu quá nhỏ, nó có thể dễ dàng bị ngừng bởi tiếng ồn thị trường.
Một rủi ro khác là các thông số kênh sai lệch tiêu chuẩn không phù hợp dẫn đến tần số nhập quá cao / thấp. Các thông số có thể được tối ưu hóa để tìm ra tối ưu.
Chiến lược có thể được tăng cường từ các khía cạnh sau:
Tối ưu hóa thời gian ATR và nhân để đạt được hiệu ứng dừng lỗ tốt hơn.
Tối ưu hóa các thông số kênh lệch chuẩn để có tín hiệu nhập tốt hơn.
Thêm các chỉ số khác để lọc, ví dụ như trung bình động, mô hình nến vv, để giúp đánh giá hướng xu hướng và cải thiện lợi nhuận.
Tối ưu hóa logic vào và ra, ví dụ: chỉ mở các vị trí sau khi xác nhận mô hình nến khi giá đạt đến các dải kênh.
Chiến lược đạt được xu hướng sau khi dừng lỗ dựa trên chỉ số ATR và sử dụng kênh sai lệch tiêu chuẩn cho các tín hiệu nhập cảnh. Ưu điểm của nó nằm trong khả năng kiểm soát rủi ro tốt cho giao dịch xu hướng. Rủi ro và cải tiến cũng được phân tích rõ ràng. Chiến lược đáng để thử nghiệm và tối ưu hóa hơn nữa và có giá trị giao dịch thực tế.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version = 2 strategy(title="Average True Range Strategy", overlay = true) nATRPeriod = input(11) //Hur många perioder ATR är på nATRMultip = input(0.5) //Hur många gånger nuvarande ATR multipliceras med xATR = atr(nATRPeriod) nLoss = nATRMultip * xATR xATRTrailingStop = iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), close - nLoss), iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), close + nLoss), iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss))) pos = iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), -1, iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), 1, nz(pos[1], 0))) stdev3 = 14*stdev(xATR, nATRPeriod) band1 = xATRTrailingStop+stdev3 //Översta stdev bandet band2 = xATRTrailingStop-stdev3 //Nedersta stdev bandet // Datum och tid FromMonth = input(defval = 8, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 18, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2013, title = "From Year", minval = 2013) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 2020, title = "To Year", minval = 2017) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest slut startTimeOk() => true initial_capital = 100000 take = close > xATRTrailingStop if( startTimeOk() ) and (pos == 1) //if (pos == 1) strategy.entry("Long", strategy.long, comment = "KOP") strategy.exit("Long", when = take) if( startTimeOk() ) and (pos == -1) //if (pos == -1) strategy.entry("Short", strategy.short, comment = "SALJ") barcolor(pos == -1 ? red: pos == 1 ? green : blue ) plot(xATRTrailingStop, color=red, title="ATR Trailing Stop") //Mittersta linjen som är triggerlinjen för köp/sälj plot(band1, color=red) plot(band2, color=blue)