Chiến lược ngăn chặn ATR hai lần

Tác giả:ChaoZhang, Ngày: 2024-01-31 17:10:32
Tags:

img

Tổng quan

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.

Nguyên tắc chiến lược

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

Phân tích lợi thế

Những lợi thế của chiến lược này là:

  1. Logic đơn giản và rõ ràng, dễ hiểu và thực hiện.
  2. Phản ứng nhanh với sự thay đổi của thị trường, phù hợp với thị trường biến động cao.
  3. Điều khiển mất mát dừng ATR kép có hiệu quả rủi ro.
  4. Chỉ số ATR là tham số để điều chỉnh phạm vi dừng mất mát.
  5. Màu sắc Kline hiển thị rõ tình hình dừng lỗ.

Phân tích rủi ro

Ngoài ra còn có một số rủi ro:

  1. Có xu hướng giao dịch quá mức.
  2. ATR có sự điều chỉnh đường cong kém, có thể làm tăng tổn thất.
  3. Không thể lọc hiệu quả các thị trường bên và xu hướng.

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.

Hướng tối ưu hóa

Các hướng tối ưu hóa là:

  1. Tối ưu hóa các thông số ATR để có phạm vi dừng mất mát tốt hơn.
  2. Thêm các chỉ số lọc để tránh các giao dịch không hợp lệ, như MA.
  3. Thêm các điều kiện mở để tránh lỗi. Ví dụ, thêm các chỉ số khối lượng.
  4. Thêm các bước thoát cho thời gian giữ để tránh giao dịch quá mức.

Kết luận

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")



Thêm nữa