RSI-Trendumkehrstrategie


Erstellungsdatum: 2023-10-23 17:04:13 zuletzt geändert: 2023-10-23 17:04:13
Kopie: 0 Klicks: 686
1
konzentrieren Sie sich auf
1617
Anhänger

RSI-Trendumkehrstrategie

Überblick

Die RSI-Trend-Umkehr-Strategie nutzt die RSI-Indikator-Umkehrsignale, um potenzielle Trend-Umkehrpunkte zu ermitteln, und die Strategie kombiniert die Preisumkehr und die RSI-Umkehr, um die falschen Umkehrsignale effektiv zu filtern.

Strategieprinzip

Die Strategie basiert auf einer Kombination aus Rückschlagsignalen des RSI-Indikators und einem Rückschlagsignal des Preises und ist in vier Situationen unterteilt:

  1. Regelmäßige Mehrkopf-Umkehr: Wenn der RSI einen höheren Tiefpunkt bildet (was bedeutet, dass der RSI-Trend von oben nach unten umgekehrt ist), und wenn der Preis einen niedrigeren Tiefpunkt bildet (was bedeutet, dass der Preis von unten nach oben umgekehrt ist), wird ein regelmäßiges Mehrkopf-Umkehrsignal erzeugt.

  2. Verborgene Mehrkopf-Umkehr: Wenn der RSI einen niedrigeren Tiefpunkt bildet (was bedeutet, dass der RSI-Trend von oben nach unten weitergeht), aber der Preis einen höheren Tiefpunkt bildet (was bedeutet, dass der Preistrend von unten nach oben umkehrt), wird ein verstecktes Mehrkopf-Umkehrsignal erzeugt.

  3. Regelmäßige Ballastwende: Wenn der RSI einen niedrigeren Hochpunkt bildet (was bedeutet, dass der RSI-Trend von unten nach oben umgekehrt ist) und der Preis einen höheren Hochpunkt bildet (was bedeutet, dass der Preistrend von oben nach unten umgekehrt ist), wird ein Regelmäßiges Ballastwende-Signal erzeugt.

  4. Hidden Head Reversal: Wenn der RSI einen höheren Hochpunkt bildet (was bedeutet, dass der RSI-Trend von unten nach oben weitergeht), aber der Preis einen niedrigeren Hochpunkt bildet (was bedeutet, dass der Preistrend von oben nach unten umgekehrt wird), wird ein verstecktes Head Reversal Signal erzeugt.

Dies ermöglicht es, Handelssignale in Kombination mit RSI-Rückschlägen und Preisrückschlägen gleichzeitig zu senden, um falsche Signale zu vermeiden, die nur durch RSI-Indikatoren oder nur durch Preisrückschläge verursacht werden, und die Stabilität der Strategie zu erhöhen.

Analyse der Stärken

Die RSI-Trendwende hat folgende Vorteile:

  1. In Kombination mit dem RSI-Indikator und dem Preisumkehrsignal kann ein falsches Umkehrsignal wirksam gefiltert und die Signalqualität verbessert werden. Der RSI-Indikator allein kann den Umkehrpunkt nicht vollständig zuverlässig bestimmen.

  2. Identifizieren von versteckten Mehrköpfen und versteckten Hohlköpfen, die häufig auf eine bevorstehende stärkere Preisentwicklung hindeuten, um eine Trendchance zu erfassen.

  3. Die RSI-Parameter und die Rückblickphase sind individuell anpassbar und flexibel für verschiedene Märkte.

  4. Indikatoren und Signale visualisieren, um die Marktlage intuitiv zu beurteilen

  5. Strategie Logik ist klar und einfach zu verstehen und geeignet für die Umsetzung von Quantitative Trading Strategien.

Risikoanalyse

Die RSI-Trendwende ist mit folgenden Risiken verbunden:

  1. Die RSI-Umkehr in Kombination mit der Preisumkehr kann viele falsche Signale filtern, aber es ist nicht ausgeschlossen, dass Fehleinschätzungen möglich sind. Der Indikator ist schließlich eine statistische Messung des Preises und kann nicht vollständig darauf angewiesen werden.

  2. Verborgene Mehrköpfe und verborgene Leerköpfe sind nicht leicht zu erkennen, und es kann sein, dass diese Chancen verpasst werden, was eine gewisse Erfahrung erfordert.

  3. Die falsche Einstellung der Rückblickzyklusparameter kann zu verpassten Wendepunkten oder zu verspäteten Urteilen führen. In verschiedenen Märkten müssen die Zyklusparameter angepasst werden.

  4. Es muss sichergestellt werden, dass die Stop-Loss-Strategie in Kombination verwendet wird, um zu verhindern, dass die Verluste sich ausweiten, wenn der Rückschlag weiter sinkt.

Risiken können durch Optimierung von Parametern, strenge Stop-Losses und angemessene Verstärkung der versteckten Umkehrung kontrolliert werden.

Optimierungsrichtung

Die RSI-Trendwende-Strategie kann optimiert werden durch:

  1. Anpassung der RSI-Parameter, um die Empfindlichkeit verschiedener Märkte für die RSI-Zyklusparameter zu testen und die optimalen Parameter zu finden.

  2. Optimierung der Rücklauf-Parameter, die den Bedarf an der Erfassung von Wendepunkten und der Verhinderung von Falschsignalen ausgleicht.

  3. Die Erhöhung der Transaktionsmenge durch statistische Analysen, z. B. durch eine starke Lagerentnahme, die zu einer Preisumkehr führt, entfernt die Identifizierung der Transaktionsmenge.

  4. In Kombination mit anderen Indikatoren wie MACD, Brin-Band usw. erhöht die Genauigkeit der Beurteilung.

  5. Steigerung der Stop-Loss-Strategie, um eine Ausweitung der Verluste zu vermeiden. Sie können die Stop-Loss-Strategie einrichten, wenn der Preis ein neues Hoch / neues Tief überschreitet.

  6. Strategie-Logik nach Rückmeldung zu korrigieren, um die Gewinnfaktoren zu verbessern. Zum Beispiel die logische Beziehung der Positionsaufnahmebedingungen zu ändern (mit oder ohne), um die beste Handelsstrategie zu finden.

Zusammenfassen

Die RSI-Trendwende-Strategie identifiziert potenzielle Trendwendepunkte durch die Kombination von RSI-Indikator-Umkehrungen und Preis-Umkehrungen. Sie nutzt die Trendentscheidungskraft des RSI effektiv und kombiniert mit falschen Signalen der Preisbewegung. Die Strategie-Logik ist einfach, klar und einfach umzusetzen.

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

//@version=4
//study(title="Divergence Indicator", format=format.price)
strategy(title="RSI Divergence Indicator", overlay=false,pyramiding=1, default_qty_value=2,   default_qty_type=strategy.fixed, initial_capital=10000, currency=currency.USD)

len = input(title="RSI Period", minval=1, defval=5)
src = input(title="RSI Source", defval=close)
lbR = input(title="Pivot Lookback Right", defval=5)
lbL = input(title="Pivot Lookback Left", defval=5)
rangeUpper = input(title="Max of Lookback Range", defval=60)
rangeLower = input(title="Min of Lookback Range", defval=5)
plotBull = input(title="Plot Bullish", defval=true)
plotHiddenBull = input(title="Plot Hidden Bullish", defval=true)
plotBear = input(title="Plot Bearish", defval=true)
plotHiddenBear = input(title="Plot Hidden Bearish", defval=false)

bearColor = color.purple
bullColor = color.green
hiddenBullColor = color.new(color.green, 80)
hiddenBearColor = color.new(color.red, 80)
textColor = color.white
noneColor = color.new(color.white, 100)

osc = rsi(src, len)

plot(osc, title="RSI", linewidth=2, color=#8D1699)
hline(50, title="Middle Line", linestyle=hline.style_dotted)
obLevel = hline(70, title="Overbought", linestyle=hline.style_dotted)
osLevel = hline(30, title="Oversold", linestyle=hline.style_dotted)
fill(obLevel, osLevel, title="Background", color=#9915FF, transp=90)

plFound = na(pivotlow(osc, lbL, lbR)) ? false : true
phFound = na(pivothigh(osc, lbL, lbR)) ? false : true

_inRange(cond) =>
    bars = barssince(cond == true)
    rangeLower <= bars and bars <= rangeUpper

//------------------------------------------------------------------------------
// Regular Bullish

// Osc: Higher Low
oscHL = osc[lbR] > valuewhen(plFound, osc[lbR], 1) and _inRange(plFound[1])

// Price: Lower Low
priceLL = low[lbR] < valuewhen(plFound, low[lbR], 1)

bullCond = plotBull and priceLL and oscHL and plFound

plot(
	 plFound ? osc[lbR] : na,
	 offset=-lbR,
	 title="Regular Bullish",
	 linewidth=2,
	 color=(bullCond ? bullColor : noneColor),
	 transp=0
	 )


plotshape(
	 bullCond ? osc[lbR] : na,
	 offset=-lbR,
	 title="Regular Bullish Label",
	 text=" Bull ",
	 style=shape.labelup,
	 location=location.absolute,
	 color=bullColor,
	 textcolor=textColor,
	 transp=0
	 )

//------------------------------------------------------------------------------
// Hidden Bullish

// Osc: Lower Low
oscLL = osc[lbR] < valuewhen(plFound, osc[lbR], 1) and _inRange(plFound[1])

// Price: Higher Low
priceHL = low[lbR] > valuewhen(plFound, low[lbR], 1)

hiddenBullCond = plotHiddenBull and priceHL and oscLL and plFound

plot(
	 plFound ? osc[lbR] : na,
	 offset=-lbR,
	 title="Hidden Bullish",
	 linewidth=2,
	 color=(hiddenBullCond ? hiddenBullColor : noneColor),
	 transp=0
	 )

plotshape(
	 hiddenBullCond ? osc[lbR] : na,
	 offset=-lbR,
	 title="Hidden Bullish Label",
	 text=" H Bull ",
	 style=shape.labelup,
	 location=location.absolute,
	 color=bullColor,
	 textcolor=textColor,
	 transp=0
	 )

longCondition=bullCond or hiddenBullCond
//? osc[lbR] : na  
//hiddenBullCond
strategy.entry(id="RSIDivLE", long=true,  when=longCondition)


//------------------------------------------------------------------------------
// Regular Bearish

// Osc: Lower High
oscLH = osc[lbR] < valuewhen(phFound, osc[lbR], 1) and _inRange(phFound[1])

// Price: Higher High
priceHH = high[lbR] > valuewhen(phFound, high[lbR], 1)

bearCond = plotBear and priceHH and oscLH and phFound

plot(
	 phFound ? osc[lbR] : na,
	 offset=-lbR,
	 title="Regular Bearish",
	 linewidth=2,
	 color=(bearCond ? bearColor : noneColor),
	 transp=0
	 )

plotshape(
	 bearCond ? osc[lbR] : na,
	 offset=-lbR,
	 title="Regular Bearish Label",
	 text=" Bear ",
	 style=shape.labeldown,
	 location=location.absolute,
	 color=bearColor,
	 textcolor=textColor,
	 transp=0
	 )

//------------------------------------------------------------------------------
// Hidden Bearish

// Osc: Higher High
oscHH = osc[lbR] > valuewhen(phFound, osc[lbR], 1) and _inRange(phFound[1])

// Price: Lower High
priceLH = high[lbR] < valuewhen(phFound, high[lbR], 1)

hiddenBearCond = plotHiddenBear and priceLH and oscHH and phFound

plot(
	 phFound ? osc[lbR] : na,
	 offset=-lbR,
	 title="Hidden Bearish",
	 linewidth=2,
	 color=(hiddenBearCond ? hiddenBearColor : noneColor),
	 transp=0
	 )

plotshape(
	 hiddenBearCond ? osc[lbR] : na,
	 offset=-lbR,
	 title="Hidden Bearish Label",
	 text=" H Bear ",
	 style=shape.labeldown,
	 location=location.absolute,
	 color=bearColor,
	 textcolor=textColor,
	 transp=0
	 )
longCloseCondition=crossover(osc,75) or bearCond
strategy.close(id="RSIDivLE",  when=longCloseCondition)