Chiến lược dừng lỗ theo đuôi ATR đôi là một chiến lược giao dịch ngắn dựa trên chỉ số đường sóng thực trung bình (ATR). Chiến lược này đặt hai đường dừng lỗ ATR nhanh và ATR chậm cùng một lúc để quyết định bước vào và bước ra dựa trên sự giao thoa của hai đường dừng lỗ. Chiến lược đơn giản, dễ hiểu, phản ứng nhanh và phù hợp với thị trường biến động cao.
Chiến lược này chủ yếu sử dụng các chỉ số ATR để thiết lập hai đường dừng lỗ. Một là đường ATR nhanh, chu kỳ ATR ngắn, nhân nhỏ, phản ứng nhanh; và một là đường ATR chậm, chu kỳ ATR dài, nhân lớn, đóng vai trò lọc.
Logic hoạt động cụ thể là: tính toán đường ATR nhanh và đường ATR chậm; giá đường nhanh cao hơn đường chậm sẽ dừng lỗ bằng đường nhanh, nếu không sẽ dừng lỗ bằng đường chậm. Màu Kline cho thấy đường dừng lỗ hiện đang được sử dụng, màu xanh lá cây và xanh dương cho thấy đường dừng lỗ bằng đường nhanh, màu đỏ và vàng cho thấy đường dừng lỗ bằng đường chậm. Khi giá thị trường chạm vào đường dừng lỗ, bạn sẽ ra khỏi.
Chiến lược ATR hai chiều có những lợi thế sau đây:
Một số người cho rằng chiến lược này cũng có một số rủi ro:
Những rủi ro này có thể được giảm thiểu bằng cách tối ưu hóa chu kỳ ATR, điều chỉnh số nhân ATR, kết hợp với các phương pháp lọc các chỉ số khác.
Các phương pháp tối ưu hóa hơn nữa cho chiến lược ATR hai chiều là:
Chiến lược dừng lỗ ATR hai chiều tổng thể rất dễ hiểu, đặc biệt phù hợp với các tình huống biến động cao, có thể kiểm soát rủi ro một cách hiệu quả. Ngoài ra, không gian tối ưu hóa lớn hơn, có thể được nâng cao bằng cách điều chỉnh tham số, thêm bộ lọc và các phương pháp khác.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © ceyhun //@version=4 strategy("ATR Trailing Stop Strategy by ceyhun", overlay=true) /////////notes//////////////////////////////////////// // This is based on the ATR trailing stop indicator // // width addition of two levels of stops and // // different interpretation. // // This is a fast-reacting system and is better // // suited for higher volatility markets // ////////////////////////////////////////////////////// SC = input(close, "Source", input.source) // Fast Trail // AP1 = input(5, "Fast ATR period", input.integer) // ATR Period AF1 = input(0.5, "Fast ATR multiplier", input.float) // ATR Factor SL1 = AF1 * atr(AP1) // Stop Loss 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) and SC[1] < nz(Trail1[1], 0), min(nz(Trail1[1], 0), SC + SL1), iff(SC > nz(Trail1[1], 0), SC - SL1, SC + SL1))) // Slow Trail // AP2 = input(10, "Slow ATR perod", input.integer) // ATR Period AF2 = input(2, "Slow ATR multiplier", input.float) // ATR Factor SL2 = AF2 * atr(AP2) // Stop Loss 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) and SC[1] < nz(Trail2[1], 0), min(nz(Trail2[1], 0), SC + SL2), iff(SC > nz(Trail2[1], 0), SC - SL2, SC + SL2))) // Bar color for trade signal // Green = Trail1 > Trail2 and close > Trail2 and low > Trail2 Blue = Trail1 > Trail2 and close > Trail2 and low < Trail2 Red = Trail2 > Trail1 and close < Trail2 and high < Trail2 Yellow = Trail2 > Trail1 and close < Trail2 and high > Trail2 // Signals // Bull = barssince(Green) < barssince(Red) Bear = barssince(Red) < barssince(Green) Buy = crossover(Trail1, Trail2) Sell = crossunder(Trail1, Trail2) TS1 = plot(Trail1, "Fast Trail", style=plot.style_line,color=Trail1 > Trail2 ? color.blue : color.yellow, linewidth=2) TS2 = plot(Trail2, "Slow Trail", style=plot.style_line,color=Trail1 > Trail2 ? color.green : color.red, linewidth=2) fill(TS1, TS2, Bull ? color.green : color.red, transp=90) plotcolor = input(true, "Paint color on chart", input.bool) bcl = iff(plotcolor == 1, Blue ? color.blue : Green ? color.lime : Yellow ? color.yellow : Red ? color.red : color.white, na) barcolor(bcl) if Buy strategy.entry("Buy", strategy.long, comment="Buy") if Sell strategy.entry("Sell", strategy.short, comment="Sell")