Bollinger-Breakout-Strategie

Schriftsteller:ChaoZhang, Datum: 2021-09-21 10:38:13
Tags:

Übersicht

Diese Strategie basiert auf dem Bollinger Bands-Indikator, bei dem lange oder kurze Positionen eingenommen werden, wenn der Preis aus den oberen oder unteren Linien der Bollinger Bands ausbricht.

Strategie Logik

  1. Berechnung der Bollinger-Mittellinie, der oberen und unteren Linien
  2. Long bei unterem Breakout; Short bei oberem Breakout
  3. Festlegen von Anfangs- und Endzeit zur Festlegung der Handelszeiten
  4. Festlegen der Aufbewahrungszeit, Standard für den Intraday-Ausgang

Es berechnet zunächst die mittlere SMA der Längenlänge und die oberen/unteren Linien von mehrfacher Standardabweichung. Wenn der Schluß von der unteren Linie nach oben bricht, gehen Sie lang. Wenn der Schluß von der oberen Linie nach unten bricht, gehen Sie kurz. Setzen Sie auch die Start- und Endzeit, um die Handelszeiten zu begrenzen. Verlassen Sie vor der täglichen Öffnung.

Die Strategie versucht, expandierende Bewegungen zu erfassen, nachdem der Preis aus den Bands ausbricht. Das Durchbrechen des unteren Bands zeigt eine Stärkung der bullischen Kräfte an, während das Durchbrechen des oberen Bands eine Stärkung der bärischen Kräfte bedeutet, so dass der Handel im Einklang mit dem Durchbruch günstig ist.

Analyse der Vorteile

  1. Einfach und intuitiv, leicht zu verstehen und umzusetzen
  2. Nutzen Sie Bollinger-Bänder, um Trend-Break-outs zu beurteilen, hat eine gewisse Trend-nachfolgende Kapazität
  3. Flexible Anpassung der Parameter für verschiedene Zyklen und Produkte
  4. Intraday-Exit-Kontrollen für das Overnight-Risiko
  5. Kann nur lang oder kurz gehandelt werden

Risikoanalyse

  1. Das Risiko eines falschen Ausbruchs, der Preis kann nach dem ersten Ausbruch zurückgehen.
  2. Die Parameter müssen für verschiedene Zyklen angepasst werden.
  3. Ein größerer Breakout-Bereich kann die Verluste ausweiten.
  4. Häufiger Handel kann die Transaktionskosten erhöhen.

Die Risiken können durch Optimierung der Einstiegsregeln, Hinzufügen von Stop-Loss, Einführung von Trendfiltern usw. verringert werden.

Optimierungsrichtlinien

  1. Optimierung der Parameter für verschiedene Zyklen
  2. Hinzufügen von Wiedereintritts- und Pyramidenregeln, um Trends zu folgen
  3. Einführung von Stop-Loss zur Risikokontrolle
  4. Festlegen von Handelszeiten, um wichtige Nachrichten zu vermeiden
  5. Testtrendfilter zur Vermeidung von preisaktiven Veränderungen
  6. Bewertung verschiedener Haltezeiten und Vergleich der Ergebnisse

Zusammenfassung

Dies ist eine Breakout-Strategie, die auf Bollinger Bands basiert. Sie profitiert von Breakout-Bewegungen. Die Vorteile sind einfache Logik und einfache Implementierung; die Nachteile sind anfällig für falsche Breakouts. Die Risiken können durch Parameteroptimierung, Stop-Loss, Handelszeitenkontrolle usw. verwaltet werden.


/*backtest
start: 2023-08-21 00:00:00
end: 2023-09-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy("Noro's Bollinger Strategy v1.0", shorttitle = "Bollinger str 1.0", 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, minval=1)
mult = input(1.0, minval=0.001, maxval=50)

fromyear = input(1900, defval = 1900, 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")

source = close
basis = sma(source, length)
dev = mult * stdev(source, length)

upper = basis + dev
lower = basis - dev

up = close < lower
dn = close > upper
exit = (strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)

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

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

Mehr