Quantitative Handelsstrategie auf der Grundlage von linearen Regressions-RSI

Schriftsteller:ChaoZhang, Datum: 2024-01-24 11:35:19
Tags:

img

Übersicht

Diese Strategie basiert auf dem linearen Regressions-RSI-Indikator. Sie erzeugt Kauf- und Verkaufssignale durch Berechnung des Crossovers zwischen dem linearen Regressions-RSI und der EMA. Die Strategie bietet auch zwei Optionen für die Kauflogik, die je nach Bedarf ausgewählt werden können.

Strategie Logik

Die Strategie berechnet zunächst eine 200-Perioden-lineare Regression, berechnet dann einen 21-Perioden-RSI basierend auf dem linearen Regressionsergebnis. Danach wird ein 50-Perioden-EMA berechnet. Wenn der RSI über die EMA überschreitet, wird ein Kaufsignal generiert. Wenn der RSI unter die EMA überschreitet, wird ein Verkaufssignal ausgelöst, um die Position zu schließen.

Die Strategie bietet zwei Arten von Kauflogik:

  1. Kaufen, wenn der RSI über die EMA geht
  2. Kaufen, wenn der RSI über der EMA und auch über der Überkauflinie liegt

Die geeignete Kauflogik kann anhand der Marktbedingungen ausgewählt werden.

Analyse der Vorteile

Diese Strategie kombiniert die Stärken sowohl des linearen Regressions-RSI als auch des EMA, wodurch ein Teil des Preisrausches effektiv ausfiltert und zuverlässigere Handelssignale generiert werden.

Der lineare Regressions-RSI erfasst den Trend besser, und der EMA hilft, Wendepunkte zu identifizieren.

Die Strategie bietet zwei optionale Kauflogiken für mehr Flexibilität bei der Anpassung an verschiedene Marktstadien.

Risikoanalyse

Das Hauptrisiko dieser Strategie liegt in der möglichen Veränderung der Beziehung zwischen dem RSI und der EMA, die zu falschen Handelssignalen führen kann.

Darüber hinaus kann die Verzögerung des RSI und der EMA als Indikatoren auch zu bestimmten Verzögerungen bei Ein- und Ausstiegen führen, da die Wendepunkte nicht perfekt erfasst werden können.

Um die Risiken zu mindern, können Parameter wie die Länge des RSI und der EMA für eine bessere Koordinierung zwischen den beiden optimiert werden.

Verbesserungsrichtlinien

Die Strategie kann in folgenden Aspekten verbessert werden:

  1. Optimierung der Längen der linearen Regression RSI und EMA zur Suche nach den besten Parameterkombinationen
  2. Hinzufügen anderer Indikatoren wie MACD, Bollinger Bands usw. zur Verbesserung der Signalqualität
  3. Einbeziehung von Volatilitätsmetriken zur Anpassung der Positionsgröße
  4. Verwenden Sie maschinelle Lerntechniken zur automatischen Optimierung von Parametern

Schlussfolgerung

Diese Strategie entwirft eine mittlere Umkehrstrategie auf Basis von linearer Regression RSI und EMA, die Umkehrchancen innerhalb von Bandbreiten identifiziert, indem sie RSI-EMA-Kreuzungen betrachtet. Sie bietet auch zwei optionale Kauflogiken für Flexibilität, um sich an unterschiedliche Märkte anzupassen. Insgesamt kann die Strategie durch Kombination mehrerer Indikatoren die Umkehrchancen effektiv erkennen. Mit Parameter-Tuning und zusätzlichen Filtern hat sie das Potenzial für eine bessere Leistung.


/*backtest
start: 2023-01-17 00:00:00
end: 2024-01-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Linear RSI")

startP = timestamp(input(2017, "Start Year"), input(12, "Month"), input(17, "Day"), 0, 0)
end   = timestamp(input(9999, "End Year"),   input(1, "Month"),   input(1, "Day"),   0, 0)
_testPeriod() => true

//inputs
length = input(defval=200, minval=1, title="LR length")
length2 = input(defval=21, minval=1, title="RSI length")
ema_fast = input(defval=50, minval=1, title="EMA")
lag = 0

overBought = input(50)
overSold = input(50)


//rsi
src = close
Lr = linreg(src, length, lag)
rsi = rsi(Lr, length2)
ema = ema(rsi, ema_fast)

plot(rsi, color = rsi > overBought ? color.green : rsi < overSold ? color.red : color.silver)
plot(overBought, color=color.purple)
plot(overSold, color=color.purple)
plot(ema, color=color.blue)

first_type = input(true, title="Use first logic?")
second_type =  input(false, title="Use second logic?")

long_condition = (first_type ? crossover(rsi, ema) and _testPeriod() : false) or (second_type ? rsi > ema and rsi > overBought and _testPeriod() : false)
strategy.entry('BUY', strategy.long, when=long_condition)  
 
short_condition = crossunder(rsi, ema)
strategy.close('BUY', when=short_condition)

Mehr