Super ATR Trend Following Strategy adalah strategi trend mengikut indikator ATR. Ia menggunakan indikator ATR untuk mengukur turun naik pasaran dan menetapkan stop loss berdasarkan pelbagai ATR untuk mengesan trend.
Strategi ini mula-mula mengira penunjuk ATR, yang merupakan purata bergerak turun naik harga selama N hari yang lalu, untuk mewakili risiko pasaran dan turun naik. Strategi ini membolehkan kita mengubah kaedah pengiraan ATR, sama ada ATR biasa atau SMA.
Kemudian jalur atas dan bawah dikira berdasarkan nilai ATR didarabkan dengan faktor, iaitu:close - Multiplier * ATR
untuk band atas;close + Multiplier * ATR
Ini membentuk saluran trend berasaskan ATR.
Kami kemudian menilai sama ada harga semasa menembusi jalur atas atau bawah saluran. Jika harga menembusi jalur atas, ia dinilai sebagai memasuki trend penurunan; jika harga menembusi jalur bawah, ia dinilai sebagai memasuki trend menaik. Apabila terdapat trend breakout, kami membuat pembelian dan penjualan yang sepadan.
Di samping itu, strategi telah menetapkan tetingkap masa dagangan untuk hanya berdagang dalam julat masa tarikh yang ditentukan.
Strategi trend berdasarkan saluran ini mempunyai kelebihan berikut:
Secara amnya, ini adalah trend yang mudah dan praktikal mengikut strategi yang dapat mengawal risiko dengan berkesan dan memperoleh pulangan yang baik.
Terdapat juga beberapa risiko untuk strategi ini:
Untuk mengawal risiko ini, kita boleh mengambil langkah-langkah berikut:
Terdapat ruang untuk mengoptimumkan lagi strategi ini:
Pengoptimuman ini dapat meningkatkan kestabilan dan keuntungan strategi.
Secara keseluruhannya ini adalah strategi trend berikut yang sangat praktikal. Ia membina saluran adaptif menggunakan penunjuk ATR dan menentukan entri dengan penembusan saluran. Strategi ini mudah dan berkesan untuk mengawal risiko, sesuai untuk mengesan trend jangka menengah dan panjang. Kami juga mencadangkan kawalan risiko dan cadangan pengoptimuman lebih lanjut untuk menjadikan strategi lebih mantap.
/*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