Dies ist eine Handelsstrategie, die Bollinger Bands verwendet. Die Strategie zielt darauf ab, Chancen zu identifizieren, wenn die Preise mit Bollinger Bands heftig schwanken und entsprechende Kauf- oder Verkaufsentscheidungen treffen.
Die Strategie berechnet das obere Band, das mittlere Band und das untere Band der Bollinger Bands, um festzustellen, ob der aktuelle Preis innerhalb des volatilen Bereichs liegt und somit Entscheidungen über die Eröffnung oder Schließung von Positionen trifft. Wenn der Preis sich dem oberen Band nähert, wird er als extremer Punkt für Longs angesehen und die Strategie entscheidet, lange Positionen zu schließen. Wenn der Preis in der Nähe des unteren Bandes fällt, wird er als extremer Punkt für Shorts angesehen und die Strategie entscheidet, lange Positionen zu eröffnen.
Darüber hinaus führt die Strategie auch Trendumkehrfaktoren ein. Wenn es ein Umkehrsignal gibt, löst sie auch entsprechende Kauf- oder Verkaufsentscheidungen aus.
Das ist die grundlegende Handelslogik dieser Strategie. Durch die Nutzung der Eigenschaften von Bollinger Bands und die Kombination von Trend- und Umkehrfaktoren versucht die Strategie, Umkehrpunkte zu erfassen, wenn die Volatilität steigt.
Im Vergleich zu gewöhnlichen gleitenden Durchschnittsstrategien hat diese Strategie folgende Vorteile:
Im Allgemeinen kombiniert diese Strategie Bollinger-Bänder und Preisbalken relativ gut.
Allerdings bestehen bei dieser Strategie noch einige Risiken:
Folglich können sich zukünftige Optimierungen auf folgende Bereiche konzentrieren:
Zusammenfassend ist dies eine typische Bollinger Bands-Handelsstrategievorlage. Sie vermeidet übermäßige ineffektive Trades, die für die Verwendung von Bollinger Bands allein üblich sind, indem sie Trendsumkehrurteile für die Filtersignale einführt, was theoretisch zu einer guten Strategieleistung führen kann.
/*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()