Ini adalah strategi supertrend pengesanan yang terutamanya menggabungkan penunjuk supertrend dengan tetapan parameter yang berbeza untuk mencapai kesan pengesanan dan menggunakan penunjuk penapis untuk kawalan risiko.
Strategi ini terutamanya terdiri daripada tiga kumpulan penunjuk supertrend dengan tetapan parameter yang berbeza. Kumpulan pertama adalah penunjuk supertrend utama yang menggunakan parameter lalai untuk penilaian asas mengenai trend pasaran. Kumpulan kedua adalah penunjuk supertrend timbalan yang mencapai penjejakan perubahan harga yang lebih sensitif dengan mengurangkan tempoh ATR dan meningkatkan pengganda ATR. Kumpulan ketiga adalah penunjuk supertrend penapis yang meningkatkan tempoh ATR dan pengganda ATR dengan tepat untuk menapis pecah palsu.
Apabila supertrend utama mengeluarkan isyarat beli, jika wakil supertrend juga mengeluarkan isyarat selaras dan arah supertrend penapis adalah ke atas, strategi akan mengambil pembelian penjejakan. Apabila supertrend utama mengeluarkan isyarat jual, jika wakil supertrend juga mengeluarkan isyarat selaras dan arah supertrend penapis adalah ke bawah, strategi akan mengambil penjualan penjejakan. Ini dapat menangkap trend utama sambil menggunakan penunjuk supertrend timbal balik yang fleksibel untuk mengesan penyesuaian kecil dan mencapai kemasukan dan hentian kerugian tepat pada masanya.
Langkah-langkah pencegahan risiko utama:
Idea keseluruhan strategi ini jelas dan mudah. Dengan menyelaraskan beberapa kumpulan penunjuk supertrend dengan tetapan parameter yang berbeza, ia merealisasikan pelacakan kemasukan dan kawalan risiko. Isyarat strategi lebih tepat dengan prestasi langsung yang baik. Ia sesuai untuk pemula belajar, dan juga boleh digunakan sebagai templat untuk menguji dan mengoptimumkan pelbagai indikator dan parameter. Ini adalah strategi supertrend yang patut disyorkan.
/*backtest start: 2023-11-25 00:00:00 end: 2023-12-25 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Supertrend TEST 2 Strategy", overlay = true, format=format.price, precision=2) Periods = input(title="ATR Period", type=input.integer, defval=4) src = input(hl2, title="Source") Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=4.7) changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true) showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=true) highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true) tp=close sl=close atr2 = sma(tr, Periods) atr= changeATR ? atr(Periods) : atr2 up=src-(Multiplier*atr) up1 = nz(up[1],up) up := close[1] > up1 ? max(up,up1) : up dn=src+(Multiplier*atr) dn1 = nz(dn[1], dn) dn := close[1] < dn1 ? 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="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green) buySignal = trend == 1 and trend[1] == -1 plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green ) plotshape(buySignal and showsignals ? up : na, title="Лонг", text="Лонг", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white ) dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red) sellSignal = trend == -1 and trend[1] == 1 plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red ) plotshape(sellSignal and showsignals ? dn : na, title="Шорт", text="Шорт", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white ) mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0) longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white sPeriods=input(title="ATR Period", type=input.integer, defval=8) sMultiplier=input(title="dop ATR Multiplier", type=input.float, step=0.1, defval=1.5) satr2 = sma(tr, sPeriods) satr= changeATR ? atr(sPeriods) : satr2 ssup=ohlc4-(sMultiplier*satr) ssup1 = nz(ssup[1],ssup) ssup := close[1] > ssup1 ? max(ssup,ssup1) : ssup sdn=ohlc4+(sMultiplier*satr) sdn1 = nz(sdn[1], sdn) sdn := close[1] < sdn1 ? min(sdn, sdn1) : sdn strend = 1 strend := nz(strend[1], strend) strend := strend == -1 and close > sdn1 ? 1 : strend == 1 and close < ssup1 ? -1 : strend sbuySignal = strend == 1 and strend[1] == -1 ssellSignal = strend == -1 and strend[1] == 1 fPeriods=input(title="ATR Period", type=input.integer, defval=10) fMultiplier=input(title="filter ATR Multiplier", type=input.float, step=0.1, defval=5) fatr2 = sma(tr, fPeriods) fatr= changeATR ? atr(fPeriods) : fatr2 fup=ohlc4-(fMultiplier*fatr) fup1 = nz(fup[1],fup) fup := close[1] > fup1 ? max(fup,fup1) : fup fdn=ohlc4+(fMultiplier*fatr) fdn1 = nz(fdn[1], fdn) fdn := close[1] < fdn1 ? min(fdn, fdn1) : fdn ftrend = 1 ftrend := nz(ftrend[1], ftrend) ftrend := ftrend == -1 and close > fdn1 ? 1 : ftrend == 1 and close < fup1 ? -1 : ftrend fbuySignal = ftrend == 1 and ftrend[1] == -1 fsellSignal = ftrend == -1 and ftrend[1] == 1 tcolor=color.new(color.gray,50) fdnPlot = plot(ftrend == 1 ? na : fdn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=tcolor) fupPlot = plot(ftrend == 1 ? fup : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=tcolor) if (strategy.position_size > 0) tp:=tp[1] sl:=up strategy.exit("Long_TP/SL","Long",limit=tp, stop=sl) if (strategy.position_size < 0) tp:=tp[1] sl:=dn strategy.exit("Short_TP/SL","Short",limit=tp, stop=sl) if ((buySignal and ftrend==1) or (sbuySignal and trend==1 and ftrend==1)) tp:=close+(close-up)*0.382 strategy.entry("Long", strategy.long, limit=tp, comment=tostring(round(tp))) if ((sellSignal and ftrend==-1) or (ssellSignal and trend==-1 and ftrend==-1)) tp:=close-(dn-close)*0.382 strategy.entry("Short", strategy.short, limit=tp, comment=tostring(round(tp)))