Relative Strength Index und Kreuzung der gleitenden Durchschnittsstrategie

Schriftsteller:ChaoZhang, Datum: 21.12.2023
Tags:

img

Übersicht

Der Relative Strength Index (RSI) und die Moving Average Crossover Strategie kombinieren den RSI-Indikator und gleitende Durchschnitte, um quantitative Handelsentscheidungen zu treffen.

Strategie Logik

  1. Berechnen Sie den Wert des RSI-Indikators. Der RSI misst die Größe der jüngsten Preisänderungen, um zu beurteilen, ob ein Vermögenswert überkauft oder überverkauft ist.

  2. Berechnen Sie eine gleitende Durchschnittslinie (MA) des RSI anhand eines exponentiellen gleitenden Durchschnitts (EMA) oder eines einfachen gleitenden Durchschnitts (SMA).

  3. Wenn der RSI über seine MA-Linie geht, wird ein goldenes Kreuz-Kaufsignal generiert.

  4. Wenn der RSI über die Überkaufschwelle steigt, gilt der Vermögenswert als überkauft und eine Short-Position kann eingeleitet werden.

Analyse der Vorteile

  1. Die Kombination von Indikator-Crossover-Signalen mit RSI-Überkauf-/Überverkaufswerten verbessert die Genauigkeit der Handelsentscheidungen.

  2. Überkaufte und überverkaufte RSI-Schwellenwerte bestimmen optimale Ein- und Ausgänge.

  3. Erfassen von Trendumkehrungen durch Einwirken auf Indikator-Crossover-Signale.

Risikoanalyse

  1. Der RSI kann während unruhiger oder seitlicher Märkte falsche Signale erzeugen.

  2. Eine falsche Einstellung der überkauften oder überverkauften Schwellenwerte könnte zu Signalen führen, die zu locker oder zu streng sind.

  3. Die gleitenden Durchschnitte sind empfindlich gegenüber kurzfristigen Anomalien und Volatilitätsspitzen, was die Wahrscheinlichkeit erhöht, dass sie vorzeitig gestoppt werden.

Optimierungsrichtlinien

  1. Optimieren Sie den RSI-Parameter, indem Sie verschiedene Längenperioden testen.

  2. Finden Sie die optimalen gleitenden Durchschnittsperioden, indem Sie verschiedene MA-Längen bewerten.

  3. Verschiedene Schwellenwerte für Überkauf und Überverkauf testen, um die Einstiegssignale zu verfeinern.

  4. Einbeziehen Sie zusätzliche Filter, um Signale zu validieren und falsche Trades zu vermeiden.

Schlussfolgerung

Die RSI- und Moving Average-Crossover-Strategie kombiniert RSI-Überkauf/Überverkauft-Level mit MA-Crossover-Signalen, um Marktwendepunkte zu identifizieren und Umkehrungen zu erfassen.


/*backtest
start: 2022-12-14 00:00:00
end: 2023-12-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//dfurrer45
strategy(title="Relative Strength Index", shorttitle="RSI", overlay=true)
src = close, len = input(13, minval=1, title="Length"), maLen = input(9, minval=1, title="MA Lenght"), exponential = input(false, title="Exponential")

// === BACKTEST RANGE ===
FromMonth = input(defval = 10, title = "From Month", minval = 1)
FromDay   = input(defval = 3, title = "From Day", minval = 1)
FromYear  = input(defval = 2017, title = "From Year", minval = 2014)
ToMonth   = input(defval = 1, title = "To Month", minval = 1)
ToDay     = input(defval = 1, title = "To Day", minval = 1)
ToYear    = input(defval = 9999, title = "To Year", minval = 2014)
// ===  BACKTEST END  ===
backtestdaterange = (time > timestamp(FromYear, FromMonth, FromDay, 00, 00))

rsioverbought = input(90, minval=1, title="RSI % start overbought")
rsioversold = input(10, minval=1, title="RSI % start oversold")
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))
ma = exponential ? ema(rsi, maLen) : sma(rsi, maLen)
rsimacrossup = cross(rsi,ma) and rsi > ma
rsimacrossdown = cross(rsi,ma) and rsi < ma
plotchar(rsimacrossup, char='⇧', location = location.belowbar, color = green, text = "", textcolor = green, size=size.small)
plotchar(rsimacrossdown, char='⇩', location = location.abovebar, color = red, text = "", textcolor = red, size=size.small)
plotchar(rsi > rsioverbought, char='x', location = location.belowbar, color = aqua, text = "", textcolor = red, size=size.small)
plotchar(rsi < rsioversold, char='x', location = location.belowbar, color = aqua, text = "", textcolor = red, size=size.small)


closetrade = rsimacrossup or rsimacrossdown
strategy.close_all(closetrade)
strategy.close_all((rsi > rsioverbought) or (rsi < rsioversold))
strategy.entry("Short Overbought",strategy.short, when=(rsi > rsioverbought) and backtestdaterange)
strategy.entry("Buy Overbought",strategy.long, when=(rsi < rsioversold) and backtestdaterange)
strategy.entry("Long Cross", strategy.long, when=rsimacrossup and backtestdaterange)
strategy.entry("Short Cross", strategy.short, when=rsimacrossdown and backtestdaterange)


Mehr