Strategi Pivot Point SuperTrend adalah strategi trend berikut yang inovatif yang menggabungkan dua indikator populer
Dasar strategi ini terletak pada perpaduan dari Pivot Points dan indikator SuperTrend, ditambah penambahan filter tren yang kuat. Ini dimulai dengan menghitung Pivot Highs dan Lows selama periode tertentu, yang berfungsi sebagai titik referensi penting untuk analisis tren. Melalui perhitungan rata-rata tertimbang, Pivot Points ini menciptakan garis tengah, menyempurnakan indikator keseluruhan.
Selanjutnya, berdasarkan garis tengah dan Average True Range (ATR) dengan Factor yang ditentukan pengguna, band atas dan bawah dihasilkan. Band ini beradaptasi dengan volatilitas pasar, menambahkan fleksibilitas pada strategi. Inti dari strategi
Filter tren tambahan yang diperkenalkan ke dalam strategi semakin meningkatkan kemampuannya. Filter ini didasarkan pada rata-rata bergerak, memberikan penilaian dinamis tentang kekuatan dan arah tren. Dengan menggabungkan filter tren ini dengan sinyal Pivot Point SuperTrend asli, strategi ini bertujuan untuk membuat keputusan perdagangan yang lebih tepat dan dapat diandalkan.
Keakuratan yang ditingkatkan: Penggabungan filter tren meningkatkan akurasi strategi dengan mengkonfirmasi arah tren secara keseluruhan sebelum menghasilkan sinyal.
Trend Continuation: Integrasi Pivot Points dan SuperTrend, bersama dengan filter tren, bertujuan untuk memperpanjang perdagangan selama tren pasar yang kuat, berpotensi memaksimalkan peluang keuntungan.
Pengurangan Whipsaws: Perhitungan rata-rata tertimbang strategi, ditambah dengan filter tren, membantu meminimalkan sinyal palsu dan mengurangi whipsaws selama kondisi pasar yang tidak pasti atau sampingan.
Pengamatan dukungan dan resistensi: Strategi terus memberikan tingkat dukungan dan resistensi tambahan berdasarkan titik Pivot, menawarkan informasi kontekstual yang berharga kepada pedagang.
Dependensi Parameter: Strategi ini sensitif terhadap parameter seperti periode ATR dan multiplier. Pengaturan yang tidak tepat dapat menyebabkan overtrading atau kehilangan peluang.
Trend Reversals: Di dekat titik pembalikan tren, strategi dapat menghasilkan sinyal palsu yang menghasilkan kerugian yang tidak perlu.
Over-optimasi: Parameter dapat dioptimalkan untuk hasil terbaik tetapi tidak memiliki kelayakan ke depan.
Risiko Gap: Ketika harga bergerak di luar band, strategi memasuki posisi datar. Ini dapat kehilangan peluang ketika tren dilanjutkan setelah kesenjangan.
Filter Tambahan: Filter volume, volatilitas dll dapat ditambahkan untuk meningkatkan kekuatan strategi.
Parameter Dinamis: Metode untuk optimasi otomatis atau penyesuaian adaptif parameter berdasarkan perubahan kondisi pasar dapat membuat strategi lebih serbaguna.
Stop Loss: Penelitian cara untuk merancang mekanisme stop loss sambil mempertahankan logika strategi untuk secara efektif mengendalikan downside.
Optimasi lintas aset: Mengevaluasi parameter strategi di berbagai pasar dan instrumen.
Strategi Pivot Point SuperTrend menunjukkan kekuatan unik di berbagai dimensi seperti kesederhanaan dan kemampuan mengikuti tren. Pada saat yang sama, aspek seperti parameter, stop loss, optimasi lintas aset menawarkan ruang untuk memperbaikinya menjadi alat yang lebih universal dan dapat diandalkan. Secara keseluruhan, ini memberdayakan pedagang dengan cara yang efisien untuk menangkap tren pasar.
/*backtest start: 2023-02-19 00:00:00 end: 2024-02-25 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // © Julien_Eche // Strategy based on "Pivot Point Supertrend" Indicator by LonesomeTheBlue //@version=4 strategy("PPS", overlay=true, initial_capital=500000, currency=currency.USD, default_qty_type=strategy.cash, default_qty_value=50000) prd = input(defval = 2, title="Pivot Point Period", minval = 1, maxval = 50) Factor=input(defval = 3, title = "ATR Factor", minval = 1, step = 0.1) Pd=input(defval = 10, title = "ATR Period", minval=1) showpivot = input(defval = false, title="Show Pivot Points") showlabel = input(defval = true, title="Show Buy/Sell Labels") showcl = input(defval = false, title="Show PP Center Line") showsr = input(defval = false, title="Show Support/Resistance") // get Pivot High/Low float ph = pivothigh(prd, prd) float pl = pivotlow(prd, prd) // drawl Pivot Points if "showpivot" is enabled plotshape(ph and showpivot, text="H", style=shape.labeldown, color=na, textcolor=color.red, location=location.abovebar, transp=0, offset = -prd) plotshape(pl and showpivot, text="L", style=shape.labeldown, color=na, textcolor=color.lime, location=location.belowbar, transp=0, offset = -prd) // calculate the Center line using pivot points var float center = na float lastpp = ph ? ph : pl ? pl : na if lastpp if na(center) center := lastpp else //weighted calculation center := (center * 2 + lastpp) / 3 // upper/lower bands calculation Up = center - (Factor * atr(Pd)) Dn = center + (Factor * atr(Pd)) // get the trend float TUp = na float TDown = na Trend = 0 TUp := close[1] > TUp[1] ? max(Up, TUp[1]) : Up TDown := close[1] < TDown[1] ? min(Dn, TDown[1]) : Dn Trend := close > TDown[1] ? 1: close < TUp[1]? -1: nz(Trend[1], 1) Trailingsl = Trend == 1 ? TUp : TDown // plot the trend linecolor = Trend == 1 and nz(Trend[1]) == 1 ? color.lime : Trend == -1 and nz(Trend[1]) == -1 ? color.red : na plot(Trailingsl, color = linecolor , linewidth = 2, title = "PP SuperTrend") plot(showcl ? center : na, color = showcl ? center < hl2 ? color.blue : color.red : na) // check and plot the signals bsignal = Trend == 1 and Trend[1] == -1 ssignal = Trend == -1 and Trend[1] == 1 plotshape(bsignal and showlabel ? Trailingsl : na, title="Buy", text="Buy", location = location.absolute, style = shape.labelup, size = size.tiny, color = color.lime, textcolor = color.black, transp = 0) plotshape(ssignal and showlabel ? Trailingsl : na, title="Sell", text="Sell", location = location.absolute, style = shape.labeldown, size = size.tiny, color = color.red, textcolor = color.white, transp = 0) //get S/R levels using Pivot Points float resistance = na float support = na support := pl ? pl : support[1] resistance := ph ? ph : resistance[1] // if enabled then show S/R levels plot(showsr and support ? support : na, color = showsr and support ? color.lime : na, style = plot.style_circles, offset = -prd) plot(showsr and resistance ? resistance : na, color = showsr and resistance ? color.red : na, style = plot.style_circles, offset = -prd) // Trend Filter from SuperTrend Long Strategy Periods = input(title="ATR Period", type=input.integer, defval=10) src = input(hl2, title="Source") Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0) changeATR = input(title="Change ATR Calculation Method ?", type=input.bool, defval=true) // Combine the SuperTrend calculations 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 // Moving Average as Trend Filter periodes_ma = input(title="Moving Average Period", type=input.integer, defval=20) src_ma = input(title="Moving Average Source", type=input.source, defval=close) ma = sma(src_ma, periodes_ma) // Strategy Entry Conditions FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2018, title = "From Year", minval = 999) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(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 // Combined entry conditions longCondition = (trend == 1 and trend[1] == -1 and close > ma) or (bsignal and window()) shortCondition = (trend == -1 and trend[1] == 1 and close < ma) or (ssignal and window()) if (longCondition) strategy.entry("BUY", strategy.long) if (shortCondition) strategy.close("BUY") strategy.entry("SELL", strategy.short) buy1 = barssince((trend == 1 and trend[1] == -1 and close > ma) or (bsignal and window())) sell1 = barssince((trend == -1 and trend[1] == 1 and close < ma) or (ssignal and window())) color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na barcolor(color1)