Strategi pembalikan titik penting

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

img

Gambaran umum

Strategi ini mengoptimalkan strategi pembalikan titik pivot tradisional dengan menghitung ATR dan mengatur filter ATR untuk menghilangkan titik pivot yang tidak signifikan, hanya berdagang pada yang benar-benar signifikan.

Logika Strategi

Logika inti adalah untuk mengidentifikasi titik pivot puncak dan terendah yang signifikan. Langkah-langkah kunci untuk menghitung pivot puncak signifikan adalah:

  1. Menghitung ATR dan mengatur faktor filter ATR atr_mult.
  2. Melalui sejumlah batang di sebelah kiri (ditempatkan oleh leftBars), jika pivot puncak lebih tinggi dari setiap tinggi + ATR*atr_mult di sebelah kiri, pivot tidak sah.
  3. Melalui sejumlah batang di sebelah kanan (ditempatkan oleh rightBars), jika pivot puncak lebih tinggi dari setiap tinggi + ATR*atr_mult di sebelah kanan, pivot tidak valid.
  4. Jika pivot puncak tetap valid setelah tes di atas, kembalikan sebagai pivot puncak penting.

Logika untuk menghitung pivot trough yang signifikan adalah sama.

Setelah mendapatkan pivot yang signifikan, pergi pendek ketika harga melanggar pivot puncak yang penting, dan pergi panjang ketika ia melanggar pivot terendah yang penting.

Analisis Keuntungan

Keuntungan utama dari strategi ini adalah:

  1. Filter ATR dan atr_mult dapat menghilangkan fluktuasi yang tidak signifikan dan hanya memperdagangkan pivot yang benar-benar signifikan, menghindari perdagangan yang tidak perlu.
  2. Parameter ATR dinamis dapat menyesuaikan rentang perdagangan secara otomatis di pasar yang tidak stabil, mencegah perdagangan berlebihan.
  3. Pivot point reversal sendiri memiliki tingkat kemenangan dan profitabilitas yang relatif tinggi.

Analisis Risiko

Risiko utama adalah:

  1. Parameter ATR yang tidak benar dapat menyaring terlalu banyak perdagangan yang valid.
  2. Risiko terjebak masih ada, perlu mengatur stop loss untuk mengendalikan risiko.
  3. Strategi pembalikan sensitif terhadap biaya transaksi, stop loss dan take profit yang wajar harus ditetapkan.

Untuk mengendalikan risiko di atas, optimalkan dari aspek berikut:

  1. Mengoptimalkan parameter ATR untuk memastikan peluang perdagangan yang cukup.
  2. Tetapkan stop loss yang masuk akal dan mengambil rasio keuntungan.
  3. Sesuaikan ukuran posisi untuk mengurangi dampak biaya transaksi.

Arahan Optimasi

Arah optimasi lebih lanjut termasuk:

  1. Menggabungkan dengan indikator lain untuk menentukan rezim pasar, menghindari pembalikan perdagangan di pasar tren.

  2. Menambahkan algoritma pembelajaran mesin untuk mengoptimalkan parameter secara otomatis. Metode seperti algoritma genetik, hutan acak dapat digunakan untuk menemukan set parameter yang optimal.

  3. Model pelatihan menggunakan data kuantitatif untuk menemukan rentang ATR optimal.

  4. Pertimbangkan untuk menggabungkannya dengan strategi lain, memanfaatkan kekuatan dari berbagai jenis strategi. misalnya, menggabungkan dengan strategi trend following, reverse selama range, trend-follow selama tren berkelanjutan.

Kesimpulan

Strategi pembalikan pivot yang signifikan ini menyaring fluktuasi kecil yang tidak berarti dengan menghitung ATR dan mengatur filter. Hanya pembalikan perdagangan pada pivot yang signifikan yang dapat secara efektif meningkatkan profitabilitas strategi. Sementara itu, itu juga meningkatkan kesulitan pengoptimalan parameter. Parameter optimal perlu ditemukan dengan pertimbangan komprehensif dari kisaran ATR, rasio stop loss / take profit dll. Jika dioptimalkan secara menyeluruh, itu bisa menjadi strategi perdagangan jangka pendek yang sangat efisien 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 banyak