Bollinger-Band-Breakout-Trend nach Strategie

Schriftsteller:ChaoZhang, Datum: 2023-09-22 14:31:17
Tags:

Übersicht

Dies ist eine Trend-Folge-Strategie, die auf dem Bollinger Bands-Indikator basiert. Es verwendet den Ausbruch der Bollinger Bands oberen und unteren Bands, um die Trendrichtung zu bestimmen und entsprechende Positionen zu eröffnen. Wenn die Preise zurückfallen, verwendet es einen Trailing Stop Loss mit dynamischem Abstand, um Positionen zu verlassen und Gewinne zu erzielen.

Strategie Logik

Die Strategie verwendet Bollinger-Bänder, um die Trendrichtung zu bestimmen. Bollinger-Bänder werden konstruiert, indem die Standardabweichung der Preise berechnet wird, um die oberen und unteren Bande zu bilden. Wenn die Preise durch das obere Band durchbrechen, zeigt dies einen Aufwärtstrendstart an. Wenn die Preise das untere Band durchbrechen, zeigt dies einen Abwärtstrendstart an.

Die spezifische Handelslogik lautet:

  1. Berechnen Sie die mittleren, oberen und unteren Bande von Bollinger-Bändern.

  2. Wenn der Preis das obere Band durchbricht, gehen Sie lang.

  3. Verwenden Sie einen Trailing Stop Loss, um Risiken zu kontrollieren und zu verlassen, wenn die Preise zurückfallen.

  4. Wenn die Preise die Bands wieder durchbrechen, treten Sie wieder in den Trend ein.

Die Verwendung von Bollinger Bands zur Bestimmung von Trends und die Kombination mit einem dynamischen Trailing Stop Loss können die Risiken wirksam kontrollieren.

Analyse der Vorteile

Zu den Vorteilen dieser Strategie gehören:

  1. Bollinger-Bänder verwenden, um Trends zu bestimmen, einfach und effektiv.

  2. Die Kombination von Breakout-Eintritt und dynamischem Trailing-Stop-Loss sorgt für eine ausgewogene Trendaufnahme und Risikokontrolle.

  3. Saubere und prägnante Codestruktur, leicht zu verstehen und zu ändern.

  4. Wenige Parameter, leicht zu optimieren.

  5. Anwendbar auf verschiedene Produkte, flexibel.

  6. Gute Backtest-Ergebnisse, mit großem Gewinnpotenzial.

Risikoanalyse

Die wichtigsten Risiken sind:

  1. Bollinger Bands beruhen ausschließlich auf Statistiken, Risiken der Kurvenanpassung.

  2. Es ist schwierig, die Erweiterung des Bereichs von den tatsächlichen Trends zu unterscheiden, was zu Fehleinschätzungen führen kann.

  3. Stoppverlustpunkte zu eng, Gefahr, durch normale Schwingungen ausgeschaltet zu werden.

  4. Keine Berücksichtigung der Transaktionskosten.

  5. Begrenzte Rückprüfungsperiode, Gefahr einer Überanpassung.

Die Lösungen sind:

  1. Optimierung von Parametern oder Hinzufügung anderer Indikatoren zur Signalprüfung.

  2. Verbesserung der Identifizierung von Schwingungen und Kanälen.

  3. Dynamische Anpassung des Stoppverlustes auf Basis von ATR usw.

  4. Zusätzliche Provisionen, Verschiebungskosten.

  5. Erweitern Sie die Backtest-Periode, Multi-Markt-Verifizierung.

Optimierungsrichtlinien

Die Strategie kann optimiert werden, indem:

  1. Prüfung von Kombinationswirkungen verschiedener Indikatoren.

  2. Verbesserung der Identifizierung von Trendschwankungen.

  3. Einführung von maschinellem Lernen für dynamische Parameteroptimierung.

  4. Optimierung der Stop-Loss-Strategie basierend auf den Rücktests.

  5. Bewertung und Summierung der Transaktionskosten.

  6. Parameterraumoptimierung für optimale Einstellungen.

  7. Die Verwaltung des Geldes zur Kontrolle der Positionsrisiken.

Schlussfolgerung

Diese Strategie bestimmt die Trendrichtung mit Bollinger Bands und steuert das Risiko mit dem Trailing Stop Loss. Die Gesamtlogik ist einfach und klar. Sie hat eine gute Trend-Fangfähigkeit, kann aber durch Einführung von mehr technischen Indikatoren, Optimierung von Parametern, Hinzufügen von Kosten usw. verbessert werden, um sie robuster zu machen. Insgesamt bietet diese Strategie einen einfachen und praktischen Bollinger Bands-basierten Trendfollowing-Ansatz.


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

//@version=4
strategy(title="Bollinger Band Breakout", shorttitle = "BB Strategy",initial_capital=1000, default_qty_type = strategy.percent_of_equity, default_qty_value = 10, commission_type = strategy.commission.percent, commission_value = 0.3, max_bars_back = 1000, overlay=true)

// Inputs //

sma = input(20,  minval=1)
mult   = input(1.2, minval=0.001, maxval=50)
src = input(close)

// alert msg  //

message_long_entry  = input("long entry")
message_short_entry = input("short entry")

// Calculations //

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

upper = basis + dev
lower = basis - dev

// Backtest //
fromyear = input(2019, defval = 2019, 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(1, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

leverage = input(1, "Leverage")

term = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))

// PLOT //

plot(basis, color = color.gray,  linewidth = 2)
lu = plot(upper, color = color.green, linewidth = 2)
ll = plot(lower, color = color.red,   linewidth = 2)

fill(lu, ll, color = color.gray)

// Signals //

long  = crossover(close, upper)
short = crossunder(close, lower)

// Strategy entry //
strategy.initial_capital = 50000
if (long and term)
    strategy.entry("long",  strategy.long, qty=strategy.initial_capital/close*leverage, when = long and barstate.isconfirmed, alert_message = message_long_entry)
    
if (short and term)
    strategy.entry("short",  strategy.short, qty=strategy.initial_capital/close*leverage, when = short and barstate.isconfirmed, alert_message = message_short_entry)

// strategy exit //

strategy.exit("long tsl", "long", loss = close*0.075 / syminfo.mintick, trail_points = close*0.05 / syminfo.mintick, trail_offset = close*0.005 / syminfo.mintick)
strategy.exit("short tsl", "short", loss = close*0.075 / syminfo.mintick, trail_points = close*0.05 / syminfo.mintick, trail_offset = close*0.005 / syminfo.mintick)





Mehr