
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.
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.
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:
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.
Chiến lược này cũng có một số rủi ro, bao gồm:
Để 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:
Đây là chiến lược có thể được tối ưu hóa hơn nữa:
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.
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.
/*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