Strategi Pengesanan Super Trend Berbilang Jangka Masa

Penulis:ChaoZhang, Tarikh: 2024-01-15 11:35:47
Tag:

img

Ringkasan

Strategi ini menggunakan penunjuk ATR untuk membina saluran trend dinamik pelbagai jangka masa untuk mengesan trend.

Logika Strategi

Strategi ini menggunakan penunjuk ATR untuk membina saluran uptrend dan saluran downtrend. Khususnya, garis saluran uptrend adalah harga penutupan dikurangkan N kali penunjuk ATR; garis saluran downtrend adalah harga penutupan ditambah N kali penunjuk ATR. Nilai N boleh diselaraskan melalui parameter.

Apabila harga menembusi saluran uptrend, isyarat beli dihasilkan; apabila harga menembusi saluran downtrend, isyarat jual dihasilkan. Saluran secara dinamik menyesuaikan berdasarkan harga terkini untuk mengesan trend.

Di samping itu, strategi juga menentukan pembolehubah trend untuk menentukan sama ada arus berada dalam trend menaik atau menurun.

Kelebihan

  • Menggunakan saluran dinamik untuk mengesan trend dan perdagangan bersama-sama dengan trend
  • Mengelakkan mengejar tinggi dan menjual rendah, mengurangkan risiko pembalikan pasaran
  • Parameter saluran yang boleh diselaraskan, kebolehsesuaian yang tinggi
  • Tetapan jangka masa berbilang yang lebih fleksibel

Risiko

  • Pengesanan yang terlalu agresif boleh meningkatkan risiko kehilangan
  • Tetapan parameter saluran yang tidak betul membawa kepada lebih sedikit atau lebih banyak isyarat yang salah
  • Menghendaki kemahiran pengaturcaraan yang kuat untuk menyesuaikan parameter

Penambahbaikan:

  • Mengurangkan pengganda ATR dengan sewajarnya ke magnitud pengesanan yang lebih rendah
  • Mengoptimumkan parameter untuk mencari kombinasi terbaik
  • Tambah strategi stop loss untuk mengurangkan kerugian setiap perdagangan

Arahan pengoptimuman

  • Tambah penunjuk lain untuk penapis untuk isyarat yang lebih boleh dipercayai
  • Tambah strategi stop loss untuk mengurangkan risiko
  • Melakukan pengoptimuman parameter untuk mencari optimum
  • Mengoptimumkan masa masuk dan keluar untuk meningkatkan kadar keuntungan

Ringkasan

Secara keseluruhan ini adalah strategi penjejakan trend yang baik. Ia secara dinamik menyesuaikan diri untuk berdagang bersama-sama dengan trend dan mengelakkan mengejar tinggi dan menjual rendah. Dengan pengoptimuman parameter dan penambahbaikan yang betul, kelebihan strategi dapat ditingkatkan dan risiko dikurangkan untuk mencapai hasil yang lebih baik.


/*backtest
start: 2023-01-08 00:00:00
end: 2024-01-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('超级趋势精简优化版', 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.close('BUY',comment = '卖出')
buy1 = ta.barssince(buySignal)
sell1 = ta.barssince(sellSignal)
color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na



Lebih lanjut