Handelsstrategie für Bollinger-Bänder mit mehreren Indikatoren

Schriftsteller:ChaoZhang, Datum: 15.11.2023
Tags:

img

Übersicht

Diese Strategie kombiniert mehrere technische Indikatoren wie Bollinger Bands, RSI und MACD, um Handelsentscheidungen zu treffen. Zunächst werden Bollinger Bands auf dem Chart gezeichnet und Bands Breakout für Eintrittssignale verwendet. RSI und MACD werden dann als zusätzlicher Filter für Eintritte verwendet.

Strategie Logik

  1. Zeichnen Sie 34-Perioden-Bollinger-Bänder mit zentraler Linie, 1 std dev und 2 std dev-Bänder.

  2. Eintritt lang, wenn die Schließung über dem oberen Band liegt, kurz, wenn die Schließung unter dem unteren Band liegt.

  3. Schließen einer Long-Position, wenn die Close unterhalb der Mittellinie kreuzt, schließen einer Short-Position, wenn die Close über der Mittellinie kreuzt.

  4. Verwenden Sie RSI>70 als zusätzliche Bestätigung für lang, RSI<30 als Bestätigung für kurz.

  5. Schließen von Short-Positionen, wenn der RSI über 50 liegt, schließen von Long-Positionen, wenn der RSI unter 50 liegt.

  6. Verwenden Sie MACD-Crossover als zusätzlichen Filter für Einträge, MACD-Crossover für Long und MACD-Crossunder für Short.

  7. Schließen Sie Long-Positionen auf dem MACD-Crossover und schließen Sie Short-Positionen auf dem MACD-Crossunder.

  8. Alle 3 Indikatoren müssen vor dem Eintritt in den Handel ausgerichtet sein, mehrere Filter reduzieren falsche Signale.

Vorteile

Die Kombination von Signalen aus mehreren Indikatoren reduziert falsche Signale und steigert die Rentabilität.

Strenge Stop-Loss-Regeln, die auf Bands und Indikatoren basieren, begrenzen den Verlust bei jedem Trade. Dies führt zu einer höheren Rentabilität, Gewinnrate und einem niedrigeren maximalen Drawdown.

Im Vergleich zu Einzelindikatorstrategien verbessert die Kombination von Indikatoren die Leistung. Mehrere Filter beseitigen schlechte Signale. Der Stop-Loss-Mechanismus steuert die Auswirkungen von Verlusten.

Insgesamt zeichnet sich diese Strategie in Trendmärkten aus, da sie große Bewegungen erfasst und gleichzeitig mit Hilfe von Indikatordetails Whipsaws vermeidet.

Risiken

Die wichtigsten Risiken sind:

  1. Die Optimierung der Parameter kann falsche Signale reduzieren, aber nicht beseitigen.

  2. Nicht in der Lage, von den Märkten mit einer Bandbreite zu profitieren. Stop-Loss kann auslösen, was zu Verlusten während der Konsolidierung führt. Stop-Loss-Regeln können gelockert werden, um Trades länger zu halten.

  3. Nachlassende Indikatoren führen zu verpassten Einstiegsmöglichkeiten.

  4. Durch die Verwendung von Trailing Stops oder Durchschnittswert nach unten können Verluste besser kontrolliert werden.

  5. Feststehende Parameter können für verschiedene Märkte angepasst werden müssen.

  6. Unzureichende Tests, die zu einer Überanpassung führen.Die Strategie muss auf größeren Datensätzen auf allen Märkten getestet werden, um die Robustheit sicherzustellen.

Möglichkeiten zur Verbesserung

Die Strategie kann in mehrfacher Hinsicht verbessert werden:

  1. Optimieren Sie die Indikatorparameter, um die besten Kombinationen zu finden, die falsche Signale minimieren.

  2. Anstelle von festen Stopps im mittleren Band können Stopps sich an ATR, Trends usw. anpassen.

  3. Verwendung von maschinellem Lernen für die adaptive Optimierung von Parametern unter veränderten Bedingungen, z. B. Verstärkungslernen.

  4. Hinzufügen von Regeln zur Trenderkennung, um für verschiedene Marktphasen verschiedene Taktiken einzusetzen.

  5. Einbeziehung von Stimmungen, Social-Media-Daten für eine verbesserte Multi-Faktor-Vorhersage und führende Indikatoren.

  6. Verwenden Sie die Komponenten, um die Positionsgrößen auf der Grundlage der wachsenden Kontogröße für ein exponentielles Wachstum zu skalieren.

  7. Optimierung von Kombinationen mit unkorrelierten Strategien zur Verringerung der Volatilität des Portfolios durch Diversifizierung.

Schlussfolgerung

Diese Strategie kombiniert mehrere Indikatoren für robuste Ein- und Ausstiegssignale und erzwingt eine strenge Stop-Loss-Disziplin. Die Verwendung mehrerer Indikatoren reduziert falsche Signale, während Stops die Verlustgröße kontrollieren.


/*backtest
start: 2023-10-15 00:00:00
end: 2023-11-14 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// Bollinger Bands: Madrid : 14/SEP/2014 11:07 : 2.0
// This displays the traditional Bollinger Bands, the difference is 
// that the 1st and 2nd StdDev are outlined with two colors and two
// different levels, one for each Standard Deviation

strategy(shorttitle='MBB', title='Bollinger Bands', overlay=true, currency=currency.NONE, initial_capital = 1000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_value = 0.05)
src = input(close)
length = input.int(34, minval=1)
mult = input.float(2.0, minval=0.001, maxval=50)

basis = ta.sma(src, length)
dev = ta.stdev(src, length)
dev2 = mult * dev

upper1 = basis + dev
lower1 = basis - dev
upper2 = basis + dev2
lower2 = basis - dev2

colorBasis = src >= basis ? color.blue : color.orange

pBasis = plot(basis, linewidth=2, color=colorBasis)
pUpper1 = plot(upper1, color=color.new(color.blue, 0), style=plot.style_circles)
pUpper2 = plot(upper2, color=color.new(color.blue, 0))
pLower1 = plot(lower1, color=color.new(color.orange, 0), style=plot.style_circles)
pLower2 = plot(lower2, color=color.new(color.orange, 0))

fill(pBasis, pUpper2, color=color.new(color.blue, 80))
fill(pUpper1, pUpper2, color=color.new(color.blue, 80))
fill(pBasis, pLower2, color=color.new(color.orange, 80))
fill(pLower1, pLower2, color=color.new(color.orange, 80))


//Strategy code starts here

long_entry = ta.crossover(src, upper1)
short_entry = ta.crossunder(src, lower1)

strategy.entry("Long", strategy.long, when=long_entry)
strategy.entry("Short", strategy.short, when=short_entry)

if long_entry or close < basis
    strategy.close("Long", "Long") 

if short_entry or close > basis
    strategy.close("Short", "Short") 


//Calculate RSI
rsiLength = input(14)
rsiValue = ta.rsi(src, rsiLength)

// Define RSI conditions for entering and exiting trades
rsiLong = rsiValue > 70
rsiShort = rsiValue < 30


//Enter long position when RSI crosses above 50 and Bollinger Bands long entry condition is met
strategy.entry("Long", strategy.long, when=long_entry and rsiLong)

//Exit long position when RSI crosses below 50 or Bollinger Bands exit condition is met
strategy.close("Long Exit", when=rsiShort or close < basis)

//Enter short position when RSI crosses below 50 and Bollinger Bands short entry condition is met
strategy.entry("Short", strategy.short, when=short_entry and rsiShort)

//Exit short position when RSI crosses above 50 or Bollinger Bands exit condition is met
strategy.close("Short Exit", when=rsiLong or close > basis)



//Calculate MACD
fastLength = input(12)
slowLength = input(26)
macdLength = input(9)
macdValue = ta.macd(src, fastLength, slowLength, macdLength)

// Define MACD conditions for entering and exiting trades
macdLong = ta.crossover(src, macdLength)
macdShort = ta.crossunder(src, macdLength)

//Enter long position when MACD crosses above signal line and RSI and Bollinger Bands long entry condition is met
strategy.entry("Long", strategy.long, when=long_entry and rsiLong and macdLong)

//Exit long position when MACD crosses below signal line or RSI crosses below 50 or Bollinger Bands exit condition is met
strategy.close("Long Exit", when=macdShort or rsiShort or close < basis)

//Enter short position when MACD crosses below signal line and RSI crosses below 50 and Bollinger Bands short entry condition is met
strategy.entry("Short", strategy.short, when=short_entry and rsiShort and macdShort)

//Exit short position when MACD crosses above signal line or RSI crosses above 50 or Bollinger Bands exit condition is met
strategy.close("Short Exit", when=macdLong or rsiLong or close > basis)

Mehr