Die RSI-Breakout-Strategie ist eine quantitative Handelsstrategie

Schriftsteller:ChaoZhang, Datum: 22.12.2023
Tags:

img

Übersicht

Die RSI-Breakout-Strategie ist eine quantitative Handelsstrategie, die auf dem Relative Strength Index (RSI) basiert. Die Strategie erzeugt Handelssignale, wenn der RSI die vorgegebenen Überkauf- und Überverkaufsschwellenwerte durchbricht, d.h. wenn der RSI unter 30 liegt, geht er lang und wenn der RSI über 70 liegt, geht er kurz.

Strategie Logik

Der Kerngedanke der RSI-Breakout-Strategie besteht darin, den RSI-Indikator zu verwenden, um Überkauf- und Überverkaufszustände auf dem Markt zu bestimmen. Der RSI berechnet das Verhältnis von durchschnittlichen Preisgewinnen und -verlusten über einen Zeitraum, um die jüngste Stärke oder Schwäche einer Aktie widerzuspiegeln. Im Allgemeinen gilt ein RSI unter 30 als überverkauft und ein RSI über 70 als überkauft.

Die Strategie legt zunächst die überverkauften und überkauften Schwellenwerte für den RSI fest, mit Standardwerten von 30 und 70. Sie überwacht dann die RSI-Linie in Echtzeit. Wenn der RSI von oben nach unten unter die Schwelle von 70 überschreitet, wird ein Verkaufssignal generiert. Dies zeigt an, dass der Markt in die überkaufte Zone eingetreten ist und wahrscheinlich nach unten umkehren wird, so dass eine Short-Position eingenommen wird. Umgekehrt wird ein Kaufsignal generiert, wenn der RSI über die 30-Schwelle bricht, was darauf hinweist, dass der überverkaufte Markt wahrscheinlich wieder nach oben springt, so dass eine Long-Position eingenommen wird.

Auf diese Weise versucht die Strategie, Preisumkehrpunkte bei Aktienschwankungen zu erfassen und die Positionen entsprechend so anzupassen, dass sie niedrig kaufen und hoch verkaufen.

Vorteile

Die RSI-Breakout-Strategie hat folgende Vorteile:

  1. Einfache und klare Handelssignale. Der RSI-Indikator ist einfach zu berechnen und zu interpretieren, indem man nur beobachtet, ob die Indikatorlinie die Schwellenwerte überschreitet. Trades können sofort durchgeführt werden, wenn Signale ohne komplexe Regeln auftreten.

  2. Der RSI-Indikator ist vollständig automatisierbar und bietet gute Backtest-Ergebnisse. Die Trades werden ohne menschliches Eingreifen durch den RSI-Indikator generiert.

  3. Die RSI-Parameter können flexibel angepasst werden, wie z. B. die Überkauf-/Überverkaufsschwellen, um unterschiedlichen Aktien- und Marktdynamiken gerecht zu werden.

Risiken

Die RSI-Breakout-Strategie birgt auch einige Risiken:

  1. Die häufige Überschneidung der Schwellenwerte des Indikators kann zu übermäßigen ineffektiven Trades führen, die einen stetigen Gewinn beeinträchtigen.

  2. Es gibt keine Trendbeurteilung. Der RSI erzeugt nur Signale, die auf Überkauf-/Überverkaufsniveaus basieren, ohne den Gesamttrend gut zu beurteilen. Die Strategie neigt dazu, in unruhigen Märkten stecken zu bleiben. Trendfilter können hinzugefügt werden, um Gegentrend-Trades zu vermeiden.

  3. Der RSI zeigt häufig eine bullische Divergenz, wenn der Preis weiter steigt, während der RSI tendenziell sinkt.

Verbesserungsbereiche

Die RSI-Breakout-Strategie kann wie folgt verbessert werden:

  1. Einbeziehen mehrerer Indikatoren, um die Einschränkungen des RSI zu überwinden, z. B. gleitende Durchschnitte zur Bestimmung des Markttrends, Stärkenindikatoren und Volumenfilter zur Bestätigung von Signalen.

  2. Optimieren Sie die RSI-Parameter für eine höhere Stabilität, einschließlich der Einstellung von Überkauf-/Überverkaufsschwellen, Einstellung des Signaldauerfilters usw. durch strenge Tests. Dies filtert ineffektive Signale.

  3. Implementieren Sie Stop Loss und Take Profit, um Risiken zu kontrollieren. Zum Beispiel setzen Sie Prozentsatz- oder Punktstopps. Vermeiden Sie übergroße Einzelhandelsverluste auf den Gesamtgewinn. Berücksichtigen Sie auch Trend- und technische Punkte für die Gewinnentnahme.

Schlussfolgerung

Die RSI-Breakout-Strategie ist eine quantitative Strategie mit mittlerer Umkehrung, die auf überkauften und überverkauften Signalen basiert. Sie hat einfache und klare Signale, vollständige Automatisierungsmöglichkeiten und hohe Anpassbarkeit, leidet aber unter Whipsaw- und Drawdown-Risiken. Durch die Optimierung mit Indikatorkombinen und Risikokontrollen kann sie auf eine stabile Strategie abgestimmt werden.


/*backtest
start: 2023-11-21 00:00:00
end: 2023-12-21 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Bunghole 2021

strategy(title="My New Strategy", initial_capital = 100000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0, currency = 'USD', overlay=true)

//// Stoploss and Take Profit Parameters
// Enable Long Strategy
enable_long_strategy = input(true, title="Enable Long Strategy", group="SL/TP For Long Strategy",inline="1")
long_stoploss_value = input(defval=50, title='Stoploss %', type=input.float, minval=0.1, group="SL/TP For Long Strategy",inline="2")
long_stoploss_percentage = (close * (long_stoploss_value / 100)) / syminfo.mintick
long_takeprofit_value = input(defval=50, title='Take Profit %', type=input.float, minval=0.1, group="SL/TP For Long Strategy",inline="2")
long_takeprofit_percentage = (close * (long_takeprofit_value / 100)) / syminfo.mintick

// Enable Short Strategy
enable_short_strategy = input(true, title="Enable Short Strategy", group="SL/TP For Short Strategy",inline="3")
short_stoploss_value = input(defval=50, title='Stoploss %', type=input.float, minval=0.1, group= "SL/TP For Short Strategy",inline="4")
short_stoploss_percentage = (close * (short_stoploss_value / 100)) / syminfo.mintick
short_takeprofit_value = input(defval=50, title='Take Profit %', type=input.float, minval=0.1, group="SL/TP For Short Strategy",inline="4")
short_takeprofit_percentage = (close * (short_takeprofit_value / 100)) / syminfo.mintick

// Plot Stoploss & Take Profit Levels
long_stoploss_price = strategy.position_avg_price * (1 - long_stoploss_value/100)
long_takeprofit_price = strategy.position_avg_price * (1 + long_takeprofit_value/100)
short_stoploss_price = strategy.position_avg_price * (1 + short_stoploss_value/100)
short_takeprofit_price = strategy.position_avg_price * (1 - short_takeprofit_value/100)
plot(enable_long_strategy and not enable_short_strategy ? long_stoploss_price: na, color=#ff0000, style=plot.style_linebr, linewidth=2, title="Long SL Level")
plot(enable_long_strategy and not enable_short_strategy ? long_takeprofit_price: na, color=#008000, style=plot.style_linebr, linewidth=2, title="Long TP Level")
plot(enable_short_strategy and not enable_long_strategy ? short_stoploss_price: na, color=#ff0000, style=plot.style_linebr, linewidth=2, title="Short SL Level")
plot(enable_short_strategy and not enable_long_strategy ? short_takeprofit_price: na, color=#008000, style=plot.style_linebr, linewidth=2, title="Short TP Level")

// Date Range
start_date = input(title="Start Date", type=input.integer, defval=1, minval=1, maxval=31, group="Date Range")
start_month = input(title="Start Month", type=input.integer, defval=1, minval=1, maxval=12, group="Date Range")
start_year = input(title="Start Year", type=input.integer, defval=1804, minval=1800, maxval=3000, group="Date Range")
end_date = input(title="End Date", type=input.integer, defval=1, minval=1, maxval=3, group="Date Range")
end_month = input(title="End Month", type=input.integer, defval=1, minval=1, maxval=12, group="Date Range")
end_year = input(title="End Year", type=input.integer, defval=2077, minval=1800, maxval=3000, group="Date Range")
in_date_range = (time >= timestamp(syminfo.timezone, start_year, start_month, start_date, 0, 0)) and (time < timestamp(syminfo.timezone, end_year, end_month, end_date, 0, 0))

//// Inputs   **This is where you enter your indicators for your strategy. For example, I added the RSI indicator.**
//RSI
rsi = rsi(close, 14)
rsi_over_sold = rsi < 30
rsi_over_bought = rsi > 70


//// Strategy  **This is where you create your strategy. For example, We have or buy and sell signals.**
// Creating Long and Short Strategy
buy_signal = rsi_over_sold
sell_signal = rsi_over_bought

// Long Strategy
if buy_signal and in_date_range and enable_long_strategy == true
    strategy.entry("Long", true, when=buy_signal, alert_message="Open Long Position")
    strategy.exit("Long  SL/TP", from_entry="Long", loss=long_stoploss_percentage, profit=long_takeprofit_percentage, alert_message="Your Long SL/TP Limit As Been Triggered.")
    strategy.close("Long", when=sell_signal, alert_message="Close Long Position")
    
// Short Strategy
if sell_signal and in_date_range and enable_short_strategy == true
    strategy.entry("Short", false, when = sell_signal, alert_message="Open Short Position")
    strategy.exit("Short SL/TP", from_entry="Short", loss=short_stoploss_percentage, profit=short_takeprofit_percentage, alert_message="Your Short SL/TP Limit As Been Triggered.")
    strategy.close("Short", when=buy_signal, alert_message="Close Short Position")


Mehr