Bollinger Breakout Strategi

Penulis:ChaoZhang, Tarikh: 2023-11-13 10:19:43
Tag:

img

Ringkasan

Ini adalah strategi breakout berdasarkan penunjuk Bollinger Bands. Ia menggunakan band atas dan bawah Bollinger Bands untuk menjana isyarat breakout untuk kemasukan dan keluar. Strategi ini juga menggabungkan stop loss dan mekanisme piramid untuk mencapai pulangan yang lebih tinggi dalam pasaran trend.

Logika Strategi

Strategi ini mula-mula mengira band tengah, band atas dan band bawah Bollinger Bands. Band tengah adalah purata bergerak harga, sementara band atas dan bawah adalah band tengah +/- satu penyimpangan piawai.

Apabila harga pecah di atas band bawah, isyarat panjang dihasilkan. Apabila harga pecah di bawah band atas, isyarat pendek dihasilkan. Ini menunjukkan harga sedang keluar dari julat Bollinger Bands dan mungkin memasuki pergerakan trend.

Di samping itu, strategi ini memeriksa penembusan badan. Jika penutupan lebih tinggi daripada terbuka dan badan menembusi jalur tengah dengan peratusan tertentu, ia akan meratakan kedudukan. Jika dekat lebih rendah daripada terbuka dan badan menembusi jalur tengah dengan peratusan tertentu, ia juga akan meratakan kedudukan. Ini mengelakkan kerugian dari penembusan palsu.

Selepas memasuki kedudukan, strategi ini boleh mengikuti stop loss dan piramid. Jika harga terus bergerak ke arah yang menguntungkan, saiz kedudukan boleh ditingkatkan untuk meningkatkan potensi keuntungan. Jika harga terbalik, stop loss digunakan untuk mengawal risiko.

Analisis Kelebihan

Kelebihan strategi ini ialah:

  1. Menggunakan Bollinger Bands untuk menentukan arah trend dan menangkap breakout.

  2. Periksa badan dan jalur tengah untuk menentukan kesahihan breakout, mengelakkan kerugian daripada breakout palsu.

  3. Gunakan stop loss untuk mengunci keuntungan dan mengawal risiko.

  4. Gunakan piramid untuk mencapai pulangan yang lebih tinggi dalam pergerakan trend.

  5. Logik yang jelas dan mudah difahami. Parameter mudah menjadikan strategi ini mudah dilaksanakan.

Analisis Risiko

Risiko strategi ini termasuk:

  1. Penembusan Bollinger Bands tidak dapat mengelakkan penembusan palsu sepenuhnya, beberapa kerugian mungkin berlaku.

  2. Penempatan stop loss yang tidak betul boleh menyebabkan stop out awal atau gagal untuk mengehadkan kerugian.

  3. Masa dan saiz piramid yang berlebihan boleh menyebabkan kerugian yang diperkuat.

  4. Kegagalan untuk berhenti tepat pada masanya apabila trend berbalik boleh membawa kepada penarikan besar.

  5. Pengoptimuman parameter yang tidak mencukupi boleh menyebabkan prestasi yang kurang baik.

  6. Risiko overfitting. memerlukan pengesahan di pasaran yang berbeza.

Arahan pengoptimuman

Strategi ini boleh ditingkatkan dari aspek berikut:

  1. Uji dan optimumkan parameter Bollinger Bands untuk mencari kombinasi yang lebih baik.

  2. Uji strategi stop loss yang berbeza dan optimumkan penempatan stop loss.

  3. Uji dan cari masa dan saiz piramida yang optimum.

  4. Tambah penapis trend untuk mengelakkan piramida terhadap trend.

  5. Mengoptimumkan logik pelarian badan untuk mengurangkan pelarian palsu.

  6. Tambah pesanan bersyarat untuk menggunakan set parameter yang berbeza berdasarkan keadaan pasaran.

  7. Melakukan lebih banyak ujian belakang di pelbagai produk dan jangka masa untuk meningkatkan ketahanan.

  8. Menggunakan pembelajaran mesin untuk mengoptimumkan parameter secara automatik.

Kesimpulan

Ringkasnya, strategi ini menggunakan Bollinger Bands untuk menentukan arah trend dan menangkap penembusan, dengan fungsi stop loss tambahan, piramid dan lain-lain untuk mencapai hasil yang baik. Tetapi terdapat risiko, yang memerlukan pengoptimuman parameter, menambah syarat dan lain-lain untuk meningkatkan ketahanan. Ia sesuai dengan pelabur yang biasa dengan analisis teknikal dan boleh menghasilkan pulangan yang baik dalam pasaran trend.


/*backtest
start: 2023-11-05 00:00:00
end: 2023-11-12 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy("Noro's Bollinger Strategy v1.1", shorttitle = "Bollinger str 1.1", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 5)

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

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

showbands = input(true, defval = true, title = "Show Bollinger Bands")
fromyear = input(2018, defval = 2018, 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")

//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
body = abs(close - open)
abody = ema(body, 30)

//Signals
up = close <= lower
dn = close >= upper
exit = (strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open) and body > abody / 2

//Trading
if up
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))

if dn
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))
    
if time > timestamp(toyear, tomonth, today, 00, 00) or exit
    strategy.close_all()

Lebih lanjut