Strategi Pelacakan Super Trend Multi-Timeframe

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

img

Gambaran umum

Strategi ini menggunakan indikator ATR untuk membangun saluran tren dinamis multi-frame untuk melacak tren.

Logika Strategi

Strategi ini menggunakan indikator ATR untuk membangun saluran uptrend dan saluran downtrend. Secara khusus, garis saluran uptrend adalah harga penutupan dikurangi N kali indikator ATR; garis saluran downtrend adalah harga penutupan ditambah N kali indikator ATR. Nilai N dapat disesuaikan melalui parameter.

Ketika harga menembus saluran uptrend, sinyal beli dihasilkan; ketika harga menembus saluran downtrend, sinyal jual dihasilkan. Saluran secara dinamis menyesuaikan berdasarkan harga terbaru untuk melacak tren.

Selain itu, strategi juga mendefinisikan variabel tren untuk menentukan apakah arus berada dalam tren naik atau turun.

Keuntungan

  • Menggunakan saluran dinamis untuk melacak tren dan perdagangan bersama dengan tren
  • Menghindari mengejar puncak dan menjual terendah, mengurangi risiko pembalikan pasar
  • Parameter saluran yang dapat disesuaikan, kemampuan beradaptasi yang tinggi
  • Pengaturan jangka waktu yang lebih fleksibel

Risiko

  • Pelacakan yang terlalu agresif dapat meningkatkan risiko kerugian
  • Pengaturan parameter saluran yang tidak benar menyebabkan sinyal yang lebih sedikit atau lebih salah
  • Membutuhkan keterampilan pemrograman yang kuat untuk menyesuaikan parameter

Peningkatan:

  • Mengurangi perkalian ATR dengan tepat ke magnitudo pelacakan yang lebih rendah
  • Mengoptimalkan parameter untuk menemukan kombinasi terbaik
  • Tambahkan strategi stop loss untuk mengurangi kerugian per perdagangan

Arahan Optimasi

  • Tambahkan indikator lain untuk filter untuk sinyal yang lebih andal
  • Tambahkan strategi stop loss untuk mengurangi risiko
  • Melakukan optimasi parameter untuk menemukan optimal
  • Mengoptimalkan waktu masuk dan keluar untuk meningkatkan tingkat keuntungan

Ringkasan

Secara keseluruhan ini adalah strategi pelacakan tren yang layak. Ini secara dinamis menyesuaikan diri untuk berdagang bersama dengan tren dan menghindari mengejar puncak dan penjualan terendah. Dengan optimasi parameter dan perbaikan yang tepat, keuntungan strategi dapat ditingkatkan lebih lanjut dan risiko dikurangi 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 banyak