Strategi Kuantitatif Berdasarkan Pembalikan Bollinger Band

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

img

Gambaran umum

Strategi ini disebut Bollinger Band Reversal Based Quantitative Strategy. Ini memanfaatkan rel atas dan bawah Bollinger Band untuk menentukan entri dan keluar. Ketika harga berada di dekat rel bawah band dan menunjukkan tanda-tanda terobosan ke bawah, ini menunjukkan harga mungkin terbalik, jadi pergi panjang. Ketika harga naik ke rel atas, ini menunjukkan harga mungkin terbalik ke bawah, jadi pergi pendek.

Logika Strategi

Strategi ini menggunakan indikator RSI untuk menentukan entri panjang. Secara khusus, ini memeriksa apakah harga penutupan bar terbaru lebih rendah dari harga terendah dari 6 bar sebelumnya, sementara itu Lebar Bollinger Band (BBW) lebih besar dari ambang batas, dan Rasio Bollinger Band (BBR) berada dalam kisaran. Jika kriteria ini terpenuhi, ini menunjukkan harga mungkin terbalik, jadi pergi panjang.

Keluarannya sederhana. ketika RSI naik di atas 70, menunjukkan harga terlalu panas, tutup posisi panjang.

Analisis Keuntungan

Keuntungan terbesar dari strategi ini adalah memanfaatkan rel atas dan bawah Bollinger Bands untuk menentukan entri. Ketika BB membalikkan arah, pergi panjang atau pendek untuk menangkap peluang pembalikan jangka pendek. Dibandingkan dengan strategi RSI sederhana, strategi ini memiliki kriteria yang lebih bijaksana untuk entri, sehingga menghindari perdagangan yang salah.

Selain itu, strategi ini sensitif terhadap parameter. Dengan menyesuaikan BBW dan BBR, dapat dioptimalkan untuk produk yang berbeda dan mencapai hasil yang lebih baik.

Analisis Risiko

Risiko utama adalah bahwa BB tidak dapat memprediksi pembalikan harga dengan sempurna. Jika waktu yang tidak tepat, hal itu mudah menyebabkan kehilangan entri terbaik atau kerugian mengambang.

Selain itu, fluktuasi jangka pendek dapat memicu masuk dan keluar yang sering, meningkatkan biaya dari komisi dan slippage.

Arahan Optimasi

Strategi ini dapat ditingkatkan dalam hal berikut:

  1. Uji dan atur BBW, BBR dan parameter lainnya lebih halus untuk produk yang berbeda.

  2. Tambahkan mekanisme stop loss, seperti trailing stop loss dan time stop loss, untuk membatasi kerugian maksimum.

  3. Masukkan indikator lain, seperti KDJ dan MACD, untuk membuat entri lebih dapat diandalkan.

  4. Memperbaiki logika keluar. keluar saat ini sederhana. dapat mengoptimalkan dengan mengambil keuntungan atau keluar berdasarkan volatilitas.

Kesimpulan

Strategi ini memanfaatkan karakteristik Bollinger Bands untuk menentukan titik pembalikan potensial untuk entri dan keluar. Dibandingkan dengan indikator tunggal seperti RSI, strategi ini memiliki waktu yang lebih akurat. Dengan penyesuaian parameter, stop loss dan take profit, strategi ini dapat lebih dapat diandalkan. Namun prediksi BB tidak sempurna, sehingga masih ada beberapa keacakan dalam kinerja.


/*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 banyak