Chiến lược ATR hai lần

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

双ATR尾随止损策略

Thông tin chi tiết

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.

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

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.

Phân tích ưu thế

Chiến lược ATR hai chiều có những lợi thế sau đây:

  1. Điều này có nghĩa là bạn cần phải có một hệ thống thông tin thông minh, thông minh và dễ hiểu để thực hiện.
  2. Phản ứng nhanh với những thay đổi thị trường, phù hợp với những thị trường biến động cao.
  3. ATR hai lần ngăn chặn rủi ro, ngăn chặn hiệu quả.
  4. Chỉ số ATR được tham số hóa, có thể điều chỉnh mức độ dừng lỗ.
  5. Màu sắc Kline hiển thị cho thấy rõ tình trạng dừng mất mát.

Phân tích rủi ro

Một số người cho rằng chiến lược này cũng có một số rủi ro:

  1. Có thể có những trường hợp giao dịch quá thường xuyên.
  2. Chỉ số ATR không phù hợp với đường cong và có thể gây ra tổn thất phóng đại.
  3. Không thể lọc hiệu quả hai giai đoạn thị trường ngang và xu hướng.

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.

Định hướng tối ưu

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

  1. Tối ưu hóa các tham số ATR, điều chỉnh mức độ dừng.
  2. Tăng các chỉ số lọc để tránh giao dịch không hiệu quả.
  3. Tăng điều kiện mở giao dịch để tránh giao dịch sai. Ví dụ: tăng chỉ số năng lượng giao dịch.
  4. Tăng thời gian nắm giữ và tránh giao dịch quá thường xuyên.

Tóm lại

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



Nhiều hơn nữa