Pivot Point SuperTrend Strategi

Penulis:ChaoZhang, Tanggal: 2024-02-26 10:57:20
Tag:

img

Gambaran umum

Strategi Pivot Point SuperTrend adalah strategi trend berikut yang inovatif yang menggabungkan dua indikator populer Pivot Points dan SuperTrend, sambil memperkenalkan filter tren tambahan untuk peningkatan presisi.

Logika Strategi

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 Pivot Point SuperTrend terletak pada mengidentifikasi tren yang berlaku dengan akurat, dengan indikator dengan lancar beralih antara sinyal bullish dan bearish saat harga berinteraksi dengan band SuperTrend.

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.

Analisis Keuntungan

  1. Keakuratan yang ditingkatkan: Penggabungan filter tren meningkatkan akurasi strategi dengan mengkonfirmasi arah tren secara keseluruhan sebelum menghasilkan sinyal.

  2. Trend Continuation: Integrasi Pivot Points dan SuperTrend, bersama dengan filter tren, bertujuan untuk memperpanjang perdagangan selama tren pasar yang kuat, berpotensi memaksimalkan peluang keuntungan.

  3. 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.

  4. Pengamatan dukungan dan resistensi: Strategi terus memberikan tingkat dukungan dan resistensi tambahan berdasarkan titik Pivot, menawarkan informasi kontekstual yang berharga kepada pedagang.

Analisis Risiko

  1. Dependensi Parameter: Strategi ini sensitif terhadap parameter seperti periode ATR dan multiplier. Pengaturan yang tidak tepat dapat menyebabkan overtrading atau kehilangan peluang.

  2. Trend Reversals: Di dekat titik pembalikan tren, strategi dapat menghasilkan sinyal palsu yang menghasilkan kerugian yang tidak perlu.

  3. Over-optimasi: Parameter dapat dioptimalkan untuk hasil terbaik tetapi tidak memiliki kelayakan ke depan.

  4. Risiko Gap: Ketika harga bergerak di luar band, strategi memasuki posisi datar. Ini dapat kehilangan peluang ketika tren dilanjutkan setelah kesenjangan.

Arahan Optimasi

  1. Filter Tambahan: Filter volume, volatilitas dll dapat ditambahkan untuk meningkatkan kekuatan strategi.

  2. Parameter Dinamis: Metode untuk optimasi otomatis atau penyesuaian adaptif parameter berdasarkan perubahan kondisi pasar dapat membuat strategi lebih serbaguna.

  3. Stop Loss: Penelitian cara untuk merancang mekanisme stop loss sambil mempertahankan logika strategi untuk secara efektif mengendalikan downside.

  4. Optimasi lintas aset: Mengevaluasi parameter strategi di berbagai pasar dan instrumen.

Ringkasan

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)

Lebih banyak