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


Ngày tạo: 2024-02-19 11:41:20 sửa đổi lần cuối: 2024-02-19 11:41:20
sao chép: 0 Số nhấp chuột: 669
1
tập trung vào
1617
Người theo dõi

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

Tổng quan

Chiến lược theo dõi xu hướng siêu ATR là một chiến lược theo dõi xu hướng dựa trên chỉ số ATR. Nó sử dụng chỉ số ATR để đo lường sự biến động của thị trường và theo dõi xu hướng với một số lần ATR như đường dừng.

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

Chiến lược này đầu tiên tính toán chỉ số ATR, trong đó chỉ số ATR là trung bình di chuyển của mức biến động giá cổ phiếu trong N ngày qua, để thể hiện rủi ro và biến động của thị trường. Chiến lược cho phép chúng tôi thay đổi phương pháp tính toán ATR, có thể chọn cách tính toán ATR hoặc SMA thông thường.

Sau đó nhân một số nhân theo giá trị ATR như là đường đi lên đường đi xuống, tức là tính trên đường:close - Multiplier * ATR; tính theo đường ray:close + Multiplier * ATRĐây là một kênh xu hướng dựa trên chỉ số ATR.

Sau đó, chúng tôi đánh giá liệu giá hiện tại có phá vỡ đường dẫn lên xuống hay không. Nếu giá phá vỡ đường dẫn lên, chúng tôi đánh giá là tham gia xu hướng giảm; nếu giá phá vỡ đường dẫn xuống, chúng tôi đánh giá là tham gia xu hướng tăng. Khi xu hướng phá vỡ, chúng tôi mua và bán tương ứng.

Ngoài ra, chiến lược cũng thiết lập cửa sổ thời gian giao dịch, chỉ giao dịch trong khoảng thời gian của ngày được chỉ định.

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

Chiến lược theo dõi xu hướng dựa trên kênh chỉ số này có một số ưu điểm:

  1. Sử dụng chỉ số ATR để tự động điều chỉnh vị trí dừng lỗ, có thể kiểm soát rủi ro hiệu quả
  2. Chỉ số ATR tính đến biến động giá cổ phiếu, đường dừng lỗ hợp lý hơn
  3. Sử dụng lối vào đột phá để tăng độ chính xác
  4. Cho phép điều chỉnh cách tính ATR, tăng tính linh hoạt trong chiến lược
  5. Thiết lập cửa sổ thời gian giao dịch để tránh các chiến lược thất bại của các sự kiện lớn

Nhìn chung, đây là một chiến lược theo dõi xu hướng đơn giản và thực tế, có thể kiểm soát rủi ro hiệu quả và thu được lợi nhuận tốt hơn.

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro, bao gồm:

  1. Khi thị trường biến động mạnh, chỉ số ATR có thể không phản ứng kịp với sự thay đổi của thị trường, dẫn đến việc dừng lỗ quá nhẹ
  2. Khi nhiều người không đồng ý, giá có thể dao động trong kênh, làm tăng rủi ro giao dịch
  3. Cài đặt số nhân cố định có thể không phù hợp với tất cả các giống và cần điều chỉnh cho các giống khác nhau
  4. setWindow giới hạn các cơ hội giao dịch, nếu không được thiết lập tốt, bạn có thể bỏ lỡ các cơ hội giao dịch tốt hơn

Để kiểm soát những rủi ro này, chúng ta có thể thực hiện các biện pháp sau:

  1. Kết hợp với các chỉ số khác để đánh giá tình trạng thị trường, tránh chỉ dựa vào chỉ số ATR
  2. Tăng điều kiện lọc để tránh nguy cơ đột phá không hiệu quả
  3. Chọn số nhân phù hợp cho các đặc điểm lịch sử của các giống
  4. Tối ưu hóa và kiểm tra các tham số của setWindow để đảm bảo rằng nó được thiết lập hợp lý

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

Đây là chiến lược có thể được tối ưu hóa hơn nữa:

  1. Có thể giới thiệu các thuật toán học máy để tối ưu hóa động của nhân
  2. Có thể kết hợp với các chỉ số cảm xúc như đánh giá đa ngang, tối ưu hóa phạm vi kênh
  3. Tăng khối lượng giao dịch hoặc xác nhận biến động để tránh phá vỡ không hiệu quả
  4. Backtest sử dụng khung chính sách dựa trên thời gian cao cấp

Với những cải tiến này, chúng ta có thể cải thiện hơn nữa sự ổn định và lợi nhuận của chiến lược.

Tóm tắt

Chiến lược này nói chung là một chiến lược theo dõi xu hướng rất thực tế. Nó sử dụng chỉ số ATR để xây dựng kênh thích ứng và đánh giá thời gian mua bán bằng cách phá vỡ kênh. Chiến lược này đơn giản và thực tế, có thể kiểm soát rủi ro một cách hiệu quả, phù hợp để theo dõi xu hướng đường dài. Chúng tôi cũng đưa ra các đề xuất kiểm soát rủi ro và tối ưu hóa chiến lược hơn nữa, điều này sẽ làm cho chiến lược này mạnh mẽ hơn và mạnh mẽ hơn.

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

//@version=5
strategy('B厂长 @超级趋势精简优化版', overlay=true)
Periods = input(title='ATR周期', defval=10)
src = input(hl2, title='价格数据源')
Multiplier = input.float(title='ATR 乘数', step=0.1, defval=3.0)
changeATR = input(title='更改ATR计算方法', defval=true,tooltip = '默认为art否则sma(ta.tr,ATR周期)')
showsignals = input(title='显示买入/卖出信号', defval=false)
atr2 = ta.sma(ta.tr, Periods)
atr = changeATR ? ta.atr(Periods) : atr2
up = src - Multiplier * atr
up1 = nz(up[1], up)
up := close[1] > up1 ? math.max(up, up1) : up
dn = src + Multiplier * atr
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? math.min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
upPlot = plot(trend == 1 ? up : na, title='上涨趋势', style=plot.style_linebr, linewidth=2, color=color.new(color.green, 0))
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal and showsignals ? up : na, title='买点', text='买点', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0), textcolor=color.new(color.white, 0))
dnPlot = plot(trend == 1 ? na : dn, title='下跌趋势', style=plot.style_linebr, linewidth=2, color=color.new(color.red, 0))
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal and showsignals ? dn : na, title='卖点', text='卖点', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0), textcolor=color.new(color.white, 0))
FromMonth = input.int(defval=9, title='From Month', minval=1, maxval=12)
FromDay = input.int(defval=1, title='From Day', minval=1, maxval=31)
FromYear = input.int(defval=2018, title='From Year', minval=999)
ToMonth = input.int(defval=1, title='To Month', minval=1, maxval=12)
ToDay = input.int(defval=1, title='To Day', minval=1, maxval=31)
ToYear = input.int(defval=9999, title='To Year', minval=999)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)
window() =>
    time >= start and time <= finish ? true : false
longCondition = buySignal
if longCondition and window()
    strategy.entry('BUY', strategy.long, comment = '做多')
shortCondition = sellSignal
if shortCondition and window()
    strategy.entry('SAL', strategy.short, comment = '做空')

buy1 = ta.barssince(buySignal)
sell1 = ta.barssince(sellSignal)
color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na