
Strategi ini dioptimumkan berdasarkan strategi pembalikan matawang tradisional, terutamanya dengan mengira ATR dan menetapkan faktor penapisan ATR untuk menapis matawang yang tidak bermakna dan hanya berdagang matawang yang benar-benar penting.
Logik teras strategi ini adalah untuk mengira sokongan titik tinggi dan sokongan titik rendah yang penting. Langkah utama untuk mengira sokongan titik tinggi adalah:
Logik untuk mengira titik rendah adalah sama.
Selepas mendapat titik sokongan penting, apabila harga menembusi titik sokongan tinggi penting, buat shorting; apabila harga menembusi titik sokongan rendah penting, buat lebih banyak.
Kelebihan utama strategi ini ialah:
Risiko utama strategi ini ialah:
Untuk mengawal risiko di atas, anda boleh mengoptimumkan dari beberapa aspek berikut:
Strategi ini juga boleh dioptimumkan dengan cara berikut:
Gabungan dengan penunjuk lain untuk menilai keadaan trend pasaran, mengelakkan perdagangan berbalik muncul dalam keadaan trend. Anda boleh mempertimbangkan untuk memasukkan penunjuk seperti MACD, KDJ.
Menambah algoritma pembelajaran mesin, parameter pengoptimuman automatik. Anda boleh menggunakan algoritma genetik, hutan rawak dan lain-lain untuk mencari kombinasi parameter yang optimum.
Menambah data kuantitatif untuk latihan dan mencari julat ATR terbaik. Menambah data sejarah dapat meningkatkan ketepatan pilihan parameter.
Ia boleh dipertimbangkan untuk digunakan dengan gabungan strategi lain, menggabungkan kelebihan pelbagai jenis strategi. Sebagai contoh, gabungan strategi dengan trend track, reverse in consolidation, and trend in trend.
Strategi pembalikan titik penting ini menapis turun naik kecil yang tidak masuk akal dengan cara mengira ATR dan menetapkan faktor penapisan, dan hanya berdagang di titik penting. Ini dapat meningkatkan tahap keuntungan strategi dengan berkesan.
/*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)