Chiến lược phá vỡ xu hướng ATR

Tác giả:ChaoZhang, Ngày: 2024-03-22 14:48:37
Tags:

img

Tổng quan

Đây là một chiến lược giao dịch định lượng nắm bắt sự đột phá xu hướng bằng cách sử dụng chỉ số ATR và giá đóng cửa. Chiến lược tính toán động các đường xu hướng trên và dưới để xác định hướng xu hướng và tạo ra các tín hiệu giao dịch khi giá đóng cửa phá vỡ đường xu hướng. Chiến lược cũng thiết lập mức dừng lỗ và mức giá mục tiêu và cho phép dừng lại dựa trên biến động.

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

  1. Tính toán tín hiệu ATR: atr_signal = atr(atr_period)
  2. Tính toán đường xu hướng trên và dưới:
    • Đường xu hướng thấp hơn: xu hướng thấp hơn = thấp hơn - tín hiệu atr_mult*atr_signal
    • Đường xu hướng trên: upper_trend = cao + atr_mult*atr_signal
  3. Điều chỉnh động các đường xu hướng, giữ cho chúng không thay đổi nếu chúng bị phá vỡ, nếu không cập nhật đến các giá trị mới nhất
  4. Mã màu các đường xu hướng dựa trên vị trí tương đối của giá đóng cửa để xác định hướng xu hướng
  5. Tạo tín hiệu giao dịch:
    • Tín hiệu dài: Không có vị trí hiện tại và giá đóng phá vỡ trên đường xu hướng trên
    • Tín hiệu ngắn: Không có vị trí hiện tại và giá đóng phá vỡ dưới đường xu hướng dưới
  6. Đặt giá dừng lỗ và giá mục tiêu:
    • Stop-loss: Giá nhập cảnh gần nhất ± phạm vi ATR * nhân tố tại thời điểm phá vỡ
    • Giá mục tiêu: Giá nhập cảnh gần nhất ± phạm vi dừng lỗ * tỷ lệ lợi nhuận/rủi ro (rr)
  7. Chặn sau:
    • Dừng dài: Đường xu hướng trên cao nhất
    • Khóa ngắn: Đường xu hướng thấp nhất

Phân tích lợi thế

  1. Điều chỉnh động các đường xu hướng dựa trên biến động để thích nghi với các điều kiện thị trường khác nhau
  2. Các đường xu hướng có mã màu với hướng dẫn để dễ dàng xác định xu hướng
  3. Sử dụng ATR như một thước đo biến động để thiết lập giá dừng lỗ và giá mục tiêu hợp lý
  4. Chức năng dừng kéo theo để khóa lợi nhuận trong khi giảm thiểu rút tiền
  5. Các thông số được điều chỉnh cao để phù hợp với các công cụ và khung thời gian khác nhau

Phân tích rủi ro

  1. Các chiến lược đột phá xu hướng có thể tạo ra các tín hiệu quá mức dẫn đến tổn thất trong các thị trường hỗn loạn
  2. Việc lựa chọn không chính xác các thông số ATR có thể dẫn đến các đường xu hướng quá nhạy cảm hoặc chậm, ảnh hưởng đến chất lượng tín hiệu
  3. Tỷ lệ lợi nhuận/rủi ro cố định có thể không thích nghi tốt với các đặc điểm thị trường khác nhau
  4. Chế độ dừng lại có thể cắt giảm tổn thất và bỏ lỡ các động thái xu hướng

Giải pháp:

  1. Thiết lập các bộ lọc xu hướng hoặc chỉ số dao động để tránh thua lỗ trên các thị trường dao động
  2. Tối ưu hóa các tham số ATR riêng biệt dựa trên các đặc điểm của thiết bị và khung thời gian
  3. Tối ưu hóa tỷ lệ phần thưởng / rủi ro và logic dừng lại để cải thiện lợi nhuận điều chỉnh rủi ro của chiến lược
  4. Kết hợp với các phương pháp nhận dạng xu hướng để cải thiện dừng lại và nắm bắt nhiều lợi nhuận xu hướng hơn

Hướng dẫn tối ưu hóa

  1. Kết hợp nhiều khung thời gian, sử dụng khung thời gian cao hơn để xác định xu hướng và khung thời gian thấp hơn để kích hoạt tín hiệu
  2. Thêm các chỉ số khối lượng và giá để xác nhận trước khi đường xu hướng phá vỡ để cải thiện hiệu lực tín hiệu
  3. Tối ưu hóa kích thước vị trí và kết hợp giao dịch swing
  4. Thực hiện tối ưu hóa tham số cho stop-loss và tỷ lệ lợi nhuận/rủi ro
  5. Cải thiện logic dừng lại để giảm dừng sớm trong khi xu hướng di chuyển

Phân tích nhiều khung thời gian giúp lọc ra tiếng ồn để xác định xu hướng ổn định hơn. Xác nhận khối lượng và giá trước khi phá vỡ có thể loại bỏ các tín hiệu sai. Tối ưu hóa kích thước vị trí cải thiện hiệu quả vốn. Tối ưu hóa các thông số dừng lỗ và phần thưởng / rủi ro có thể tăng lợi nhuận điều chỉnh rủi ro. Làm tinh chỉnh logic dừng theo dõi cho phép nắm bắt nhiều lợi nhuận xu hướng hơn trong khi kiểm soát giảm.

Tóm lại

Chiến lược này sử dụng ATR như một thước đo biến động để điều chỉnh động các vị trí đường xu hướng và nắm bắt sự đột phá xu hướng. Nó thiết lập các mục tiêu dừng lỗ và lợi nhuận hợp lý, sử dụng các điểm dừng để khóa lợi nhuận. Các tham số có thể điều chỉnh để thích nghi mạnh mẽ. Tuy nhiên, các chiến lược đột phá xu hướng dễ bị tổn thất trong điều kiện hỗn loạn và đòi hỏi tối ưu hóa và tinh chỉnh hơn nữa. Kết hợp nhiều khung thời gian, lọc tín hiệu, tối ưu hóa kích thước vị trí, tối ưu hóa tham số và các kỹ thuật khác có thể cải thiện hiệu suất và độ bền của chiến lược.


/*backtest
start: 2023-03-16 00:00:00
end: 2024-03-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title = "Claw-Pattern", overlay=true, calc_on_every_tick=true, default_qty_type= strategy.percent_of_equity,default_qty_value=10, currency="USD")
//Developer: Trading Strategy Guides
//Creator: Trading Strategy Guides
//Date: 3/18/2024
//Description: A trend trading system strategy 

atr_period = input(title="ATR Period", defval=120, type=input.integer)
atr_mult = input(title="ATR Multiplier", defval=2, type=input.integer)
dir = input(title="Direction (Long=1, Short=-1, Both = 0)", defval=1, type=input.integer)
factor = input(title="Stop Level Deviation (% Chan.)", defval=0.75, type=input.float)
rr = input(title="Reward to Risk Multiplier", defval=2, type=input.integer)
trail_bar_start = input(title="Trail Stop Bar Start", defval=20, type=input.integer)
col_candles = input(title="Enable Colored Candles", defval=false, type=input.bool)

atr_signal = atr(atr_period)

lower_trend = low - atr_mult*atr_signal
upper_trend = high + atr_mult*atr_signal

upper_trend := upper_trend > upper_trend[1] and close < upper_trend[1] ? upper_trend[1] : upper_trend
lower_trend := lower_trend < lower_trend[1] and close > lower_trend[1] ? lower_trend[1] : lower_trend

upper_color = barssince(cross(close, upper_trend[1])) > barssince(cross(close, lower_trend[1])) ? color.red : na
lower_color = barssince(cross(close, upper_trend[1])) > barssince(cross(close, lower_trend[1])) ? na : color.green

trend_line = lower_trend

plot(lower_trend, color=lower_color, title="Lower Trend Color")
plot(upper_trend, color=upper_color, title="Upper Trend Color")

is_buy = strategy.position_size == 0 and crossover(close, upper_trend[1]) and upper_color[1]==color.red and (dir == 1 or dir == 0)
is_sell = strategy.position_size == 0 and crossover(close, lower_trend[1]) and lower_color[1]==color.green and (dir == -1 or dir == 0)

if is_buy
    strategy.entry("Enter Long", strategy.long)
else if is_sell
    strategy.entry("Enter Short", strategy.short)

Thêm nữa