Strategi Perdagangan Bollinger Band Berbilang Penapis

Penulis:ChaoZhang, Tarikh: 2024-01-17 15:12:57
Tag:

img

Ringkasan

Strategi Perdagangan Bollinger Band Multi-Filter adalah strategi perdagangan kuantitatif yang menggabungkan penunjuk Bollinger Band, penunjuk purata bergerak, penunjuk RSI dan ciri grafik K-line untuk penyaringan pelbagai syarat untuk menjana isyarat perdagangan apabila syarat dipenuhi.

Prinsip Strategi

Pengiraan Penunjuk

Strategi ini terutamanya menggunakan tiga penunjuk: Bollinger Band, purata bergerak dan RSI. Di antara mereka, rel tengah Bollinger Band adalah purata bergerak mudah harga n hari, dan rel atas dan bawah adalah rel tengah +2 penyimpangan standard dan rel tengah -2 penyimpangan standard masing-masing.

Isyarat Perdagangan

Strategi menghasilkan isyarat perdagangan melalui tiga syarat utama berikut:

(1) Penembusan Bollinger band bawah & kontradiksi badan K-line. Apabila harga penutupan memecahkan band bawah ke atas dan warna badan K-line bertentangan dengan arah trend semasa, pergi panjang.

(2) Penembusan Bollinger band atas & kontradiksi badan K-line. Apabila harga penutupan menembusi band atas ke bawah dan warna badan K-line bertentangan dengan arah trend semasa, pergi pendek.

(3) Kembalikan badan K-garis. Jika arah kedudukan adalah konsisten dengan pembalikan warna badan K-garis, tutup kedudukan.

Di samping itu, strategi ini juga menetapkan penapis purata bergerak, penapis badan K-garis, penapis RSI dan keadaan tambahan lain untuk mengawal kemasukan dengan ketat.

Analisis Kelebihan

  • Pengendalian pelbagai keadaan yang ketat dapat mengurangkan risiko pecah palsu
  • Kaedah pengesanan trend mengurangkan kekerapan dagangan
  • Indikator RSI membantu mengelakkan perangkap pembalikan

Analisis Risiko

  • Tetapan parameter Bollinger yang tidak betul boleh menyebabkan sedikit isyarat
  • Kegagalan melarikan diri boleh menyebabkan kerugian yang lebih besar
  • Frekuensi perdagangan yang lebih rendah mungkin kehilangan beberapa peluang perdagangan

Risiko boleh dikurangkan dengan menyesuaikan parameter Bollinger dan mengawal berhenti dengan ketat.

Arahan pengoptimuman

  • Uji prestasi strategi di bawah parameter yang berbeza untuk mencari parameter optimum
  • Tambah algoritma pembelajaran mesin untuk mengoptimumkan parameter secara automatik
  • Tambah lebih banyak faktor dan penapis untuk meningkatkan kestabilan strategi

Ringkasan

Secara keseluruhan, strategi ini adalah strategi trend berikut jangka menengah hingga panjang yang biasa. Dengan menyaring pelbagai syarat dan mengawal tepat masa masuk dan keluar dengan pendekatan perdagangan trend, ia dapat mengurangkan perdagangan yang tidak perlu dan menangkap trend pasaran jangka menengah hingga panjang. Masih ada ruang yang besar untuk mengoptimumkan strategi ini dengan menyesuaikan parameter, menambah lebih banyak alat tambahan dan sebagainya, untuk meningkatkan lagi kestabilan dan keuntungan strategi.


/*backtest
start: 2023-12-17 00:00:00
end: 2024-01-16 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy("Noro's Bollinger Strategy v1.4", shorttitle = "Bollinger str 1.4", overlay = true )

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(false, defval = false, title = "Short")

length = input(20, defval = 20, minval = 1, maxval = 1000, title = "Bollinger Length")
mult = input(1, defval = 1, minval = 0.001, maxval = 50, title = "Bollinger Mult")
source = input(ohlc4, defval = ohlc4, title = "Bollinger Source")

usebf = input(true, defval = true, title = "Use body-filter")
usecf = input(true, defval = true, title = "Use color-filter")
userf = input(true, defval = true, title = "Use RSI-filter")

fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
showbands = input(true, defval = true, title = "Show Bollinger Bands")

//Bollinger Bands
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev

//Lines
col = showbands ? black : na 
plot(upper, linewidth = 1, color = col)
plot(basis, linewidth = 1, color = col)
plot(lower, linewidth = 1, color = col)

//Body filter
nbody = abs(close - open)
abody = sma(nbody, 10)
body = nbody > abody / 2 or usebf == false

//Color filter
bar = close > open ? 1 : close < open ? -1 : 0 
gb = bar == 1 or usecf == false
rb = bar == -1 or usecf == false

//RSI Filter
fastup = rma(max(change(close), 0), 7)
fastdown = rma(-min(change(close), 0), 7)
rsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))
ursi = rsi > 70 or userf == false
drsi = rsi < 30 or userf == false

//Signals
up = close <= lower and rb and body and drsi and (close < strategy.position_avg_price or strategy.position_size == 0)
dn = close >= upper and gb and body and ursi and (close > strategy.position_avg_price or strategy.position_size == 0)
exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body

//Trading
if up
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

if dn
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
    
if  exit
    strategy.close_all()

Lebih lanjut