Chiến lược ATR Trailing Stop đôi là một chiến lược giao dịch ngắn hạn dựa trên chỉ số Average True Range (ATR). Chiến lược đặt ra hai đường dừng lỗ, đường ATR nhanh và đường ATR chậm, cùng một lúc, và xác định bước vào và bước ra dựa trên sự chéo chéo của hai đường. Chiến lược đơn giản, đáp ứng và phù hợp với thị trường biến động cao.
Cốt lõi của chiến lược này là sử dụng hai đường dừng lỗ ATR. Một là đường ATR nhanh với khoảng thời gian ngắn và nhân nhỏ để phản ứng nhanh. Một là đường ATR chậm với khoảng thời gian dài và nhân lớn hơn để lọc. Khi đường ATR nhanh vượt qua đường ATR chậm, nó tạo ra tín hiệu mua. Khi đường ATR nhanh vượt qua đường ATR chậm, nó tạo ra tín hiệu bán. Vì vậy, chiến lược sử dụng sự chéo chéo của hai đường ATR để xác định bước vào và bước ra, có thể kiểm soát hiệu quả mức dừng lỗ.
Kline là một đường dừng lỗ. màu xanh lá cây và xanh dương có nghĩa là sử dụng đường nhanh. màu đỏ và vàng có nghĩa là sử dụng đường chậm. thoát khi giá thị trường chạm vào đường dừng lỗ.
Những lợi thế của chiến lược này là:
Ngoài ra còn có một số rủi ro:
Chúng ta có thể giảm rủi ro bằng cách tối ưu hóa thời gian ATR, điều chỉnh nhân ATR, kết hợp các chỉ số khác cho lọc vv.
Các hướng tối ưu hóa là:
Chiến lược dừng kéo ATR kép dễ hiểu và thực hiện, đặc biệt phù hợp với các kịch bản biến động cao và có thể kiểm soát rủi ro một cách hiệu quả.
/*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")