Ini adalah strategi perdagangan yang menggunakan Bollinger Bands. Strategi ini bertujuan untuk mengidentifikasi peluang ketika harga berfluktuasi dengan kekerasan menggunakan Bollinger Bands dan membuat keputusan pembelian atau penjualan yang sesuai.
Strategi ini menghitung band atas, band tengah dan band bawah Bollinger Bands untuk menentukan apakah harga saat ini berada dalam kisaran volatilitas dan dengan demikian membuat keputusan tentang pembukaan atau penutupan posisi. Ketika harga mendekati band atas, itu dianggap sebagai titik ekstrim untuk posisi panjang dan strategi memilih untuk menutup posisi panjang. Ketika harga jatuh di dekat band bawah, itu dianggap sebagai titik ekstrim untuk posisi pendek dan strategi memilih untuk membuka posisi panjang.
Selain itu, strategi juga memperkenalkan faktor pembalikan tren. Jika ada sinyal pembalikan, itu juga akan memicu keputusan beli atau jual yang sesuai. Secara khusus, logika strategi adalah sebagai berikut:
Dengan memanfaatkan karakteristik Bollinger Bands dan menggabungkan faktor tren dan pembalikan, strategi ini mencoba untuk menangkap titik pembalikan ketika volatilitas meningkat.
Dibandingkan dengan strategi rata-rata bergerak biasa, strategi ini memiliki keuntungan berikut:
Secara umum, strategi ini menggabungkan Bollinger Bands dan price bar dengan relatif baik.
Namun, masih ada beberapa risiko dengan strategi ini:
Dengan demikian, optimasi masa depan dapat berfokus pada:
Kesimpulannya, ini adalah templat strategi perdagangan Bollinger Bands yang khas. Ini menghindari perdagangan yang tidak efektif yang berlebihan yang umum untuk menggunakan Bollinger Bands saja dengan memperkenalkan penilaian pembalikan tren untuk menyaring sinyal, yang secara teoritis dapat menyebabkan kinerja strategi yang baik.
/*backtest start: 2023-12-18 00:00:00 end: 2024-01-17 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=3 strategy("Noro's Bollinger Strategy v1.2", shorttitle = "Bollinger str 1.2", overlay = true ) //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 close >= basis and close < upper and (close < strategy.position_avg_price or strategy.position_size == 0) and uset dn1 = bar == 1 and close <= basis and close > 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) if dn1 or dn2 strategy.entry("Short", strategy.short, needshort == false ? 0 : na) if exit strategy.close_all()