Strategi Mengikuti Trend Super Rangka Masa Berbilang Masa


Tarikh penciptaan: 2024-01-15 11:35:47 Akhirnya diubah suai: 2024-01-15 11:35:47
Salin: 0 Bilangan klik: 556
1
fokus pada
1617
Pengikut

Strategi Mengikuti Trend Super Rangka Masa Berbilang Masa

Gambaran keseluruhan

Strategi ini adalah strategi yang menggunakan indikator ATR untuk membina saluran trend yang dinamik dalam jangka masa yang berbilang untuk mencapai trend. Strategi ini akan menghasilkan isyarat apabila harga menembusi saluran dan menangkap trend yang lebih besar dengan terus menyesuaikan saluran.

Prinsip Strategi

Strategi menggunakan indikator ATR untuk membina saluran uptrend dan saluran downtrend. Secara khusus, garis saluran uptrend adalah harga penutupan tolak N kali ganda indikator ATR; garis saluran downtrend adalah harga penutupan ditambah N kali ganda indikator ATR. Nilai N boleh disesuaikan dengan parameter.

Apabila harga menembusi saluran naik, ia akan menghasilkan isyarat beli; apabila harga menembusi saluran turun, ia akan menghasilkan isyarat jual. Saluran ini akan menyesuaikan diri dengan pergerakan harga terkini, yang membolehkan trend dijejaki.

Selain itu, strategi ini juga mendefinisikan satu pembolehubah trend untuk menentukan sama ada trend sedang naik atau turun. Pembolehubah trend digunakan bersama dengan garis saluran untuk mengelakkan isyarat yang salah.

Kelebihan Strategik

  • Menggunakan saluran dinamik untuk menjejaki trend, mengikut perkembangan.
  • Mengelakkan kenaikan dan penurunan dan mengurangkan risiko perubahan
  • Parameter saluran boleh laras, beradaptasi
  • Lebih fleksibel dalam menetapkan jangka masa berbilang

Risiko Strategik

  • Pengesanan yang terlalu radikal boleh meningkatkan risiko kerugian
  • Parameter saluran yang tidak betul, kurang isyarat atau lebih banyak isyarat salah
  • Keupayaan pengaturcaraan yang kuat diperlukan untuk menyesuaikan parameter

Kaedah pengoptimuman:

  • Memperkecilkan ATR untuk mengurangkan pengesanan
  • Mengoptimumkan parameter, mencari kombinasi parameter yang optimum
  • Meningkatkan strategi penangguhan kerugian dan mengurangkan kerugian tunggal

Arah pengoptimuman strategi

  • Menambah penapisan untuk penunjuk lain untuk memastikan isyarat lebih dipercayai
  • Meningkatkan strategi hentikan kerugian dan mengurangkan risiko
  • Optimumkan parameter untuk mencari parameter terbaik
  • Optimumkan masa masuk dan keluar, meningkatkan kadar keuntungan

ringkaskan

Strategi ini secara keseluruhannya adalah strategi trend-tracking yang lebih baik. Ia dapat menyesuaikan diri secara dinamik, mengikut keadaan, dan mengelakkan mengejar tinggi dan rendah. Dengan pengoptimuman parameter dan penambahbaikan yang sesuai, anda dapat meningkatkan lagi kelebihan strategi, mengurangkan risiko, sehingga mendapat kesan yang lebih baik.

Kod sumber strategi
/*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