Super ATR Trend Following Strategy adalah strategi trend following berdasarkan indikator ATR. Ini menggunakan indikator ATR untuk mengukur volatilitas pasar dan menetapkan stop loss berdasarkan beberapa ATR untuk melacak tren.
Strategi ini pertama-tama menghitung indikator ATR, yang merupakan moving average dari volatilitas harga selama N hari terakhir, untuk mewakili risiko pasar dan volatilitas.
Kemudian band atas dan bawah dihitung berdasarkan nilai ATR dikalikan dengan faktor, yaitu:close - Multiplier * ATR
untuk band atas;close + Multiplier * ATR
Ini membentuk saluran tren berbasis ATR.
Kami kemudian menilai apakah harga saat ini menembus band atas atau bawah saluran. Jika harga menembus band atas, itu dinilai sebagai memasuki tren penurunan; jika harga menembus band bawah, itu dinilai sebagai memasuki tren naik. Ketika ada trend breakout, kami membuat pembelian dan penjualan yang sesuai.
Selain itu, strategi telah menetapkan jendela waktu perdagangan untuk hanya berdagang dalam rentang waktu tanggal yang ditentukan.
Strategi trend yang didasarkan pada saluran indikator ini memiliki keuntungan berikut:
Secara umum, ini adalah tren yang sederhana dan praktis mengikuti strategi yang dapat secara efektif mengendalikan risiko dan mendapatkan pengembalian yang baik.
Ada juga beberapa risiko untuk strategi ini:
Untuk mengendalikan risiko ini, kita dapat mengambil langkah-langkah berikut:
Ada ruang untuk optimalisasi lebih lanjut dari strategi ini:
Optimalisasi ini dapat meningkatkan stabilitas dan profitabilitas strategi.
Secara keseluruhan ini adalah tren yang sangat praktis mengikuti strategi. Ini membangun saluran adaptif menggunakan indikator ATR dan menentukan entri oleh saluran breakout. Strategi ini sederhana dan efektif untuk mengendalikan risiko, cocok untuk melacak tren jangka menengah dan panjang. Kami juga mengusulkan lebih lanjut kontrol risiko dan saran optimasi untuk membuat strategi lebih kuat.
/*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