Bollinger-Breakout-Strategie

Schriftsteller:ChaoZhang, Datum: 2023-11-13 10:19:43
Tags:

img

Übersicht

Dies ist eine Breakout-Strategie, die auf dem Bollinger Bands-Indikator basiert. Sie nutzt die oberen und unteren Banden der Bollinger Bands, um Breakout-Signale für den Ein- und Ausstieg zu erzeugen.

Strategie Logik

Die Strategie berechnet zunächst das mittlere Band, das obere Band und das untere Band der Bollinger Bands. Das mittlere Band ist der gleitende Durchschnitt des Preises, während die oberen und unteren Bands das mittlere Band +/- eine Standardabweichung sind.

Wenn der Preis über das untere Band bricht, wird ein langes Signal erzeugt. Wenn der Preis unter das obere Band bricht, wird ein kurzes Signal erzeugt. Dies zeigt an, dass der Preis aus dem Bollinger Bands-Bereich bricht und eine Trendbewegung eintreten kann.

Die Strategie prüft außerdem nach Körperbreakout. Wenn der Schluß höher als offen ist und der Körper das mittlere Band um einen bestimmten Prozentsatz durchdringt, wird er die Position abflachen. Wenn der Schluß niedriger als offen ist und der Körper das mittlere Band um einen bestimmten Prozentsatz durchdringt, wird er auch die Position abflachen. Dies vermeidet Verluste durch falsche Breakouts.

Nach dem Eintritt in Positionen kann die Strategie Stop Loss und Pyramide verfolgen. Wenn sich der Preis weiterhin in günstige Richtung bewegt, kann die Positionsgröße erhöht werden, um das Gewinnpotenzial zu verbessern. Wenn der Preis umkehrt, wird Stop Loss zur Kontrolle des Risikos verwendet.

Analyse der Vorteile

Die Vorteile dieser Strategie sind:

  1. Bollinger-Bänder verwenden, um die Trendrichtung zu bestimmen und Ausbrüche zu erfassen.

  2. Überprüfen Sie den Körper und das mittlere Band, um die Gültigkeit des Ausbruchs zu ermitteln und Verluste durch falsche Ausbrüche zu vermeiden.

  3. Verwenden Sie einen Stop-Loss, um Gewinne zu erzielen und das Risiko zu kontrollieren.

  4. Verwenden Sie Pyramiden, um höhere Renditen bei Trendbewegungen zu erzielen.

  5. Eine klare Logik und einfache Parameter machen diese Strategie einfach umzusetzen.

Risikoanalyse

Zu den Risiken dieser Strategie gehören:

  1. Bollinger Bands-Breakouts können falsche Breakouts nicht vollständig vermeiden, einige Verluste können auftreten.

  2. Eine unsachgemäße Stop-Loss-Platzierung kann zu einem vorzeitigen Stop-Out führen oder Verluste nicht begrenzen.

  3. Übermäßige Pyramidenzeiten und -größe können zu verstärkten Verlusten führen.

  4. Wenn der Trend umgekehrt ist, kann es zu großen Rückgänge kommen, wenn man nicht rechtzeitig aufhört.

  5. Eine unzureichende Optimierung der Parameter kann zu einer unterdurchschnittlichen Leistung führen.

  6. Das Risiko der Überanpassung erfordert eine Validierung auf verschiedenen Märkten.

Optimierungsrichtlinien

Die Strategie kann in folgenden Aspekten verbessert werden:

  1. Testen und optimieren Sie die Bollinger Bands-Parameter, um bessere Kombinationen zu finden.

  2. Verschiedene Stop-Loss-Strategien testen und die Stop-Loss-Platzierung optimieren.

  3. Testen und finden Sie optimale Pyramidenzeiten und -größe.

  4. Fügen Sie einen Trendfilter hinzu, um Pyramiden gegen den Trend zu vermeiden.

  5. Optimieren Sie die Logik des Körperbruchs, um falsche Ausbrüche zu reduzieren.

  6. Fügen Sie bedingte Aufträge hinzu, um unterschiedliche Parameter zu verwenden, die auf den Marktbedingungen basieren.

  7. Um die Robustheit zu verbessern, sollten mehr Rückversuche für verschiedene Produkte und Zeitrahmen durchgeführt werden.

  8. Verwenden Sie maschinelles Lernen zur automatischen Optimierung von Parametern.

Schlussfolgerung

Zusammenfassend lässt sich sagen, dass diese Strategie Bollinger Bands verwendet, um die Trendrichtung zu bestimmen und Breakouts zu erfassen, mit zusätzlichen Stop Loss, Pyramiden und anderen Funktionen, um gute Ergebnisse zu erzielen.


/*backtest
start: 2023-11-05 00:00:00
end: 2023-11-12 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy("Noro's Bollinger Strategy v1.1", shorttitle = "Bollinger str 1.1", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 5)

//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, minval = 0.001, maxval = 50, title = "Bollinger Mult")
source = input(ohlc4, defval = ohlc4, title = "Bollinger Source")

showbands = input(true, defval = true, title = "Show Bollinger Bands")
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")

//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
up = close <= lower
dn = close >= upper
exit = (strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open) and body > abody / 2

//Trading
if up
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))

if dn
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))
    
if time > timestamp(toyear, tomonth, today, 00, 00) or exit
    strategy.close_all()

Mehr