Chiến lược đột phá xu hướng ATR thích ứng


Ngày tạo: 2023-10-31 15:58:46 sửa đổi lần cuối: 2023-10-31 15:58:46
sao chép: 0 Số nhấp chuột: 690
1
tập trung vào
1617
Người theo dõi

Chiến lược đột phá xu hướng ATR thích ứng

Tổng quan

Chiến lược này là một chiến lược phá vỡ xu hướng dựa trên chỉ số ATR. Ý tưởng chính của nó là thực hiện các hoạt động phá vỡ xu hướng khi giá vượt quá ATR của một số nhân. Chiến lược này cũng bao gồm xác nhận xu hướng và sử dụng các tính năng hạn chế giao dịch trong phạm vi ngày.

Nguyên tắc

Chiến lược sử dụng chỉ số ATR để xác định mức độ biến động giá. ATR là mức độ biến động thực trung bình, đo mức độ biến động giá trung bình trong một khoảng thời gian nhất định.

Khi giá tăng vượt qua số ATRs trên gấp đôi ATR, thực hiện nhiều hoạt động; khi giá giảm vượt qua số ATRs dưới gấp đôi ATR, thực hiện giao dịch ngắn hạn.

Ngoài ra, chiến lược thêm các biến BOOL cần vị trí dài ((needlong) và cần short ((needshort), có thể kiểm soát chỉ làm nhiều hoặc chỉ làm ngắn. Chiến lược cũng đặt phạm vi ngày, chỉ giao dịch trong khoảng thời gian giữa các ngày được chỉ định, để thực hiện giới hạn phạm vi thời gian.

Chiến lược sử dụng biến số kích thước để xác định vị trí, tính toán số lần chơi theo tình trạng vị trí. Số lần chơi được tính theo tỷ lệ phần trăm quyền lợi tài khoản.

Ưu điểm

  • Sử dụng chỉ số ATR để tự động thích ứng với biến động thị trường, không cần thiết phải thiết lập thủ công khoảng cách dừng lỗ
  • Bạn có thể lựa chọn làm thêm hoặc chỉ làm thêm/không
  • Bạn có thể thiết lập một phạm vi ngày để giao dịch, tránh các thời điểm quan trọng
  • Cài đặt linh hoạt theo tỷ lệ phần trăm quyền lợi tài khoản

Rủi ro và giải pháp

  • Chỉ số ATR chỉ tính đến biến động giá, nếu thị trường thay đổi mạnh, khoảng cách dừng có thể quá nhỏ và cần phải tối ưu hóa các chỉ số khác
  • Khi hạn chế giao dịch trong phạm vi ngày, bạn có thể mở rộng phạm vi ngày thích hợp nếu không có cơ hội phù hợp trước và sau một khoảng thời gian quan trọng, có thể dẫn đến việc bỏ lỡ cơ hội giao dịch
  • Khi đặt hàng bằng tỷ lệ quyền lợi tài khoản, cần thiết lập tỷ lệ hợp lý để tránh tổn thất đơn lẻ quá lớn

Tối ưu hóa tư duy

  • Có thể xem xét thêm các chỉ số xu hướng như đường trung bình di chuyển để lọc các giao dịch tiếng ồn do phá vỡ không theo xu hướng
  • Có thể thử nghiệm các tham số khác nhau của chu kỳ ATR để chọn các tham số kết hợp tốt nhất
  • Có thể xem xét sử dụng với các chiến lược khác để phát huy các lợi thế của mình và cải thiện sự ổn định của chiến lược

Tóm tắt

Ý tưởng tổng thể của chiến lược này rất rõ ràng và dễ hiểu, sử dụng chỉ số ATR để tự động thích ứng với biến động của thị trường, là một chiến lược theo dõi xu hướng phổ biến. Bằng cách tối ưu hóa tham số và kết hợp các chiến lược khác, có thể cải thiện hơn nữa hiệu suất và sự ổn định của chiến lược.

Mã nguồn chiến lược
/*backtest
start: 2023-09-30 00:00:00
end: 2023-10-30 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Noro's Volty Strategy v1.0", shorttitle = "Volty 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 100)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(false, defval = false, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
length = input(5)
numATRs = input(0.75)
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Indicator
atrs = sma(tr, length) * numATRs

//Trading
size = strategy.position_size
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]
if (not na(close[length])) and needlong
    strategy.entry("L", strategy.long, lot, stop = close + atrs, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if (not na(close[length])) and needlong == false
    strategy.entry("L", strategy.long, 0, stop = close + atrs, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if (not na(close[length])) and needshort
    strategy.entry("S", strategy.short, lot, stop = close - atrs, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if (not na(close[length])) and needshort == false
    strategy.entry("S", strategy.short, 0, stop = close - atrs, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))