Ini adalah strategi pelacakan momentum berdasarkan Bollinger Bands. Ini menggabungkan Bollinger Bands untuk menilai tren pasar dan titik pembalikan, dan menetapkan posisi panjang dan pendek untuk melacak fluktuasi pasar.
Indikator inti dari strategi ini adalah Bollinger Bands, yang terdiri dari band tengah, band atas dan band bawah. Band tengah adalah rata-rata bergerak dari n hari, dan band atas dan bawah adalah offset dari band tengah ditambah/dikurangi standar deviasi. Ketika harga mendekati band atas/bawah, itu dianggap sinyal overbought/oversold. Strategi ini menggabungkan deviasi tren sebagai dasar untuk membuka posisi, yaitu membuka posisi ketika harga menerobos band tengah ke arah yang berlawanan. Untuk mencegah kerugian yang disebabkan oleh false breakout, strategi mengharuskan lebar breakout lebih besar dari rata-rata.
Strategi ini juga menggabungkan kedua entri trend-mengikuti dan entri rata-rata-reversi, sesuai dengan peluang perdagangan yang berbeda. entri trend-mengikuti membutuhkan band tengah untuk menjadi referensi dukungan / resistensi dan bentuk penyimpangan. entri rata-rata-reversi langsung berbalik dekat band Bollinger atas / bawah. strategi menggabungkan kedua jenis sinyal ini dan dapat mengambil baik pelacakan tren dan operasi pembalikan.
Strategi ini menggabungkan karakteristik overbought/oversold dari Bollinger Bands dengan reversal point judgment. Hal ini memungkinkan untuk diterapkan pada kedua pasar tren dan range, menangkap berbagai jenis peluang perdagangan. Pengaturan stop loss exit mencegah kerugian berkembang. Juga, kemampuan untuk berdagang baik panjang maupun pendek meningkatkan penerapan strategi.
Dibandingkan dengan strategi Bollinger sederhana, logika tren tambahan membuat entri strategi ini lebih stabil, dan juga menangkap peluang pembalikan. Ini meningkatkan rasio sinyal-ke-noise. Selain itu, perdagangan kedua arah memanfaatkan peluang perdagangan lebih sepenuhnya di berbagai situasi pasar.
Strategi ini terutama bergantung pada karakteristik overbought/oversold dari Bollinger Bands. Jadi ketika ada fluktuasi harga yang ekstrem, lebar Bollinger Bands terus berkembang, yang dapat dengan mudah menyebabkan beberapa perdagangan yang kalah. Ini adalah titik risiko potensial. Selain itu, masih ada beberapa ketidakpastian dan kesalahan dalam penilaian pembalikan, menyebabkan entri dan berhenti yang gagal.
Melawan kegagalan Bollinger Bands, kita dapat memperpendek parameter n untuk membuat band lebih sensitif, atau mengurangi lebar band untuk mengurangi kemungkinan kerugian.
Arah utama untuk mengoptimalkan strategi ini meliputi:
Strategi ini membuat ekspansi dan optimasi yang efektif untuk strategi Bollinger standar. Penyimpangan tren yang ditambahkan meningkatkan stabilitas dan memanfaatkan peluang pembalikan dengan baik. Kemampuan untuk memperdagangkan kedua arah dan menghentikan kerugian juga membuat strategi lebih kuat. Peningkatan lebih lanjut dapat dicapai melalui optimasi parameter dan menambahkan lebih banyak filter.
/*backtest start: 2023-11-20 00:00:00 end: 2023-11-27 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=3 strategy("Noro's Bollinger Strategy v1.3", shorttitle = "Bollinger str 1.3", 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, defval = 2.0, minval = 0.001, maxval = 50, title = "Bollinger Mult") source = input(ohlc4, defval = ohlc4, title = "Bollinger Source") uset = input(true, defval = true, title = "Use trend entry") usect = input(true, defval = true, title = "Use counter-trend entry") 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") 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 body = abs(close - open) abody = ema(body, 30) //Signals bar = close > open ? 1 : close < open ? -1 : 0 up1 = bar == -1 and ohlc4 >= basis and ohlc4 < upper and (close < strategy.position_avg_price or strategy.position_size == 0) and uset dn1 = bar == 1 and ohlc4 <= basis and ohlc4 > lower and (close > strategy.position_avg_price or strategy.position_size == 0) and uset up2 = close <= lower and usect dn2 = close >= upper and usect exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body > abody / 2 //Trading if up1 or up2 strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if dn1 or dn2 strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if time > timestamp(toyear, tomonth, today, 23, 59) or exit strategy.close_all()