
Strategi pelacakan tren superATR adalah strategi pelacakan tren berdasarkan indikator ATR. Strategi ini menggunakan indikator ATR untuk mengukur volatilitas pasar dan melakukan pelacakan tren dengan beberapa kali lipat dari ATR sebagai garis stop loss.
Strategi ini pertama-tama menghitung indikator ATR, di mana indikator ATR adalah rata-rata bergerak dari volatilitas harga saham dalam N hari terakhir, untuk mewakili risiko dan volatilitas pasar. Strategi ini memungkinkan kita mengubah metode perhitungan ATR, dapat memilih ATR biasa atau SMA.
Lalu kalikan satu kali lipatnya dengan nilai ATR sebagai jalur naik turun, yaitu menghitung naik:close - Multiplier * ATRPenghitungan di bawah rel:close + Multiplier * ATRIni adalah saluran tren berdasarkan indikator ATR.
Kemudian kita menilai apakah harga saat ini menembus saluran naik atau turun. Jika harga menembus saluran naik, kita menilai sebagai masuk ke dalam tren turun; jika harga menembus saluran turun, kita menilai sebagai masuk ke dalam tren naik.
Selain itu, strategi juga mengatur jendela waktu perdagangan, hanya dalam jangka waktu tanggal yang ditentukan.
Strategi pelacakan tren berbasis saluran indikator ini memiliki beberapa keuntungan:
Secara keseluruhan, ini adalah strategi pelacakan tren yang sederhana dan praktis yang dapat mengontrol risiko secara efektif dan mendapatkan keuntungan yang lebih baik.
Strategi ini juga memiliki beberapa risiko, terutama:
Untuk mengendalikan risiko ini, kita dapat mengambil langkah-langkah berikut:
Strategi ini masih bisa dioptimalkan lebih jauh:
Dengan optimasi ini, stabilitas dan tingkat pengembalian strategi dapat ditingkatkan lebih lanjut.
Strategi ini overall adalah strategi pelacakan tren yang sangat praktis. Strategi ini menggunakan indikator ATR untuk membangun saluran adaptasi dan memutuskan kapan tepat untuk membeli atau menjual dengan menerobos saluran. Strategi ini sederhana dan praktis, dapat mengontrol risiko secara efektif, dan cocok untuk melacak tren garis panjang.
/*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