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 inti adalah untuk mengidentifikasi titik pivot puncak dan terendah yang signifikan. Langkah-langkah kunci untuk menghitung pivot puncak signifikan adalah:
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.
Keuntungan utama dari strategi ini adalah:
Risiko utama adalah:
Untuk mengendalikan risiko di atas, optimalkan dari aspek berikut:
Arah optimasi lebih lanjut termasuk:
Menggabungkan dengan indikator lain untuk menentukan rezim pasar, menghindari pembalikan perdagangan di pasar tren.
Menambahkan algoritma pembelajaran mesin untuk mengoptimalkan parameter secara otomatis. Metode seperti algoritma genetik, hutan acak dapat digunakan untuk menemukan set parameter yang optimal.
Model pelatihan menggunakan data kuantitatif untuk menemukan rentang ATR optimal.
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.
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)