Bollinger Bands Trendumkehrstrategie

Schriftsteller:ChaoZhang, Datum: 2023-11-01 11:29:34
Tags:

img

Übersicht

Diese Strategie nutzt Bollinger Bands und Moving Average, um LANG oder SHORT zu gehen, wenn sich der Preis den oberen oder unteren Bands nähert.

Logik

Die Strategie identifiziert zwei Einstiegssignale:

  1. Langsignal: Wenn der Schlusskurs das untere Band erreicht, während er über der EMA-Linie liegt, war die vorherige Kerze bärisch und die aktuelle Kerze ist bullisch.

  2. Kurzsignal: Wenn der Schlusskurs unterhalb der EMA-Linie das obere Band erreicht, war die vorherige Kerze bullisch und die aktuelle Kerze ist bärisch.

Der Stop-Loss verwendet einen festen Stop-Loss. Der Stop-Loss-Level wird auf den Einstiegspreis plus/minus Risiko/Rendite multipliziert mit dem Abstand zwischen Einstiegspreis und Gewinnniveau festgelegt.

Der Take-Profit verwendet dynamische Take-Profits. Der Long-Take-Profit wird am unteren Band gesetzt. Der Short-Take-Profit wird am oberen Band gesetzt.

Vorteile

  1. Kombiniert die Stärken sowohl der Trendfolgungs- als auch der Mittelumkehrstrategien, ist gut auf den Märkten mit Bandbreite.

  2. Benutzt Bollinger-Bänder, um überkaufte und überverkaufte Niveaus zu identifizieren und die Genauigkeit der Umkehrsignale zu verbessern.

  3. Ein fester Stop-Loss erleichtert das Risikomanagement.

  4. Dynamische Gewinnentnahme ermöglicht die Maximierung der Gewinne.

Risiken

  1. Ausbrechungsstrategien sind anfällig für Stoppläufe, man muss sich vor falschen Ausbrüchen hüten.

  2. Häufige Stop-Loss-Trigger, wenn der Markt zu unruhig ist.

  3. Der feste Stop-Loss ist nicht an die Marktvolatilität angepasst, kann zu breit oder zu eng sein.

  4. Eine schlechte Abstimmung der Bollinger-Bänder kann zu mittelmäßigen Ergebnissen führen.

Erweiterung

  1. Einbeziehen Sie einen RSI-Indikator, um Eintrittssignale zu filtern. Zum Beispiel gehen Sie nur lang, wenn der RSI über 50 ist, und nur kurz, wenn der RSI unter 50 ist. Dies vermeidet schlechte Signale.

  2. Implementieren Sie einen anpassungsfähigen Stoppverlust, der die Stoppdistanz anhand der Volatilität anpasst.

  3. Optimieren Sie die Bollinger Bands-Parameter, um die besten Parameterkombinationen zu finden.

  4. Test verschiedene EMA-Perioden, um den Support/Widerstandseffekt der EMA zu verstärken.

Zusammenfassung

Die Strategie kombiniert Trend und Umkehrung und erreicht überkaufte/überverkaufte Level, die von Bollinger Bands identifiziert werden. Sie maximiert die Gewinne durch dynamische Take-Profit. Performs gut während der Bereichsgebundenen Märkte. Sei vorsichtig mit Stop-Runs. Feine Abstimmung Parameter zur Optimierung der Leistung. Insgesamt eine praktische und effektive Strategie.


/*backtest
start: 2023-10-24 00:00:00
end: 2023-10-31 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

// Welcome to yet another script. This script was a lot easier since I was stuck for so long on the Donchian Channels one and learned so much from that one that I could use in this one
// This code should be a lot cleaner compared to the Donchian Channels, but we'll leave that up to the pro's
// This strategy has two entry signals, long = when price hits lower band, while above EMA, previous candle was bearish and current candle is bullish
// Short = when price hits upper band, while below EMA, previous candle was bullish and current candle is bearish
// Take profits are the opposite side's band(lower band for long signals, upper band for short signals). This means our take profit price will change per bar
// Our stop loss doesn't change, it's the difference between entry price and the take profit target divided by the input risk reward
// At the time of writing this, I could probably calculate that much easier by simply multiplying the opposite band by the input risk reward ratio
// Since I want to get this script out and working on the next one, I won't clean that up, I'm sorry
// strategy(shorttitle="BB Trending Reverse Strategy", title="Bollinger Bands Trending Reverse Strategy", overlay=true, default_qty_type = strategy.cash, default_qty_value = 150, initial_capital = 1000, currency = currency.USD, commission_type = "percent", commission_value = 0.036)

// The built-in Bollinger Band indicator inputs and variables, added some inputs of my own and organised the code
length              = input(20, minval=1)
src                 = input(close, title="Source")
mult                = input(2.0, minval=0.001, maxval=50, title="StdDev")
emaInput            = input(title = "EMA Input", type = input.integer, defval = 200, minval = 10, maxval = 400, step = 1)
riskreward          = input(title = "Risk/Reward Ratio", type = input.float, defval = 1.50, minval = 0.01, maxval = 100, step = 0.01)
offset              = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)
basis               = sma(src, length)
dev                 = mult * stdev(src, length)
upper               = basis + dev
lower               = basis - dev
ema                 = ema(close, emaInput)

// These are our conditions as explained above
entryLong           = low[1] <= lower[1] and low <= lower and low > ema
entryShort          = high[1] >= upper[1] and high >= upper and high < ema
reversecandleLong   = close > open and close[1] < open[1]
reversecandleShort  = close < open and close[1] > open[1]
var stopLong        = 0.0
var stopShort       = 0.0

// These are our entry signals, notice how the stop condition is within the if statement while the strategy.exit is outside of the if statement, this way the take profit targets trails up or down depending on what the price does
if reversecandleLong and entryLong and strategy.position_size == 0
    stopLong := (((close / upper - 1) * riskreward + 1) * close)
    strategy.entry("Long Entry", strategy.long, comment = "Long Entry")
    
strategy.exit("Exit Long", "Long Entry", limit = upper, stop = stopLong, comment = "Exit Long")

if reversecandleShort and entryShort and strategy.position_size == 0
    stopShort := (((close / lower - 1) / riskreward + 1) * close)
    strategy.entry("Short Entry", strategy.short, comment = "Short Entry")

strategy.exit("Exit Short", "Short Entry", limit = lower, stop = stopShort, comment = "Exit Short")


// The built-in Bollinger Band plots
plot(basis, "Basis", color=#872323, offset = offset)
p1 = plot(upper, "Upper", color=color.teal, offset = offset)
p2 = plot(lower, "Lower", color=color.teal, offset = offset)
fill(p1, p2, title = "Background", color=#198787, transp=95)
plot(ema, color=color.red)

// These plots are to check the stoplosses, they can  make a mess of your chart so only use these if you want to make sure these work
// plot(stopLong)
// plot(stopShort)

Mehr