Die RSI-Impulsumkehrstrategie identifiziert Überkauf- und Überverkaufszustände, indem sie RSI-Indikatoren und Candlestick-Body-Richtungen für den Umkehrhandel kombiniert.
Die Strategie wird hauptsächlich durch folgende Teile umgesetzt:
Konnors RSI-Indikator
Berechnet konventionelle RSI, RSI Win Ratio und RSI Pariser, um Connors RSI als Durchschnitt zu erhalten.
Schneller RSI-Indikator
Verwendet Preisänderungen, um schnelle RSI zu berechnen, die ultra-kurzfristige Zyklen widerspiegeln.
Leuchterkörperfilter
Erfordert einen bullischen Körper für lange und einen bearischen Körper für kurze, um falsche Ausbrüche zu verhindern.
Lange und kurze Konditionen
Gehen Sie lang, wenn Connors RSI unter 20 und schnell RSI unter 25 mit bullish Körper.
Gehen Sie kurz, wenn Connors RSI über 80 und schnell RSI über 75 mit bärischem Körper.
Stop-Loss-Ausgang
Verlässt mit Stop-Loss, wenn sich der Leuchterkörper dreht.
Der Connors RSI identifiziert langfristige Trendumkehrpunkte, der schnelle RSI identifiziert kurzfristige Umkehrungen und der Candlestick Body gewährleistet die Gültigkeit von Ausbrüchen.
Zu den Vorteilen dieser Strategie gehören:
Kombination von langfristigen und kurzfristigen Indikatoren
Connors RSI spiegelt langfristige Zyklen und schneller RSI spiegelt kurzfristige Zyklen wider, wobei beide kombiniert werden können, um Umkehrpunkte genau zu erkennen.
Leuchterkörperfilter
Der Handel nur mit Körper-Breakouts kann Verluste durch falsche Breakouts reduzieren.
Einstellbare Parameter
RSI-Parameter, Handelsprodukte und Handelszeitrahmen können frei an verschiedene Märkte angepasst werden.
Einfach und intuitiv
Der RSI und der Leuchtturm sind grundlegende Indikatoren, leicht verständliche Logik.
Einfach umzusetzen
Benutzt nur eingebaute Indikatoren, erfordert wenig Code und ist einfach zu implementieren.
Die wichtigsten Risiken dieser Strategie sind:
Risiko einer fehlgeschlagenen Umkehrung
Der Preis setzt den ursprünglichen Trend nach dem Umkehrsignal fort, was zu Verlusten führt.
Marktrisiko in unterschiedlicher Höhe
Häufige ineffiziente Signale, die in verschiedenen Märkten ausgelöst werden.
Falsches Ausbruchrisiko
Der Leuchtturmfilter kann falsche Ausbrüche nicht vollständig vermeiden.
Parameterrisiko
Unangemessene RSI-Parameter können Trades verpassen oder mehrere ineffiziente Trades auslösen.
Risiken aufgrund besonderer Marktbedingungen
Die RSI-Indikatoren können unter besonderen Marktbedingungen ausfallen und falsche Signale erzeugen.
Die Strategie kann aus folgenden Gesichtspunkten optimiert werden:
Hinzufügen von Stop-Loss-Mechanismen
Optimieren Sie Stop-Loss-Strategien für vernünftigere Stops und reduzieren Sie Einzelhandelsverluste.
Integration mehrerer Indikatoren
Fügen Sie Filter wie MACD und KD hinzu, um Signale zuverlässiger zu machen.
Wahrscheinlichkeitsfilter hinzufügen
Kombination von Trend- und Unterstützungs-/Widerstandsanalysen, um Geschäfte mit geringer Wahrscheinlichkeit zu vermeiden.
Optimierung der Parameter-Einstellungen
Testparameter auf verschiedenen Produkten und Zeitrahmen, um optimale Werte zu finden.
Vermeiden Sie spezielle Marktbedingungen
Identifizieren und vermeiden Sie den Handel unter besonderen Marktbedingungen, um große Verluste zu vermeiden.
Die RSI-Momentum-Umkehrstrategie identifiziert langfristige und kurzfristige Umkehrungen mit Connors RSI und schnellen RSI, mit Candlestick-Körperfiltern, um die Signalgültigkeit zu erhöhen. Die Vorteile wie Indikatorkombinationen und verstellbare Parameter ermöglichen es, Umkehrungen zu erfassen und gegen den Trend zu handeln, wenn überkauft oder überverkauft.
/*backtest start: 2023-10-07 00:00:00 end: 2023-11-06 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=2 strategy(title = "Noro's Connors RSI Strategy v1.0", shorttitle = "CRSI str 1.0", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 10) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") usemar = input(false, defval = false, title = "Use Martingale") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %") usecrsi = input(true, defval = true, title = "Use CRSI Strategy") usefrsi = input(true, defval = true, title = "Use FRSI Strategy") usemod = input(true, defval = true, title = "CRSI+FRSI Mode") limit = input(25, defval = 25, minval = 1, maxval = 100, title = "RSI limit") usebod = input(true, defval = true, title = "Use Body-filter") usecol = input(true, defval = true, title = "Use Color-filter") fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //CRSI rsilen = 3 streaklen = 2 lookback = 100 rsi = rsi(close,rsilen) upday = close > close[1] ? 1 : 0 downday = close < close[1] ? -1 : 0 upstreak = upday!=0 ? upstreak[1] + upday : 0 downstreak = downday!=0 ? downstreak[1] + downday : 0 streak = upstreak + downstreak streakrsi = rsi(streak,streaklen) roc = close/close[1] - 1 roccount = 0 for i=1 to lookback-1 roccount := roc[i]<roc ? roccount + 1 : roccount crsi = (rsi + streakrsi + roccount) / 3 //Oscilator // rsiplot = plot(crsi, title="RSI", style=line, linewidth=1, color=blue) // band1 = hline(80, title="Upper Line", linestyle=dashed, linewidth=1, color=red) // band0 = hline(20, title="Lower Line", linestyle=dashed, linewidth=1, color=green) // fill(band1, band0, color=purple, transp=90) //Fast RSI fastup = rma(max(change(close), 0), 7) fastdown = rma(-min(change(close), 0), 7) fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown)) //Body Filter nbody = abs(close - open) abody = sma(nbody, 10) body = nbody > abody / 3 or usebod == false //Color Filter bar = close > open ? 1 : close < open ? -1 : 0 gbar = bar == 1 or usecol == false rbar = bar == -1 or usecol == false //Signals up1 = rbar and (strategy.position_size == 0 or close < strategy.position_avg_price) and crsi < limit and body and usecrsi dn1 = gbar and (strategy.position_size == 0 or close > strategy.position_avg_price) and crsi > 100 - limit and body and usecrsi up2 = rbar and (strategy.position_size == 0 or close < strategy.position_avg_price) and fastrsi < limit and body and usefrsi dn2 = gbar and (strategy.position_size == 0 or close > strategy.position_avg_price) and fastrsi > 100 - limit and body and usefrsi exit = ((strategy.position_size > 0 and bar == 1) or (strategy.position_size < 0 and bar == -1)) and body //Trading profit = exit ? ((strategy.position_size > 0 and close > strategy.position_avg_price) or (strategy.position_size < 0 and close < strategy.position_avg_price)) ? 1 : -1 : profit[1] mult = usemar ? exit ? profit == -1 ? mult[1] * 2 : 1 : mult[1] : 1 lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 * mult : lot[1] if ((up1 or up2) and usemod == false) or (up1 and up2 and usemod) if strategy.position_size < 0 strategy.close_all() strategy.entry("Long", strategy.long, needlong == false ? 0 : lot) if ((dn1 or dn2) and usemod == false) or (dn1 and dn2 and usemod) if strategy.position_size > 0 strategy.close_all() strategy.entry("Short", strategy.short, needshort == false ? 0 : lot) if exit strategy.close_all()