Bollinger-Band-Konsolidierungsstrategie

Schriftsteller:ChaoZhang, Datum: 2024-02-22 13:43:14
Tags:

img

Übersicht

Die Bollinger Bands Konsolidierungsstrategie ist eine bahnbrechende Strategie, die mit Bollinger Bands Niedrigvolatilität Konsolidierung Phasen identifiziert. Wenn der Markt in eine Rangierungsphase eintritt, werden die Bollinger Bands konvergieren, was eine Gelegenheit zum Markteintritt signalisiert. Wir enthalten auch den Indikator Average True Range, um die Abnahme der Volatilität zu bestätigen.

Strategie Logik

Die Strategie stützt sich hauptsächlich auf Bollinger-Bänder, um zu erkennen, wann die Preise in eine Konsolidierung mit geringer Volatilität eintreten. Das mittlere Band der Bollinger-Bänder ist ein gleitender Durchschnitt der Schlusskurs. Die oberen und unteren Bande werden durch zwei Standardabweichungen über und unter dem mittleren Band ausgeglichen. Wenn die Volatilität abnimmt, schrumpft der Abstand zwischen den oberen und unteren Banden merklich. Zuerst überprüfen wir, ob der aktuelle ATR-Wert kleiner als die Standardabweichung zwischen den Bollinger-Bändern ist, um die Konvergenz vorläufig zu bestätigen. Dies signalisiert, dass die Preise gerade in die Konsolidierung eingetreten sind.

Um die Abnahme der Volatilität weiter zu beweisen, überprüfen wir, ob der gleitende Durchschnitt der ATR-Werte einen Abwärtstrend aufweist. Die Abnahme der durchschnittlichen ATR bestätigt auch von der Seite, dass die Volatilität sinkt. Wenn beide Bedingungen gleichzeitig erfüllt sind, bestimmen wir, dass Bollinger Bands eine signifikante Konvergenz gezeigt haben, was eine ausgezeichnete Kaufmöglichkeit ist.

Nach dem Kauf aktivieren wir eine bewegliche Stop-Loss-Strategie mit einer Stop-Loss-Distanz von doppelt dem ATR-Wert.

Analyse der Vorteile

Der größte Vorteil dieser Strategie besteht darin, dass sie genau bestimmen kann, wann der Markt in eine Konsolidierung mit geringer Volatilität eintritt und die beste Kaufmöglichkeit identifiziert.

Darüber hinaus verwendet die Strategie auch einen beweglichen Stop-Loss, um Risiken aktiv zu kontrollieren. Dies maximiert die Verlustreduktion, auch wenn die Marktstimmung ungünstig ist. Viele langfristige Strategien haben dies nicht.

Risikoanalyse

Das Hauptrisiko der Strategie besteht darin, dass der Bollinger Bands-Indikator 100% der Zeit keine genauen Veränderungen der Preisvolatilität ermitteln kann. Wenn Bollinger Bands falsch einschätzen, dass die Volatilität abgenommen hat, kann unser Eintrittszeitpunkt ungünstig sein. An diesem Punkt spielt der bewegliche Stop-Loss eine wichtige Rolle und kann den Handel so früh wie möglich beenden.

Außerdem wird die Einstellung verschiedener Parameter in der Strategie auch die Ergebnisse beeinflussen.

Optimierungsrichtlinien

Wir können andere Indikatoren hinzufügen, um die Wendezeichen bei Trendindikatoren zu bestätigen, wenn Bollinger Bands konvergieren. Zum Beispiel, wenn Bollinger Bands konvergieren, verlangen wir auch, dass sich die MACD-Differenz von positiv auf negativ gewandelt hat oder der RSI sich aus der überkauften Zone zurückgezogen hat. Dies kann die Genauigkeit der Kaufsignale weiter verbessern.

Eine andere Richtung besteht darin, den Einfluss verschiedener Parameter-Einstellungen auf die Ergebnisse zu testen, z. B. die Perioden von Bollinger Bands, ATR und den Multiplikator des beweglichen Stop Loss. Wir müssen schrittweise Optimierung verwenden, um die optimale Parameterkombination zu finden.

Schlussfolgerung

Die Bollinger Bands Konsolidierungstrategie verwendet Bollinger Bands, um den Zeitpunkt der verringerten Kursvolatilität zu bestimmen, und verwendet einen beweglichen Stop-Loss, um Risiken effektiv zu kontrollieren. Es ist eine relativ stabile langfristige Breakout-Strategie. Wir müssen noch weitere Parameter optimieren und andere Indikatoren einbeziehen, um die Robustheit der Strategie zu verbessern.


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © DojiEmoji

//@version=4
strategy("[KL] Bollinger Bands Consolidation Strategy",overlay=true,pyramiding=1)

// Timeframe {
backtest_timeframe_start = input(defval = timestamp("01 Apr 2016 13:30 +0000"), title = "Backtest Start Time", type = input.time)
USE_ENDTIME = input(false,title="Define backtest end-time (If false, will test up to most recent candle)")
backtest_timeframe_end = input(defval = timestamp("19 Apr 2021 19:30 +0000"), title = "Backtest End Time (if checked above)", type = input.time)
within_timeframe = true
// }

// Indicator: BOLL bands {
BOLL_length = 20//input(20,title="Periods to lookback for BOLL and ATR calc. (default 20)")
BOLL_src = close
BOLL_center = sma(BOLL_src, BOLL_length)
BOLL_sDEV_x2 = 2 * stdev(BOLL_src, BOLL_length)
BOLL_upper = BOLL_center + BOLL_sDEV_x2
BOLL_lower = BOLL_center - BOLL_sDEV_x2
plot(BOLL_center, "Basis", color=#872323, offset = 0)
BOLL_p1 = plot(BOLL_upper, "Upper", color=color.navy, offset = 0, transp=50)
BOLL_p2 = plot(BOLL_lower, "Lower", color=color.navy, offset = 0, transp=50)
fill(BOLL_p1, BOLL_p2, title = "Background", color=#198787, transp=85)
// }
// ATR and volatility Indicator {
ATR_x2 = atr(BOLL_length) * 2 // multiplier aligns with BOLL
avg_volat = sma(ATR_x2, BOLL_length)
//}

// Trailing stop loss {
var entry_price = float(0)
var trailing_SL_buffer = float(0)
var stop_loss_price = float(0)
trail_profit_line_color = color.green
UPDATE_ATR_TSL = false
if strategy.position_size == 0 or not within_timeframe // make TSL line less visible
    trail_profit_line_color := color.black
    stop_loss_price := close - trailing_SL_buffer
else if strategy.position_size > 0
    if UPDATE_ATR_TSL and ATR_x2 < trailing_SL_buffer
        trailing_SL_buffer := ATR_x2
    stop_loss_price := max(stop_loss_price, close[1] - trailing_SL_buffer)
plot(stop_loss_price,color=trail_profit_line_color)
// }


IGNORE_BOLL_SHAPE = false//input(false,title="Ignore BOLL (vs ATR) during entry (experimental)")
IGNORE_VOLATILITY = false///input(false,title="Ignore average ATR during entry (experimental)")
// Main:
if within_timeframe
    // ENTRY:
    if (ATR_x2 > BOLL_sDEV_x2 or IGNORE_BOLL_SHAPE) and (avg_volat < avg_volat[1] or IGNORE_VOLATILITY)
        if strategy.position_size == 0
            entry_price := close
            trailing_SL_buffer := ATR_x2
            stop_loss_price := close - ATR_x2
            strategy.entry("Long",strategy.long, comment="enter")
        if strategy.position_size > 0
            strategy.entry("Long",strategy.long, comment="+")

    // EXIT:
    if strategy.position_size > 0
        if low <= stop_loss_price
            if close > entry_price
                strategy.close("Long", comment="take profit")
            else if low <= entry_price
                strategy.close("Long", comment="stop loss")
    
            if strategy.position_size == 0
                entry_price := 0
                

Mehr