Chiến lược theo dõi xu hướng ATR


Ngày tạo: 2023-09-28 11:32:09 sửa đổi lần cuối: 2023-09-28 11:32:09
sao chép: 0 Số nhấp chuột: 795
1
tập trung vào
1617
Người theo dõi

Tổng quan

Chiến lược này dựa trên chỉ số ATR của bước sóng thực trung bình để đánh giá hướng của xu hướng, làm nhiều khi xu hướng tăng và làm giảm khi xu hướng giảm, thuộc loại chiến lược theo dõi xu hướng.

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

Chiến lược này đầu tiên tính toán giá SMA và EMA của chỉ số. Sau đó tính toán chỉ số ATR, tức là phạm vi biến động trung bình trong N ngày qua.

Chiến lược đánh giá hướng xu hướng bằng đường trung bình, đường lên ((ema + ATR * coefficient) và đường xuống ((ema - ATR * coefficient)). Khi giá lên đường lên đường, làm nhiều hơn; khi giá xuống đường xuống đường, làm trống.

Lập luận chính của mã:

  1. Tính trung bình giá SMA và EMA
  2. Tính toán phạm vi biến động trung bình của ATR
  3. Tính toán đường lên và đường xuống
  4. Đánh giá nhiều tín hiệu: Giá tăng lên đường ray
  5. Đánh giá tín hiệu lỗ hổng: Giá giảm xuống đường
  6. Thiết lập lỗ hổng bằng phẳng: giá dưới đường ray bằng phẳng; giá trên đường ray bằng phẳng

Đổi vị trí động thông qua ATR, có thể theo dõi xu hướng hiệu quả.

Lợi thế chiến lược

  1. Sử dụng chỉ số ATR để định hướng xu hướng, có thể nắm bắt xu hướng giá một cách hiệu quả
  2. Đặt mức dừng lỗ dựa trên đường trung bình để kiểm soát rủi ro một cách hợp lý
  3. Lập luận chiến lược đơn giản, rõ ràng và dễ hiểu
  4. Các tham số có thể được cấu hình linh hoạt để phù hợp với các môi trường thị trường khác nhau

Rủi ro chiến lược

  1. Chỉ số ATR sẽ không có tác dụng trong một thị trường biến động lớn
  2. Thiết lập tham số không đúng có thể gây ra quá nhiều lần mở vị trí
  3. Hạn chế thiệt hại có thể không có hiệu lực khi một sự kiện bất ngờ gây ra sự đảo ngược nhanh chóng
  4. Các thị trường có phí giao dịch cao, theo dõi Setting cần điều chỉnh

Giải pháp:

  1. Trong trường hợp thị trường có sự biến động lớn, nên tạm dừng chiến lược hoặc sử dụng các chỉ số khác.
  2. Tối ưu hóa tham số, giảm tần suất mở kho
  3. Tăng tỷ lệ dừng lỗ cho các sự kiện dữ liệu quan trọng
  4. Chuyển đổi phạm vi ATR theo giống cụ thể

Hướng tối ưu hóa chiến lược

  1. Kết hợp các tham số tối ưu hóa chỉ số xu hướng, như tham gia MACD để xác định xu hướng
  2. Thêm bộ lọc, như Brinh Băng định điểm
  3. Tối ưu hóa phương thức dừng lỗ, chẳng hạn như di chuyển dừng lỗ hoặc chỉ số rời khỏi sân
  4. Phạm vi ATR tối ưu hóa cho một giống cụ thể
  5. Tăng các chiến lược quản lý tài chính, như cổ phần cố định
  6. Các tham số tối ưu hóa động kết hợp với phương pháp học máy

Tóm tắt

Chiến lược theo dõi xu hướng ATR có ý tưởng tổng thể rõ ràng, đánh giá hướng xu hướng thông qua chỉ số ATR, thuộc chiến lược theo dõi xu hướng điển hình. Ưu điểm của chiến lược là đơn giản, dễ vận hành, có thể theo dõi xu hướng hiệu quả; nhưng cũng có một số rủi ro, cần điều chỉnh tối ưu hóa cho các môi trường thị trường khác nhau để có thể sử dụng tối đa chiến lược. Nhìn chung, chiến lược này là một công cụ giao dịch định lượng cũng có rất nhiều không gian mở rộng và giá trị sử dụng.

Mã nguồn chiến lược
/*backtest
start: 2023-08-28 00:00:00
end: 2023-09-27 00:00:00
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/
// © Investoz

//@version=4
strategy("ATR Strategy FOREX", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

len = input(26, type=input.integer, minval=1, title="Length")
mul = input(2.618, type=input.float, minval=0, title="Length")
mullow = input(2.386, type=input.float, minval=0, title="Length")

price = sma(close, 1)
average = ema(close, len)
diff = atr(len) * mul
difflow = atr(len) * mullow

bull_level = average + diff
bear_level = average - difflow
bull_cross = crossunder(price, bear_level)
bear_cross = crossunder(bull_level, price)

FromMonth = input(defval = 8, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 18, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2008, title = "From Year", minval = 2008)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 2020, title = "To Year", minval = 2019)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)       
startTimeOk()  => true

if (startTimeOk()) and ema(close,1) > ema(close,528)
    strategy.entry("KOP", strategy.long, when=bull_cross) 
    strategy.close("KOP", when=bear_cross)  
if (startTimeOk()) and ema(close,1) < ema(close,528)
   strategy.entry("SALJ", strategy.short, when=bear_cross) 
   strategy.close("SALJ", when=bull_cross)

plot(price, title="price", color=color.black, transp=50, linewidth=2)
a0 = plot(average, title="average", color=color.red, transp=50, linewidth=1)
a1 = plot(bull_level, title="bull", color=color.green, transp=50, linewidth=1)
a2 = plot(bear_level, title="bear", color=color.red, transp=50, linewidth=1)
fill(a0, a1, color=color.green, transp=97)
fill(a0, a2, color=color.red, transp=97)