Sumber dimuat naik... memuat...

Strategi Penembusan Trend Berdasarkan Bollinger Bands

Penulis:ChaoZhang, Tarikh: 2023-11-16 16:24:12
Tag:

img

Ringkasan

Ini adalah strategi trend berikut berdasarkan Bollinger Bands. Ia menggunakan Bollinger Bands untuk mengira saluran harga dan menggabungkan corak lilin untuk menentukan arah trend. Posisi panjang / pendek akan dibuka apabila harga keluar dari Bollinger Bands. Strategi ini berfungsi dengan baik untuk saham dengan trend yang jelas dan bertujuan untuk menangkap keuntungan trend jangka menengah.

Logika Strategi

Strategi ini menggunakan band atas, band tengah dan band bawah Bollinger Bands untuk menentukan julat harga. Band atas dan bawah meliputi pergerakan harga manakala band tengah adalah purata bergerak. Lebar band berubah berdasarkan turun naik harga. Apabila harga pecah di atas band atas, ia menandakan pecah ke atas dan kemasukan panjang. Apabila harga pecah di bawah band bawah, ia menandakan pecah ke bawah dan kemasukan pendek.

Setelah menentukan arah trend dengan penembusan Bollinger Bands, strategi ini juga mengesahkannya dengan corak lilin. Jika badan lilin sejajar dengan trend, seperti lilin bullish dalam trend menaik, kedudukan akan dibuka. Jika badan lilin menunjukkan corak terbalik, seperti lilin bearish dalam trend menaik, isyarat akan diabaikan. Reka bentuk ini bertujuan untuk mengelakkan risiko penembusan palsu.

Peraturan isyarat perdagangan terperinci adalah:

  1. Mengira band atas, pertengahan dan bawah Bollinger Bands untuk menentukan julat harga

  2. Apabila harga pecah di atas barisan atas, ia menandakan trend menaik / panjang

  3. Jika candlestick adalah bullish, mengesahkan trend dan pergi lama

  4. Apabila harga pecah di bawah jalur bawah, ia menandakan trend menurun / pendek

  5. Jika candlestick adalah bearish, mengesahkan trend dan pergi pendek

  6. Tetapkan stop loss dan ambil keuntungan berdasarkan peratusan

Dengan masuk ke breakout Bollinger Bands dan mengesahkan dengan lilin, strategi ini dapat mengenal pasti arah trend dengan berkesan dan mendapatkan entri yang baik semasa peringkat awal trend.

Analisis Kelebihan

Ini adalah trend tipikal mengikut strategi dengan kekuatan berikut:

  1. Bollinger Bands adalah adaptif dan boleh menyesuaikan julat untuk stok dengan turun naik yang berbeza

  2. Pengesahan candlestick menapis keluar breakout palsu

  3. Penyelenggaraan jangka pertengahan mengurangkan kekerapan dagangan dan mengurangkan kos/gelinciran

  4. Mengesan trend jangka menengah mengelakkan bunyi jangka pendek dan memberikan risiko-balasan yang baik

  5. Hasil backtest kuat dan perdagangan sebenar stabil kerana sistemisasi

  6. Logik strategi jelas dan mudah difahami, dengan ruang untuk penambahbaikan

Dengan menentukan trend dengan Bollinger Bands dan memasuki pengesahan lilin, strategi ini berkesan menangkap momentum jangka menengah yang didorong oleh jumlah.

Analisis Risiko

Terdapat juga beberapa risiko yang perlu diperhatikan untuk strategi ini:

  1. Risiko kegagalan. Penembusan Bollinger Bands mempunyai sifat probabilistik dan pecah palsu berlaku

  2. Risiko pembalikan. Trend jangka menengah juga boleh berbalik, hentian yang munasabah harus ditetapkan

  3. Risiko pengoptimuman parameter. Parameter dan hentian Bollinger Bands perlu disesuaikan untuk saham yang berbeza

  4. Risiko overfitting. pengoptimuman parameter yang berlebihan menyebabkan pemasangan lengkung

  5. Risiko pelaksanaan: Perbezaan wujud antara backtest dan perdagangan sebenar

Untuk menangani risiko ini, penambahbaikan berikut boleh dibuat:

  1. Mengoptimumkan Bollinger Bands parameter dan lebar untuk lebih sesuai

  2. Tambah lebih banyak faktor seperti jumlah untuk mengesahkan trend

  3. Gunakan hentian dinamik untuk mengelakkan kerugian besar pada pembalikan

  4. Mempakai analisis berjalan ke hadapan untuk mengelakkan overfitting

  5. Meningkatkan pelaksanaan pesanan untuk meningkatkan kecekapan dagangan sebenar

Arahan pengoptimuman

Strategi ini boleh ditingkatkan lagi dalam aspek berikut:

  1. Tambah lebih banyak penunjuk seperti KDJ, MACD untuk mengesahkan isyarat dan meningkatkan ketepatan

  2. Gunakan pembelajaran mesin untuk mengoptimumkan parameter secara dinamik dan bukannya nilai tetap

  3. Tetapkan zon harga di sekitar titik pecah untuk menjana isyarat yang lebih tepat

  4. Mengoptimumkan keluar dengan berhenti belakang atau mengambil keuntungan separa

  5. Memperkenalkan saiz kedudukan untuk pengurusan risiko yang lebih baik

  6. Menggunakan jenis perintah lanjutan untuk meningkatkan hasil pelaksanaan

  7. Tambah penapis rejim pasaran untuk mematikan strategi dalam persekitaran tertentu

Dengan memperkenalkan lebih banyak teknik dan pengoptimuman, kestabilan dan keuntungan strategi ini dapat ditingkatkan lagi untuk hasil backtest dan perdagangan sebenar yang lebih baik.

Kesimpulan

Ini adalah strategi trend berikut yang biasa yang menggunakan Bollinger Bands sebagai julat dinamik untuk menentukan arah trend. Pengesahan candlestick memberikan isyarat kemasukan yang tepat. Masukan dibuat pada peringkat awal trend dengan matlamat menunggang momentum jangka menengah.

Kelebihan strategi ini termasuk menggunakan Bollinger Bands untuk trend, lilin untuk pengesahan kemasukan, kekerapan perdagangan yang rendah, dan sistemisasi yang mudah. Ia juga mempunyai risiko seperti pecah palsu, kesukaran pengoptimuman stop loss, dan perbezaan pelaksanaan. Lebih banyak penunjuk, parameter dinamik, dan pelaksanaan lanjutan dapat meningkatkan kestabilan dan prestasi perdagangan sebenar.

Secara keseluruhannya, sebagai strategi trend berikut, ia mempunyai logika yang jelas dan mudah dilaksanakan dengan daya maju yang kuat. Dengan pengoptimuman berterusan dan kawalan risiko yang ketat, ia boleh menjadi modul yang berkesan dalam sistem perdagangan kuantitatif.


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


//@version=2
strategy("Noro's Bands Scalper Strategy v1.2", shorttitle = "Scalper str 1.2", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
takepercent = input(0, defval = 0, minval = 0, maxval = 1000, title = "take, %")
needct = input(false, defval = false, title = "Counter-trend entry")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period")
needbb = input(true, defval = true, title = "Show Bands")
needbg = input(true, defval = true, title = "Show Background")
src = close

//PriceChannel 1
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

//Distance
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma
hd1 = center + distsma / 2
ld1 = center - distsma / 2

//Trend
trend = close < ld and high < center ? -1 : close > hd and low > center ? 1 : trend[1]

//Lines
colo = needbb == false ? na : black
plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band")
plot(center, color = colo, linewidth = 1, transp = 0, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band")

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)

//Body
body = abs(close - open)
smabody = sma(body, 100)

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up7 = trend == 1 and ((bar == -1 and bar[1] == -1) or (body > smabody and close < open)) ? 1 : 0
dn7 = trend == 1 and bar == 1 and bar[1] == 1 and close > strategy.position_avg_price * (100 + takepercent) / 100 ? 1 : 0
up8 = trend == -1 and bar == -1 and bar[1] == -1 and close < strategy.position_avg_price * (100 - takepercent) / 100 ? 1 : 0
dn8 = trend == -1 and ((bar == 1 and bar[1] == 1) or (body > smabody and close > open)) ? 1 : 0

if up7 == 1 or up8 == 1 
    strategy.entry("Long", strategy.long, needlong == false ? 0 : trend == -1 and needct == false ? 0 : na)

if dn7 == 1 or dn8 == 1
    strategy.entry("Short", strategy.short, needshort == false ? 0 : trend == 1 and needct == false ? 0 : na)

Lebih lanjut