Strategi Kuantitatif Berdasarkan Pembalikan Bollinger Band

Penulis:ChaoZhang, Tarikh: 2023-11-22 17:44:40
Tag:

img

Ringkasan

Strategi ini dinamakan Bollinger Band Reversal Based Quantitative Strategy. Ia menggunakan rel atas dan bawah Bollinger Bands untuk menentukan entri dan keluar. Apabila harga berhampiran rel bawah band dan menunjukkan tanda-tanda terobosan ke bawah, ia menunjukkan harga mungkin terbalik, jadi pergi panjang. Apabila harga naik ke rel atas, ia menunjukkan harga mungkin berbalik ke bawah, jadi pergi pendek.

Logika Strategi

Strategi ini menggunakan penunjuk RSI untuk menentukan entri panjang. Khususnya, ia memeriksa sama ada harga penutupan bar terbaru lebih rendah daripada harga terendah dari 6 bar sebelumnya, sementara itu Lebar Bollinger Band (BBW) lebih besar daripada ambang, dan Nisbah Bollinger Band (BBR) berada dalam julat. Jika kriteria ini dipenuhi, ia menunjukkan harga mungkin berbalik, jadi pergi panjang.

Apabila RSI melebihi 70, menunjukkan harga terlalu panas, tutup kedudukan panjang.

Analisis Kelebihan

Kelebihan terbesar strategi ini adalah menggunakan rel atas dan bawah Bollinger Bands untuk menentukan kemasukan. Apabila BB membalikkan arah, pergi panjang atau pendek untuk menangkap peluang pembalikan jangka pendek. Berbanding dengan strategi RSI yang mudah, strategi ini mempunyai kriteria yang lebih berhati-hati untuk kemasukan, sehingga mengelakkan perdagangan yang salah.

Juga, strategi ini sensitif terhadap parameter. Dengan menyesuaikan BBW dan BBR, ia boleh dioptimumkan untuk produk yang berbeza dan mencapai hasil yang lebih baik.

Analisis Risiko

Risiko utama adalah bahawa BB tidak dapat meramalkan pembalikan harga dengan sempurna.

Juga, turun naik jangka pendek boleh mencetuskan kemasukan dan keluar yang kerap, meningkatkan kos daripada komisen dan slippages.

Arahan pengoptimuman

Strategi ini boleh ditingkatkan dalam aspek berikut:

  1. Mengoptimumkan parameter. Uji dan menyesuaikan BBW, BBR dan parameter lain dengan lebih halus untuk produk yang berbeza.

  2. Tambah mekanisme stop loss, seperti trailing stop loss dan time stop loss, untuk mengehadkan kerugian maksimum.

  3. Menggabungkan penunjuk lain, seperti KDJ dan MACD, untuk membuat entri lebih boleh dipercayai.

  4. Memperbaiki logik keluar. Keluar semasa adalah mudah. Boleh mengoptimumkan dengan mengambil keuntungan atau keluar berdasarkan turun naik.

Kesimpulan

Strategi ini menggunakan ciri-ciri Bollinger Bands untuk menentukan titik pembalikan yang berpotensi untuk kemasukan dan keluar. Berbanding dengan penunjuk tunggal seperti RSI, ia mempunyai waktu yang lebih tepat. Dengan penyesuaian parameter, hentikan kerugian dan ambil keuntungan, ia boleh lebih dipercayai. Tetapi ramalan BB tidak sempurna, jadi masih ada beberapa keacakan dalam prestasi.


/*backtest
start: 2022-11-15 00:00:00
end: 2023-11-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

//study(title = "Bolinger strategy", overlay=true)
strategy("Bolinger strategy",currency="SEK",default_qty_value=10000,default_qty_type=strategy.cash,max_bars_back=50)
len = 5
src = close
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))


bbw3level = input(15, title="bbw3")
bbr3level = input(0.45, title="bbr3level")
bbrlower = input(0.4480, title="bbrlower")
bbrhigher = input(0.4560, title="bbrhigher")
sincelowestmin = input(7, title="sincelowestmin")
sincelowestmax = input(57, title="sincelowestmax")


length = input(20, minval=1)
mult = 20
src3 = close[3]
basis3 = sma(src3, length)
dev3 = mult * stdev(src3, length)
upper3 = basis3 + dev3
lower3 = basis3 - dev3
bbr3 = (src3 - lower3)/(upper3 - lower3)
bbw3 = (upper3-lower3)/basis3*100


basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
bbr = (src - lower)/(upper - lower)
bbw = (upper-lower)/basis*100

criteriamet = 0
crossUnderB0 = crossunder(bbr,0)

since_x_under = barssince(crossUnderB0)


sincelowest = barssince(close[6] > close[3] and close[5] > close[3] and close[4] > close[3] and close[2] > close[3] and close[1] > close[3] and close > close[3] and bbw3 > bbw3level and bbr3 < bbr3level) //  and bbr3 < 0 

if sincelowest > sincelowestmin and sincelowest < sincelowestmax and bbr > bbrlower and bbr < bbrhigher
	criteriamet := 1
else
	criteriamet := 0	
//plot (criteriamet)

//exit 
exitmet = 0
if rsi > 70
	exitmet := 1
else
	exitmet := 0

if criteriamet == 1
	strategy.entry("long", strategy.long)
if exitmet == 1
	strategy.close("long")



Lebih lanjut