Die Bollinger Bands Strategie ist eine klassische Strategie, die Bollinger Bands für die Trendverfolgung und Überkauf/Überverkaufssignale verwendet.
Die Strategie beurteilt überkaufte/überverkaufte Konditionen durch goldene/tote Crossovers der oberen/unteren Bollinger-Bänder, um Positionen zu etablieren. Der Bereich zwischen den Bändern spiegelt den aktuellen Marktvolatilitätsbereich wider. Die Banden bestehen aus mittleren, oberen und unteren Bändern, wobei das mittlere Band der einfache gleitende Durchschnitt für N-Tage ist und die oberen/unteren Banden das mittlere Band +/- K Standardabweichungen sind.
Bollinger-Bänder spiegeln die Marktvolatilität und den Schwingungsbereich wider. Das Berühren des unteren Bands bedeutet, dass der Status quo überverkauft ist - Lücken haben eine höhere Wahrscheinlichkeit, dass sie gefüllt werden. Daher sollten Long-Positionen basierend auf dem Prinzip der Durchschnittsumkehr in Betracht gezogen werden. Ebenso stellt das Berühren des oberen Bands potenzielle Überkaufbedingungen und wahrscheinliche Preisumkehrungen dar, so dass Short-Positionen eingerichtet werden können, um von den Abwärtsbewegungen zu profitieren.
Diese Strategie kombiniert die Überkauf-/Überverkaufssignale von Bollinger Bands für Trendverfolgungseinträge.
Wenn der Preis über den unteren Bereich geht, verlässt der Markt den Überverkaufsbereich in einen angemessenen Bereich. Long-Positionen können geöffnet werden. Wenn der Preis unter den oberen Bereich geht, wird der Markt überkauft. Kurze können dann geöffnet werden.
Nach Ausfüllung der Aufträge werden festgelegte Stop-Loss-Levels festgelegt, um Risiken zu managen.
Identifizieren Sie überkaufte/überverkaufte Niveaus mit Bollinger-Bändern für Low-Buy-High-Sell-Setups nach Band-Crossovers.
Erfassen von Trends durch Volatilitäts-Eigenschaft von Bollinger Bands.
Der Stop-Loss-Mechanismus begrenzt effektiv den maximalen Verlust pro Handel.
Die Kombination von Trendverfolgung und Stop-Loss führt zu stetigen Gewinnen.
Die Einstellungen der Parameter beeinflussen die Signalqualität. Die mittlere Bandlänge N und der Multiplikator für die Standardabweichung K sollten für verschiedene Märkte rationell eingestellt werden, sonst wird die Genauigkeit beeinträchtigt.
Übergroße oder untergroße Stop-Loss schädigt die Rendite Stabilität. Übergroße Prozentsatzrisiken schwerere Verluste pro Handel, während untergroße Prozentsatzrisiken vorzeitige Stop-Loss auslöst. Ein angemessener Prozentsatz sollte basierend auf verschiedenen Produkten festgelegt werden.
Zusätzliche Filter mit anderen Indikatoren können die Signalgenauigkeit verbessern.
Es können verschiedene Haltedauer-Einstellungen getestet werden, z. B. die Kombination von stündlichen oder kürzeren Periodenbändern für höhere Frequenzhandels- und Kapitalnutzungs-Effizienzverbesserungen.
Diese Strategie nutzt Bollinger Bands für überkaufte/überverkaufte Signale und beinhaltet Stop Loss zur Risikokontrolle.
/*backtest start: 2023-11-15 00:00:00 end: 2023-11-22 00:00:00 period: 5m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title="Bollinger Bands Strategy", overlay=false, shorttitle="BBS", pyramiding=0, currency=currency.USD, commission_type=strategy.commission.percent, commission_value=0.03, initial_capital=1000) source = input(close, "Source") length = input.int(20, minval=1) mult = input.float(2.0, minval=0.001, maxval=50, step=0.001) stopLossFactor = input.float(1, "Stop Loss Percent", maxval = 100, minval = 0, step=0.1) basis = ta.sma(source, length) dev = mult * ta.stdev(source, length) upper = basis + dev lower = basis - dev var float lastTradePrice = na var float stopLossLow = na var float stopLossHigh = na var bool currentIsLong = na var bool nextExpectedIsLong = true var bool existedLong = false var bool existedShort = false buyEntry = ta.crossover(source, lower) sellEntry = ta.crossunder(source, upper) if (buyEntry and nextExpectedIsLong == true) strategy.entry("BBandLE", strategy.long, comment="BBandLE") nextExpectedIsLong := false if(nz(strategy.position_size[1], 0) < 0) // new position detected lastTradePrice := close stopLossLow := lastTradePrice * (1 - (stopLossFactor / 100)) stopLossHigh := lastTradePrice * (1 + (stopLossFactor / 100)) else strategy.cancel("BBandLE") if (sellEntry and nextExpectedIsLong == false) strategy.entry("BBandSE", strategy.short, comment="BBandSE") nextExpectedIsLong := true if(nz(strategy.position_size[1], 0) > 0) // new position detected lastTradePrice := close stopLossLow := lastTradePrice * (1 - (stopLossFactor / 100)) stopLossHigh := lastTradePrice * (1 + (stopLossFactor / 100)) else strategy.cancel("BBandSE") strategy.close("BBandLE", close < stopLossLow) strategy.close("BBandSE", close > stopLossHigh) // if(nz(strategy.position_size[1], 0) < 0 and close > stopLossHigh) // strategy.entry("BBandLE", strategy.long, comment="BBandLE") // lastTradePrice := close // stopLossLow := lastTradePrice * (1 - (stopLossFactor / 100)) // stopLossHigh := lastTradePrice * (1 + (stopLossFactor / 100)) // if(nz(strategy.position_size[1], 0) > 0 and close < stopLossLow) // strategy.exit("BBandSE", strategy.short, comment="BBandSE") // lastTradePrice := close // stopLossLow := lastTradePrice * (1 - (stopLossFactor / 100)) // stopLossHigh := lastTradePrice * (1 + (stopLossFactor / 100)) plot(source, "close", color.blue) plot(lower, "lower", color.red) plot(upper, "upper", color.red) plot(stopLossLow, "StopLossLow", color.black) plot(stopLossHigh, "StopLossHigh", color.black) plot(lastTradePrice, "lastTradePrice", color.green) plotchar(strategy.position_size > 0, char="-", size=size.tiny, location=location.bottom, color=color.green) plotchar(strategy.position_size < 0, char="-", size=size.tiny, location=location.bottom, color=color.red)