Strategie für einen Breakout des gleitenden Durchschnitts und für einen Breakout des Bollinger Bands

Schriftsteller:ChaoZhang, Datum: 2024-02-19 14:18:00 Uhr
Tags:

img

Übersicht

Diese Strategie kombiniert die Verwendung des RSI-Indikators zur Identifizierung von überkauften und überverkauften Signalen, Bollinger-Bänder zur Bestimmung von Preisdurchbrüchen und gleitenden Durchschnitts-Crossovers, um den Markt in verschiedenen Trendstadien zu beurteilen, um Gewinn zu erzielen.

Strategie Logik

Die Strategie besteht aus folgenden Hauptindikatoren:

  1. RSI-Indikator: Wenn die RSI-Linie über die überkaufte Schwelle oder unter die überverkaufte Schwelle geht, werden entsprechend Long- oder Short-Trades getätigt.

  2. Bollinger-Bänder: Wenn der Preis durch das obere Bollinger-Band bricht, wird ein Short-Trade platziert; wenn der Preis das untere Bollinger-Band bricht, wird ein Long-Trade platziert.

  3. Bewegliche Durchschnitte: Die höchsten und niedrigsten Preise über einen bestimmten Zeitraum (z. B. 5 Perioden) werden berechnet. Wenn der Preis über dem höchsten Punkt in den letzten 5 Perioden liegt, wird ein Long-Handel platziert; wenn der Preis unter dem niedrigsten Punkt in den letzten 5 Perioden liegt, wird ein Short-Handel platziert.

  4. MACD: Das Crossover und das Death Cross der schnellen Linie, der langsamen Linie und der MACD-Linie werden als Hilfsbeurteilungsindikatoren verwendet.

Diese Indikatoren arbeiten zusammen, um den Markt in den Trending- und Konsolidierungsphasen zu beurteilen. Bollinger Bands identifizieren Ausbrüche und Rückschläge auf den Mittelwert. Gleitende Durchschnitte bestimmen Trendumkehrpunkte während der Konsolidierung. RSI-Extreme erkennen überkaufte / überverkaufte Marktbedingungen für Gegentrend-Trades.

Analyse der Vorteile

Die Vorteile dieser Strategie sind:

  1. Die Kombination mehrerer Indikatoren verbessert die Genauigkeit. RSI, Bollinger Bands, gleitender Durchschnitt und mehr interagieren, um zuverlässige Handelssignale zu erzeugen.

  2. Bollinger Bands für Trends, gleitende Durchschnitte für Konsolidierung, RSI für Extreme.

  3. Die Indikatorparameter sind konservativ eingestellt, um einen Überhandel zu vermeiden.

  4. Saubere Code-Struktur, leicht zu verstehen, zu bearbeiten und aufzubauen.

Risikoanalyse

Einige Risiken bedürfen Aufmerksamkeit:

  1. Parameterrisiken. Unangemessene Indikatorparameter können falsche Handelssignale erzeugen. Parameter müssen kontinuierlich getestet und optimiert werden.

  2. Die Risiken einer Long/Short-Umstellung. Häufige Veränderungen der Long/Short-Position bei Trendumkehrungen erhöhen die Handelskosten. Die Haltedauer kann angepasst werden.

  3. Es ist notwendig, die Risiken des Codierens zu verbessern, da logische Fehler, die im Code verborgen sind, zu abnormalen Transaktionen führen könnten.

Optimierung

Die Strategie kann in folgenden Aspekten verbessert werden:

  1. Fügen Sie Stop Loss hinzu, um Gewinne zu erzielen und Verluste zu reduzieren.

  2. Einbeziehen Sie das Handelsvolumen, um falsche Signale zu vermeiden. z. B. Überprüfen Sie das Handelsvolumen bei Bollinger-Breakouts.

  3. Einführung von maschinellem Lernen, um optimale Parameter auf der Grundlage historischer Daten zu finden.

  4. Erstellen Sie eine grafische Schnittstelle für eine intuitive Darstellung der Leistung.

  5. Durchführung von Backtests, um die besten Parameterkombinationen zu finden.

Schlussfolgerung

Diese Strategie kombiniert gleitenden Durchschnitt, Bollinger Bands, RSI und mehr, um Handelssignale zu generieren. Seine Vielseitigkeit und Genauigkeit sind klare Stärken, während Parameter-Einstellung und Codierung Risiken verwaltet werden müssen.


/*backtest
start: 2024-01-19 00:00:00
end: 2024-02-15 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("MD strategy", overlay=true)
lengthrsi = input( 14 )
overSold = input( 30 )
overBought = input( 70 )
price = close
source = close
lengthbb = input(20, minval=1)
mult = input(2.0, minval=0.001, maxval=50)
direction = input(0, title = "Strategy Direction",minval=-1, maxval=1)
fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)
consecutiveBarsUp = input(3)
consecutiveBarsDown = input(3)
lengthch = input( minval=1, maxval=1000, defval=5)
upBound = highest(high, lengthch)
downBound = lowest(low, lengthch)



ups = price > price[1] ? nz(ups[1]) + 1 : 0
dns = price < price[1] ? nz(dns[1]) + 1 : 0
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD

strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))

basis = sma(source, lengthbb)
dev = mult * stdev(source, lengthbb)

upper = basis + dev
lower = basis - dev

vrsi = rsi(price, lengthrsi)

if (not na(vrsi))
    if (crossover(vrsi, overSold))
        strategy.entry("RsiLE", strategy.long, comment="RsiLE")
    if (crossunder(vrsi, overBought))
        strategy.entry("RsiSE", strategy.short, comment="RsiSE")

if (crossover(source, lower))
    strategy.entry("BBandLE", strategy.long, stop=lower, oca_name="BollingerBands",  comment="BBandLE")
else
    strategy.cancel(id="BBandLE")

if (crossunder(source, upper))
    strategy.entry("BBandSE", strategy.short, stop=upper, oca_name="BollingerBands",  comment="BBandSE")
else
    strategy.cancel(id="BBandSE")
    
    
if (not na(close[lengthch]))
    strategy.entry("ChBrkLE", strategy.long, stop=upBound + syminfo.mintick, comment="ChBrkLE")
    strategy.entry("ChBrkSE", strategy.short, stop=downBound - syminfo.mintick, comment="ChBrkSE")
    
    
//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)

Mehr