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.
Logik teras adalah untuk mengenal pasti titik pivot puncak dan terendah yang 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.
Kelebihan utama strategi ini ialah:
Risiko utama ialah:
Untuk mengawal risiko di atas, optimumkan dari aspek berikut:
Arah pengoptimuman lanjut termasuk:
Menggabungkan dengan penunjuk lain untuk menentukan rejim pasaran, mengelakkan pembalikan perdagangan di pasaran trend.
Menambah algoritma pembelajaran mesin untuk mengoptimumkan parameter secara automatik. kaedah seperti algoritma genetik, hutan rawak boleh digunakan untuk mencari set parameter yang optimum.
Model latihan menggunakan data kuantitatif untuk mencari julat ATR optimum.
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.
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)