Momentum-Oszillator Bollinger Band RSI Handelsstrategie

Schriftsteller:ChaoZhang, Datum: 2023-09-18 14:07:51
Tags:

Übersicht

Diese Strategie kombiniert Bollinger Bands und den Relative Strength Index (RSI) Indikator, um die Preisvolatilität vorherzusagen und optimale Einstiegspunkte zu bestimmen. Die Logik ist einfach - wir beobachten die Schlusskosten, die das Bollinger-Unterband berühren, woraufhin es zwei mögliche Szenarien gibt: Entweder springt der Preis vom unteren Bollinger-Band zurück oder er fällt weiter. Um die Kursbewegung zu bestätigen, verwenden wir einen zweiten Indikator, den RSI, um den Trend weiter zu untersuchen. Zum Beispiel, wenn der Preis das unteren Bollinger-Band erreicht, aber der RSI-Wert nicht im Überverkaufszone liegt, können wir schließen, dass der Preis weiter sinken wird. Wenn der RSI-Wert überverkauft ist, können wir diesen Bereich als Einstiegspunkt verwenden.

Ein Stop-Loss ist notwendig, um zu vermeiden, zu viel Kapital zu verlieren, wenn der RSI zu lange im Überverkaufszone verweilt.

Der beste Take-Profit-Bereich ist, wenn der Preis wieder über das mittlere Bollinger-Band/obere Bollinger-Band zurückspringt oder wenn der RSI überkauft ist, je nachdem, was zuerst eintritt.

Langer Eintrag:

RSI < 30 und Schlusskurs < Bollinger-Unterband

Weite Ausfahrt:

RSI > 70

Strategie Logik

Die Strategie berechnet zuerst den RSI-Indikator und setzt obere/untere Grenzen, um überkaufte/überverkaufte Niveaus zu bestimmen. Sie berechnet dann die Bollinger-Mitte, obere und untere Bands. Wenn der Schlusskurs das untere Band berührt und der RSI unter 30 liegt, gehen Sie lang. Wenn der RSI über 70 liegt, schließen Sie die Position.

Bei Eintritt in die Long-Runde setzen Sie Stop-Loss- und Take-Profit-Punkte ein. Der Take-Profit wird zum Einstiegspreis * (1 + fester Prozentsatz), der Stop-Loss zum Einstiegspreis * (1 - fester Prozentsatz) festgelegt.

Dies ermöglicht es uns, beim niedrigen RSI am unteren Bollinger-Band zu kaufen und beim hohen RSI zu verkaufen, um von der Umkehrung zu profitieren.

Analyse der Vorteile

  • Bollinger-Bänder bestimmen Umkehrpunkte genau
  • RSI filtert falsche Ausbrüche aus und sorgt für einen zuverlässigen Eintrag
  • Stop-Loss und Take-Profit-Verwaltung von Handelsrisiken
  • Umfangreiche Backtests und Parameteroptimierung sorgen für eine stabile Rentabilität

Risikoanalyse

  • Bollinger-Bänder prognostizieren nicht perfekt Umkehrungen, einige Fehler treten auf
  • RSI kann auch falsche Signale geben
  • Stopp-Loss zu nahe kann keine Position halten, zu locker erhöht das Risiko

Die Risiken können gemildert werden, indem die Bollinger-Parameter angepasst, andere Indikatoren verwendet und der Stop-Loss angemessen vergrößert wird.

Optimierungsrichtlinien

  • Überlegen Sie die Kombination mit anderen Indikatoren wie KD, MACD, um Einträge zu filtern
  • Dynamische Anpassung der Stop-Loss-/Take-Profit-Prozentsätze
  • Optimierung der Bollinger-Parameter
  • Versuchsrobustheit für verschiedene Produkte

Schlussfolgerung

Das Gesamtrisiko/Rendite-Profil dieser Strategie ist ausgewogen und die Backtest-Ergebnisse sind gut. Weitere Verbesserungen können durch Parameteroptimierung und Indikatorverbesserungen erzielt werden. Das auf Bollinger Bands basierende Umkehrhandelskonzept ist einfach und zuverlässig und erfordert weitere Forschung und Verfeinerung.

[/trans]


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

//@version=4
//strategy(title="Bollinger Band with RSI", shorttitle="BB&RSI", format=format.price, precision=2, pyramiding=50, initial_capital=10000, calc_on_order_fills=false, calc_on_every_tick=true, default_qty_type=strategy.cash, default_qty_value=1000, currency="USD")
len = input(14, minval=1, title="Length")
src = input(close, "Source", type = input.source)
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
plot(rsi, "RSI", color=#8E1599)
band1 = hline(70, "Upper Band", color=#C0C0C0)
band0 = hline(30, "Lower Band", color=#C0C0C0)
fill(band1, band0, color=#9915FF, transp=90, title="Background")

length_bb = input(20,title="BB Length", minval=1)
mult = input(2.0, minval=0.001, maxval=50, title="BB StdDev")
basis = sma(src, length_bb)
dev = mult * stdev(src, length_bb)
upper = basis + dev
lower = basis - dev
offset = input(0, "BB Offset", type = input.integer, minval = -500, maxval = 500)


Plot_PnL = input(title="Plot Cummulative PnL", type=input.bool, defval=false)
Plot_Pos = input(title="Plot Current Position Size", type=input.bool, defval=false)

long_tp_inp = input(10, title='Long Take Profit %', step=0.1)/100
long_sl_inp = input(25, title='Long Stop Loss %', step=0.1)/100
// Take profit/stop loss
long_take_level = strategy.position_avg_price * (1 + long_tp_inp)
long_stop_level = strategy.position_avg_price * (1 - long_sl_inp)

entry_long = rsi < 30 and src < lower
exit_long = rsi > 70

plotshape(entry_long, style=shape.labelup, color=color.green,  location=location.bottom, text="L", textcolor=color.white, title="LONG_ORDER")
plotshape(exit_long, style=shape.labeldown, color=color.red,  location=location.top, text="S", textcolor=color.white, title="SHORT_ORDER")

strategy.entry("Long",true,when=entry_long)    
strategy.exit("TP/SL","Long", limit=long_take_level, stop=long_stop_level)
strategy.close("Long", when=exit_long, comment="Exit")
plot(Plot_PnL ? strategy.equity-strategy.initial_capital : na, title="PnL", color=color.red)
plot(Plot_Pos ? strategy.position_size : na, title="open_position", color=color.fuchsia)


Mehr