Strategi Pembalikan Titik Pivot Penting

Penulis:ChaoZhang, Tarikh: 2024-01-29 14:58:15
Tag:

img

Ringkasan

Strategi ini mengoptimumkan strategi pembalikan titik pivot tradisional dengan mengira ATR dan menetapkan penapis ATR untuk menghapuskan titik pivot yang tidak penting, hanya berdagang pada yang benar-benar penting.

Logika Strategi

Logik teras adalah untuk mengenal pasti titik pivot puncak dan terendah yang penting.

  1. Mengira ATR dan menetapkan faktor penapis ATR atr_mult.
  2. Melalui beberapa bar di sebelah kiri (ditentukan oleh leftBars), jika pivot puncak lebih tinggi daripada mana-mana tinggi + ATR*atr_mult di sebelah kiri, pivot tidak sah.
  3. Melalui beberapa bar di sebelah kanan (ditentukan oleh rightBars), jika pivot puncak lebih tinggi daripada mana-mana tinggi + ATR*atr_mult di sebelah kanan, pivot tidak sah.
  4. Jika pivot puncak tetap sah selepas ujian di atas, kembalikan sebagai pivot puncak penting.

Logik untuk mengira pivot terendah yang signifikan adalah sama.

Selepas mendapatkan pivot yang penting, pergi pendek apabila harga memecahkan pivot puncak penting, dan pergi panjang apabila ia memecahkan pivot terendah penting.

Analisis Kelebihan

Kelebihan utama strategi ini ialah:

  1. Penapis ATR dan atr_mult boleh menghapuskan turun naik yang tidak penting dan hanya berdagang pivot yang benar-benar penting, mengelakkan perdagangan yang tidak perlu.
  2. Parameter ATR dinamik boleh menyesuaikan julat dagangan secara automatik di pasaran yang tidak menentu, mengelakkan perdagangan berlebihan.
  3. Pembalikan titik pusingan itu sendiri mempunyai kadar kemenangan dan keuntungan yang agak tinggi.

Analisis Risiko

Risiko utama ialah:

  1. Parameter ATR yang tidak betul boleh menapis terlalu banyak perdagangan yang sah.
  2. Risiko terperangkap masih wujud, perlu menetapkan stop loss untuk mengawal risiko.
  3. Strategi pembalikan adalah sensitif terhadap kos transaksi, stop loss dan mengambil keuntungan yang munasabah harus ditetapkan.

Untuk mengawal risiko di atas, optimumkan dari aspek berikut:

  1. Mengoptimumkan parameter ATR untuk memastikan peluang perdagangan yang mencukupi.
  2. Tetapkan stop loss yang munasabah dan mengambil nisbah keuntungan.
  3. Sesuaikan saiz kedudukan untuk mengurangkan kesan kos transaksi.

Arahan pengoptimuman

Arah pengoptimuman lanjut termasuk:

  1. Menggabungkan dengan penunjuk lain untuk menentukan rejim pasaran, mengelakkan pembalikan perdagangan di pasaran trend.

  2. Menambah algoritma pembelajaran mesin untuk mengoptimumkan parameter secara automatik. kaedah seperti algoritma genetik, hutan rawak boleh digunakan untuk mencari set parameter yang optimum.

  3. Model latihan menggunakan data kuantitatif untuk mencari julat ATR optimum.

  4. Pertimbangkan untuk menggabungkan dengan strategi lain, menggunakan kekuatan jenis strategi yang berbeza. Sebagai contoh, menggabungkan dengan strategi trend berikut, membalikkan semasa julat, trend-ikut semasa trend yang berterusan.

Kesimpulan

Strategi pembalikan pivot penting ini menapis turun naik kecil yang tidak bermakna dengan mengira ATR dan menetapkan penapis. Hanya pembalikan perdagangan pada pivot penting yang dapat meningkatkan keuntungan strategi dengan berkesan. Sementara itu, ia juga meningkatkan kesukaran pengoptimuman parameter. Parameter optimum perlu dijumpai dengan pertimbangan komprehensif julat ATR, nisbah stop loss / take profit dll. Jika dioptimumkan dengan teliti, ia boleh menjadi strategi perdagangan jangka pendek yang sangat cekap dan stabil.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("QuantNomad - Significant Pivot Reversal Strategy", shorttitle = "SPPS", 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])

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

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])

if (se)
    strategy.entry("PivRevSE", strategy.short, comment="PivRevSE", stop=lprice - syminfo.mintick)

Lebih lanjut