Pivot Reversal Strategi Kuantitatif Berdasarkan Pivot Points

Penulis:ChaoZhang, Tanggal: 2024-02-20 14:22:13
Tag:

img

Gambaran umum

Ide inti dari strategi ini adalah untuk menggunakan titik pivot untuk perdagangan kuantitatif.

Logika Strategi

Strategi ini pertama-tama mendefinisikan fungsi pivotHighSig() dan pivotLowSig() untuk menemukan swing high dan low point.

Secara khusus, untuk swing high, ia mencari beberapa tinggi yang lebih tinggi di sebelah kiri dan beberapa tinggi yang lebih rendah di sebelah kanan. Dengan demikian pivot high berada di tingkat yang relatif lebih tinggi. Kriteria untuk swing lows berlawanan - ia mencari lebih tinggi dan lebih rendah di kedua sisi.

Setelah menemukan swing high dan low, strategi selanjutnya memilih titik pivot dari titik pivot tersebut, yaitu titik penting dari pivot. Hal ini dicapai dengan mendefinisikan beberapa variabel historis untuk swing high dan low, misalnya ph1, ph2 dll.

Akhirnya, perdagangan pembalikan dilakukan ketika harga menembus titik pivot pivot.

Keuntungan

Strategi kuantitatif berbasis titik pivot ini memiliki keuntungan berikut:

  1. Ini mengambil keuntungan dari tingkat dukungan dan resistensi di pasar di mana perubahan sering terjadi
  2. Hal ini mengidentifikasi baik titik tinggi dan rendah penting untuk perdagangan dua sisi
  3. Titik pivot adalah titik ekstremum yang luar biasa dan menerobos mereka memberikan sinyal yang kuat
  4. Menggunakan titik pivot pivot membuat sinyal bahkan lebih dapat diandalkan

Risiko dan Solusi

Ada juga beberapa risiko dengan strategi ini:

  1. Salah menilai titik pivot mengarah pada sinyal yang salah. Solusinya adalah untuk menyesuaikan parameter kisaran kiri / kanan untuk mengidentifikasi titik pivot lebih tepat.
  2. Solusinya adalah menyaring sinyal yang menggabungkan faktor lain seperti volume, momentum dll.

Bidang Peningkatan

Strategi ini dapat ditingkatkan di bidang berikut:

  1. Tambahkan mekanisme stop loss untuk membuat strategi lebih stabil
  2. Masukkan lebih banyak indikator teknis untuk penyaringan sinyal
  3. Mengembangkan model pembalikan PRED menggunakan pembelajaran mesin untuk lebih meningkatkan prediksi titik pivot
  4. Membangun dalam parameter adaptif

Kesimpulan

Secara keseluruhan strategi ini berjalan dengan baik. Ide utamanya adalah untuk mendeteksi titik pivot yang penting dan memperdagangkan pemecahan mereka. Peningkatan lebih lanjut dapat menghasilkan sinyal yang lebih solid dan dapat diandalkan untuk keuntungan yang lebih tinggi dan lebih konsisten.


/*backtest
start: 2023-02-13 00:00:00
end: 2024-02-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Pivot of Pivot Reversal Strategy [QuantNomad]", shorttitle = "PoP Reversal Strategy [QN]", overlay=true)

// Inputs 
leftBars   = input(4,   title = 'PP Left Bars')
rightBars  = input(2,   title = 'PP Right Bars')
atr_length = input(14,  title = 'ATR Length')
atr_mult   = input(0.1, title = 'ATR Mult')

// Pivot High Significant Function
pivotHighSig(left, right) =>
    pp_ok = true
    atr   = atr(atr_length)
    
    for i = 1 to left
        if (high[right] < high[right+i] + atr * atr_mult)
            pp_ok := false
    for i = 0 to right-1
        if (high[right] < high[i] + atr * atr_mult)
            pp_ok := false
    
    pp_ok ? high[right] : na

// Pivot Low Significant Function
pivotLowSig(left, right) =>
    pp_ok = true
    atr   = atr(atr_length)
    
    for i = 1 to left
        if (low[right] > low[right+i] - atr * atr_mult)
            pp_ok := false
    for i = 0 to right-1
        if (low[right] > low[i] - atr * atr_mult)
            pp_ok := false
    
    pp_ok ? low[right] : na


swh = pivotHighSig(leftBars, rightBars)
swl = pivotLowSig (leftBars, rightBars)

swh_cond = not na(swh)

hprice = 0.0
hprice := swh_cond ? swh : hprice[1]

le = false
le := swh_cond ? true : (le[1] and high > hprice ? false : le[1])

swl_cond = not na(swl)

lprice = 0.0
lprice := swl_cond ? swl : lprice[1]

se = false
se := swl_cond ? true : (se[1] and low < lprice ? false : se[1])

// Pivots of pivots
ph1 = 0.0
ph2 = 0.0
ph3 = 0.0

pl1 = 0.0
pl2 = 0.0
pl3 = 0.0

pphprice = 0.0
pplprice = 0.0

ph3 := swh_cond ? nz(ph2[1]) : nz(ph3[1])
ph2 := swh_cond ? nz(ph1[1]) : nz(ph2[1])
ph1 := swh_cond ? hprice     : nz(ph1[1])

pl3 := swl_cond ? nz(pl2[1]) : nz(pl3[1])
pl2 := swl_cond ? nz(pl1[1]) : nz(pl2[1])
pl1 := swl_cond ? lprice     : nz(pl1[1])

pphprice := swh_cond and ph2 > ph1 and ph2 > ph3 ? ph2 : nz(pphprice[1])
pplprice := swl_cond and pl2 < pl1 and pl2 < pl3 ? pl2 : nz(pplprice[1])


if (le)
    strategy.entry("PP_RevLE", strategy.long, comment="PP_RevLE", stop=pphprice + syminfo.mintick)

if (se)
    strategy.entry("PP_RevSE", strategy.short, comment="PP_RevSE", stop=pplprice - syminfo.mintick)
    
// Plotting 
plot(lprice, color = color.red,   transp = 55)
plot(hprice, color = color.green, transp = 55)

plot(pplprice, color = color.red,   transp = 0, linewidth = 2)
plot(pphprice, color = color.green, transp = 0, linewidth = 2)

Lebih banyak