RSI Zwei-Wege-Ausbruchsstrategie


Erstellungsdatum: 2023-11-08 12:11:03 zuletzt geändert: 2023-11-08 12:11:03
Kopie: 0 Klicks: 669
1
konzentrieren Sie sich auf
1617
Anhänger

RSI Zwei-Wege-Ausbruchsstrategie

Überblick

Die Strategie basiert auf der Entwicklung eines relativ starken (RSI) Indikators und nutzt die Überkauf-Überverkauf-Prinzipien des RSI-Indikators für einen bidirektionalen Durchbruch. Eine Überkauf-Überkauf-Operation, wenn der RSI-Indikator die festgelegte Überkauf-Linie überschreitet, ist eine typische Umkehr-Handelsstrategie, wenn der RSI-Indikator die festgelegte Überverkauf-Linie unterbricht.

Strategieprinzip

  1. Der RSI-Indikator wird anhand von Benutzereingaben berechnet, einschließlich der Länge des RSI-Zyklus, der Überkauf- und der Überverkauf-Termine.

  2. Die Position der Überkauf- bzw. der Überverkaufszone wird anhand des positiven Verhältnisses der RSI-Kurve zur Überkauf- bzw. zur Überverkaufszone beurteilt.

  3. Wenn der RSI-Indikator von der Überverkaufszone aus die entsprechende Wertminderungsgrenze durchbricht, wird die Position in die entgegengesetzte Richtung eröffnet. Zum Beispiel, wenn die Überkaufszone von der Überkaufszone aus über die Überkaufszone hinausgeht, wird angenommen, dass sich der Kurs umgekehrt hat, und dann wird eine Position aufgenommen.

  4. Nach der Eröffnung der Position, setzen Sie eine Stop-Loss-Stop-Linie. Verfolgen Sie die Stop-Loss-Stop-Situation, und wenn die Bedingungen erfüllt sind, legen Sie die Position aus.

  5. Die Strategie bietet auch die Option, die EMA als Filter zu nutzen. Der Kurs kann nur dann eine Position eröffnen, wenn der RSI ein weiteres Short-Signal auslöst und die EMA durchbricht.

  6. Die Strategie bietet außerdem die Möglichkeit, nur in einem bestimmten Handelszeitraum zu handeln. Der Benutzer kann den Handel nur in einem bestimmten Zeitraum einrichten und nach einer bestimmten Zeit den Handel beenden.

Analyse der Stärken

  • Der RSI-Indikator ist ein klassischer Durchbruch, der die Rückmessung verbessert.
  • Die Überkauf- und Überverkaufsmarge kann flexibel für verschiedene Sorten eingestellt werden.
  • Sie können die EMA-Filtersignale verwenden, um häufige Platzierungen aufgrund von kleinen Erschütterungen zu vermeiden.
  • Unterstützt wird die Stop-Loss-Stop-Funktion, die die Strategie-Stabilität verbessert.
  • Unterstützung bei der Einrichtung von spezifischen Handelszeiten, um unpassende Handelszeiten zu vermeiden.
  • Es wird unterstützt, mehr Devisen- und Zwei-Wege-Handel zu betreiben, um die zweiseitigen Schwankungen der Marktlage zu nutzen.

Risikoanalyse

  • Der RSI-Indikator ist leicht abweichend und kann zu falschen Handelssignalen führen. Es ist notwendig, Trend- und Linienbeurteilungen zu kombinieren.
  • Überkaufen und überverkaufen können zu häufigen oder verpassten Handelschancen führen.
  • Eine falsche Einstellung des Stop-Loss-Stopps kann zu einer zu radikalen oder konservativen Strategie führen.
  • Eine falsche Einstellung des EMA-Filters kann auch dazu führen, dass eine Handelsgelegenheit verpasst wird oder ein gültiges Signal ausgefiltert wird.

Risikolösung:

  • Optimierung der RSI-Parameter und Anpassung der Parameter an die verschiedenen Sorten.
  • Es ist wichtig, dass die Beurteilung der Situation in Kombination mit Trendindikatoren abweicht, um falsche Signale zu vermeiden.
  • Test und Optimierung von Stop-Loss-Stop-Parametern, um optimale Parameter zu finden
  • Test und Optimierung der EMA-Parameter zur Suche nach dem optimalen Filterlevel.

Richtung der Strategieoptimierung

Diese Strategie kann in folgenden Bereichen optimiert werden:

  1. Optimieren Sie die RSI-Parameter, um die beste Kombination aus verschiedenen Varianten zu finden. Sie können die optimale Überkauf-Überverkauf-Schwelle durch Rückverfolgung finden.

  2. Versuchen Sie, verschiedene Indikatoren zu ersetzen oder mit dem RSI zu kombinieren, um ein stärkeres Urteilssignal zu bilden. Zum Beispiel MACD, KD, Brin-Band usw.

  3. Optimierung von Stop-Loss-Strategien zur Steigerung der Strategie-Stabilität. Die Strategie kann entweder mit einem freien Stop-Loss basierend auf der Marktfluktuation eingestellt werden oder mit einer Stop-Loss-Funktion, die den Verlust verfolgt.

  4. Optimieren Sie die EMA-Filterparameter oder testen Sie andere Indikatorfilter, um eine weitere Verschleierung zu vermeiden.

  5. Hinzufügen von Modulen zur Trendbeurteilung und Vermeidung von umgekehrten Kursen oder umgekehrten Kursen

  6. Verschiedene Parameter für die Zeiträume des Handels werden getestet, um zu bestimmen, welche für die Strategie geeignet sind und welche vermieden werden sollten.

Zusammenfassen

Die RSI-Doppel-Breakout-Strategie hat eine klare Gesamtkonzeption und nutzt das klassische RSI-Überkauf-Überverkauf-Prinzip für den Umkehrhandel. Sie kann sowohl die Umkehrmöglichkeiten der Überkauf-Überverkaufszone nutzen als auch das Risiko durch EMA-Filterung und Stop-Loss-Stop kontrollieren. Durch die Optimierung von Parametern und Moduloptimierung kann ein großer Raum für eine stabilere und zuverlässige Umkehrstrategie geschaffen werden.

Strategiequellcode
/*backtest
start: 2023-10-08 00:00:00
end: 2023-11-07 00:00:00
period: 1h
basePeriod: 15m
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/
// © REV0LUTI0N

//@version=4

strategy("RSI Strategy", overlay=true, initial_capital = 10000, default_qty_value = 10000, default_qty_type = strategy.cash)

// Strategy Backtesting
startDate  = input(timestamp("2021-10-01T00:00:00"), type = input.time, title='Backtesting Start Date')
finishDate = input(timestamp("9999-12-31T00:00:00"), type = input.time, title='Backtesting End Date')

time_cond  = true
// Strategy

Length = input(12, minval=1)
src = input(close, title="Source")
overbought = input(70, minval=1)
oversold = input(30, minval=1)
xRSI = rsi(src, Length)
    
rsinormal = input(true, title="Overbought Go Long & Oversold Go Short")
rsiflipped = input(false, title="Overbought Go Short & Oversold Go Long")

// EMA Filter
noemafilter = input(true, title="No EMA Filter")
useemafilter = input(false, title="Use EMA Filter")
ema_length = input(defval=15, minval=1, title="EMA Length")
emasrc = input(close, title="Source")
ema = ema(emasrc, ema_length)
plot(ema, "EMA", style=plot.style_linebr, color=#cad850, linewidth=2)

//Time Restriction Settings
startendtime = input("", title='Time Frame To Enter Trades')
enableclose = input(false, title='Enable Close Trade At End Of Time Frame')
timetobuy = (time(timeframe.period, startendtime))
timetoclose = na(time(timeframe.period, startendtime))

// Stop Loss & Take Profit % Based
enablesl = input(false, title='Enable Stop Loss')
enabletp = input(false, title='Enable Take Profit')
stopTick = input(5.0, title='Stop Loss %', type=input.float, step=0.1) / 100
takeTick = input(10.0, title='Take Profit %', type=input.float, step=0.1) / 100

longStop = strategy.position_avg_price * (1 - stopTick)
shortStop = strategy.position_avg_price * (1 + stopTick)
shortTake = strategy.position_avg_price * (1 - takeTick)
longTake = strategy.position_avg_price * (1 + takeTick)

plot(strategy.position_size > 0 and enablesl ? longStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Long Fixed SL")
plot(strategy.position_size < 0 and enablesl ? shortStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Short Fixed SL")
plot(strategy.position_size > 0 and enabletp ? longTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Long Take Profit")
plot(strategy.position_size < 0 and enabletp ? shortTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Short Take Profit")

// Alert messages
message_enterlong  = input("", title="Long Entry message")
message_entershort = input("", title="Short Entry message")
message_closelong = input("", title="Close Long message")
message_closeshort = input("", title="Close Short message")

// Strategy Execution
if (xRSI > overbought and close > ema and time_cond and timetobuy and rsinormal and useemafilter)
    strategy.entry("Long", strategy.long, alert_message = message_enterlong)
    
if (xRSI < oversold and close < ema and time_cond and timetobuy and rsinormal and useemafilter)
    strategy.entry("Short", strategy.short, alert_message = message_entershort)
    
if (xRSI < oversold and close > ema and time_cond and timetobuy and rsiflipped and useemafilter)
    strategy.entry("Long", strategy.long, alert_message = message_enterlong)
    
if (xRSI > overbought and close < ema and time_cond and timetobuy and rsiflipped and useemafilter)
    strategy.entry("Short", strategy.short, alert_message = message_entershort)
    
if (xRSI > overbought and time_cond and timetobuy and rsinormal and noemafilter)
    strategy.entry("Long", strategy.long, alert_message = message_enterlong)
    
if (xRSI < oversold and time_cond and timetobuy and rsinormal and noemafilter)
    strategy.entry("Short", strategy.short, alert_message = message_entershort)
    
if (xRSI < oversold and time_cond and timetobuy and rsiflipped and noemafilter)
    strategy.entry("Long", strategy.long, alert_message = message_enterlong)
    
if (xRSI > overbought and time_cond and timetobuy and rsiflipped and noemafilter)
    strategy.entry("Short", strategy.short, alert_message = message_entershort)
    
if strategy.position_size > 0 and timetoclose and enableclose
    strategy.close_all(alert_message = message_closelong)
if strategy.position_size < 0 and timetoclose and enableclose
    strategy.close_all(alert_message = message_closeshort)
    
if strategy.position_size > 0 and enablesl and time_cond
    strategy.exit(id="Close Long", stop=longStop, limit=longTake, alert_message = message_closelong)
if strategy.position_size < 0 and enablesl and time_cond
    strategy.exit(id="Close Short", stop=shortStop, limit=shortTake, alert_message = message_closeshort)
    
if strategy.position_size > 0 and enabletp and time_cond
    strategy.exit(id="Close Long", stop=longStop, limit=longTake, alert_message = message_closelong)
if strategy.position_size < 0 and enabletp and time_cond
    strategy.exit(id="Close Short", stop=shortStop, limit=shortTake, alert_message = message_closeshort)