Bollinger-Bänder-Ausbruch mit Volatilitätsfilterstrategie

Schriftsteller:ChaoZhang, Datum: 2024-03-08 15:28:05
Tags:

img

Strategieübersicht

Die Bollinger Bands Breakout mit Volatilitätsfilter Strategie ist eine Handelsstrategie, die auf dem Bollinger Bands Indikator basiert. Sie verwendet Bollinger Bands, um die Position und Volatilität des Preises im Verhältnis zum gleitenden Durchschnitt zu bestimmen und somit über Ein- und Ausstiegspunkte zu entscheiden. Ein einzigartiger Aspekt dieser Strategie ist, dass sie einen Volatilitätsfilter verwendet, der es verhindert, während hoher Marktvolatilität zu handeln, indem die Veränderungsrate von aufeinanderfolgenden Kerzen erkannt wird. Darüber hinaus setzt die Strategie Bedingungen für die Gewinnnahme und das Stoppen von Verlusten, um Gewinne zu schützen und Risiken zu kontrollieren.

Strategieprinzipien

Der Kern der Strategie ist die Berechnung des Bollinger Bands-Indikators. Bollinger Bands bestehen aus drei Linien: Die mittlere Linie ist ein einfacher gleitender Durchschnitt, während die oberen und unteren Bänder jeweils auf eine bestimmte Standardabweichung über und unter der mittleren Linie festgelegt sind. Die Größe der Standardabweichung wird durch den Parameter mult gesteuert.

Die Eintrittsbedingungen der Strategie basieren auf der Position des Schlusskurses im Verhältnis zu den Bollinger Bands. Wenn die Handelsrichtung auf Long (tradeDirection>=0) eingestellt ist und der Schlusskurs um einen bestimmten Prozentsatz unter dem unteren Band bricht (lower_breakout_pct), wird eine Long-Position eröffnet; wenn die Handelsrichtung auf Short (tradeDirection<=0) eingestellt ist und der Schlusskurs um einen bestimmten Prozentsatz über dem oberen Band bricht (upper_breakout_pct), wird eine Short-Position eröffnet. Die Breakout-Prozentsatzparameter ermöglichen es dem Preis, die Bollinger Bands leicht zu durchbrechen, bevor er eine Position eintritt, um den Trend zu bestätigen.

Auf der anderen Seite wird die aktuelle Marktvolatilität als hoch angesehen, wenn die Veränderungsrate von zwei aufeinanderfolgenden Kerzen die vorgegebene Volatilitätsschwelle überschreitet und die Strategie keine neuen Positionen eröffnet.

Bei den Ausgangspositionen, wenn der Schlusskurs einer Long-Position in der Nähe des oberen Bands (Oberfläche) erreicht wirdlong_win_pct), oder der Schlusskurs einer Short-Position erreicht in der Nähe des unteren Bands (unterer + Bereich)Die Strategie schließt die entsprechende Position, um Gewinne zu erzielen, und wenn der nicht realisierte Verlust einer Position den vorgegebenen maximalen Drawdown-Prozentsatz (max_drawdown_percent) übersteigt, schließt die Strategie die Position, um Verluste zu stoppen.

Strategische Vorteile

  1. Bollinger Bands sind ein ausgereifter und weit verbreiteter technischer Indikator, der Informationen über gleitende Durchschnitte und Preisvolatilität enthält.

  2. Die Strategie beinhaltet sowohl eine Long- als auch eine Short-Entry-Logik, die es ermöglicht, Chancen sowohl auf bullischen als auch auf bärischen Märkten flexibel zu nutzen.

  3. Der Volatilitätsfilter verhindert die Eröffnung von Positionen in extrem volatilen Märkten und verringert somit die mit häufigem Handel und Hebelwirkung verbundenen Risiken in gewissem Umfang.

  4. Die Strategie verwendet Take-Profit- und Stop-Loss-Mechanismen, um Positionen aktiv zu verwalten und zu schließen, wenn die Preise auf Schlüsselniveaus zurückgehen.

Strategische Risiken

  1. Bollinger Bands sind im Wesentlichen ein Nachlassindikator und haben eine gewisse Verzögerung bei der Reaktion auf den Markt.

  2. Die Parameter-Einstellungen der Strategie sind möglicherweise nicht universell auf verschiedene Marktbedingungen anwendbar. Zum Beispiel muss die Schwellenwerteinstellung des Volatilitätsfilters möglicherweise in Trending- und Oscillierenden Märkten differenziert werden. Festparameter können dazu führen, dass die Strategie nicht in der Lage ist, Positionen zu eröffnen oder bei bestimmten Marktbedingungen zu häufig eröffnet wird.

  3. Obwohl es Stop-Loss-Maßnahmen gibt, kann die Strategie bei Marktlücken möglicherweise nicht zum vorgegebenen Preis ausgeführt werden, was zu größeren Verlusten führt.

  4. Die Strategie legt nach der Eröffnung von Positionen keine Stop-Loss- oder Breakeven-Stopps fest, was zu gewissen Gewinnrückgängen führen kann.

Optimierungsrichtlinien

  1. Überlegen Sie, mehr technische Indikatoren oder Beurteilungen über den Marktzustand wie ATR, Trendindikatoren, Volatilitätsindikatoren usw. als Filterbedingungen für die Strategie einzuführen, um die Qualität und den Zeitpunkt der Einträge zu verbessern.

  2. Für den Volatilitätsfilter sollten dynamische Schwellenwerte angewendet werden, die sich an verschiedene Instrumente oder Zeitrahmen anpassen, um die Filterungseffizienz zu verbessern.

  3. In Bezug auf Stop-Loss und Take-Profit sollten Sie Trailing-Stop- oder Breakeven-Stop-Mechanismen einführen, damit die Strategie Positionen halten kann, wenn der Trend anhält, anstatt Positionen vorzeitig zu schließen.

  4. Optimieren Sie das Positionsmanagement weiter, indem Sie die Eingangsgröße dynamisch anhand der Trendstärke, Volatilität, des Risikoniveaus und anderer Indikatoren anpassen, um Abzüge zu kontrollieren.

Zusammenfassung

Die Bollinger Bands Breakout mit Volatility Filter Strategie nutzt die Charakterisierung von Kursposition und Volatilität durch Bollinger Bands, um eine Zwei-Wege-Handelsstrategie zu konstruieren. Der einzigartige Aspekt dieser Strategie ist der Volatilitätsfilter, der den Handel in extrem volatilen Märkten vermeidet und gleichzeitig relativ einfache Gewinn- und Stop-Loss-Bedingungen festlegt. Insgesamt umfasst die Strategie eine ziemlich umfassende Ein- und Ausstiegslogik und Risikokontrolle, aber es gibt Raum für weitere Optimierung in Bezug auf Anpassung an Marktveränderungen, Parameteranwendbarkeit und Stop-Loss-Effizienz. Wenn mehr technische Indikatoren, dynamische Parameter und Positionsmanagementoptimierungen eingeführt werden können, können die Robustheit und Rentabilität der Strategie verbessert werden.


/*backtest
start: 2024-02-29 00:00:00
end: 2024-03-07 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("[Oppen Chow] Super BBS 1.0", default_qty_type = strategy.percent_of_equity, default_qty_value =100, initial_capital=500, commission_type=strategy.commission.percent, commission_value=0.08, pyramiding=2 )

// Input parameters
length = 20
mult = 2
max_drawdown_percent = input(5.5, "Maximum Acceptable Drawdown") / 100
upper_breakout_pct = input(50, "Short Entry Breakout Percentage") / 100
lower_breakout_pct = input(25, "Long Entry Breakout Percentage") / 100
tradeDirection = input(1, title="Trade Direction")
Volatility = input(0.5, title="Volatility") / 100
long_win_pct = input(-0.15, title = "Long Settlement Rate Near Boll Upper Limit")
short_win_pct = input(0.4, title = "Short Settlement Rate Near Boll Lower Limit")

// Bollinger Bands calculation
basis = ta.sma(close, length)
dev = mult * ta.stdev(close, length)
upper = basis + dev
lower = basis - dev
area = upper - lower

// Calculate the rate of change for two consecutive candlesticks
var float change1 = na
var float change2 = na
change1 := change2
change2 := ((close - open) / open) 

// Check for two or more consecutive candlesticks with a change rate greater than 0.5%
var bool highVolatility = false
highVolatility := change2 > Volatility

// Trading logic
var float highestPriceSinceOpen = na
var float lowestPriceSinceOpen = na
var int profitableDrawbackCount = 1


// Entry logic - In the absence of high volatility
if not highVolatility and strategy.position_size == 0
    if (tradeDirection >= 0) and (close < lower - area * lower_breakout_pct)
        strategy.entry("Long", strategy.long)
        highestPriceSinceOpen := close
        profitableDrawbackCount := 0
    if (tradeDirection <= 0) and (close > upper + area * upper_breakout_pct)
        strategy.entry("Short", strategy.short)
        lowestPriceSinceOpen := close
        profitableDrawbackCount := 0


if strategy.position_size > 0 and close > upper - area * long_win_pct
    strategy.close("Long", comment = "Take Profit")
if strategy.position_size < 0 and close < lower + area * short_win_pct
    strategy.close("Short", comment = "Take Profit")

// Stop loss logic - Based on drawdown percentage
if strategy.position_size > 0
    if (strategy.position_avg_price - close)/strategy.position_avg_price >= max_drawdown_percent
        strategy.close("Long", comment = "Drawdown Stop Loss")
else if strategy.position_size < 0
    if (close - strategy.position_avg_price)/strategy.position_avg_price >= max_drawdown_percent
        strategy.close("Short", comment = "Drawdown Stop Loss")


Mehr