Ini adalah strategi penjejakan momentum berdasarkan Bollinger Bands. Ia menggabungkan Bollinger Bands untuk menilai trend pasaran dan titik pembalikan, dan menetapkan kedudukan panjang dan pendek untuk mengesan turun naik pasaran.
Indikator utama strategi ini adalah Bollinger Bands, yang terdiri daripada band tengah, band atas dan band bawah. Band tengah adalah purata bergerak selama n hari, dan band atas dan bawah adalah offset dari band tengah ditambah / tolak penyimpangan standard. Apabila harga mendekati band atas / bawah, ia dianggap isyarat overbought / oversold. Strategi ini menggabungkan penyimpangan trend sebagai asas untuk membuka kedudukan, iaitu membuka kedudukan apabila harga menembusi band tengah ke arah yang bertentangan. Untuk mengelakkan kerugian yang disebabkan oleh pecah palsu, strategi memerlukan lebar pecah lebih besar daripada purata. Syarat penutupan adalah bahawa harga berbalik selepas menembusi band tengah.
Strategi ini juga merangkumi kedua-dua entri mengikuti trend dan entri pembalikan purata, yang sepadan dengan peluang perdagangan yang berbeza. entri mengikuti trend memerlukan jalur tengah untuk menjadi rujukan sokongan / rintangan dan membentuk penyimpangan penyimpangan. entri pembalikan purata berbalik secara langsung berhampiran jalur Bollinger atas / bawah. strategi ini menggabungkan kedua-dua jenis isyarat ini dan boleh mengambil operasi penjejakan trend dan pembalikan.
Strategi ini menggabungkan ciri-ciri overbought / oversold Bollinger Bands dengan penghakiman titik pembalikan. Ini membolehkan ia digunakan untuk kedua-dua pasaran trend dan julat, menangkap pelbagai jenis peluang perdagangan. Tetapan keluar stop loss menghalang kerugian daripada berkembang. Juga, keupayaan untuk berdagang panjang dan pendek meningkatkan penerapan strategi.
Berbanding dengan strategi Bollinger yang mudah, logik trend tambahan menjadikan entri strategi ini lebih stabil, dan juga menangkap peluang pembalikan. Ini meningkatkan nisbah isyarat ke bunyi.
Strategi ini terutamanya bergantung pada ciri overbought / oversold Bollinger Bands. Oleh itu, apabila terdapat turun naik harga yang melampau, lebar Bollinger Band terus berkembang, yang dengan mudah boleh membawa kepada beberapa perdagangan yang rugi. Ini adalah titik risiko yang berpotensi. Di samping itu, masih ada beberapa ketidakpastian dan kesilapan dalam penghakiman pembalikan, menyebabkan kemasukan dan berhenti yang gagal.
Menentang kegagalan Bollinger Bands, kita boleh memendekkan parameter n untuk menjadikan band lebih sensitif, atau mengurangkan lebar band untuk mengurangkan kemungkinan kerugian.
Arah utama untuk mengoptimumkan strategi ini termasuk:
Strategi ini membuat pengembangan dan pengoptimuman yang berkesan kepada strategi Bollinger standard. Penyimpangan trend yang ditambah meningkatkan kestabilan dan memanfaatkan peluang pembalikan dengan baik. Keupayaan untuk berdagang kedua-dua arah dan menghentikan kerugian juga menjadikan strategi lebih kukuh. Penambahbaikan lanjut dapat dicapai melalui pengoptimuman parameter dan menambah lebih banyak penapis.
/*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()