Quantitative Strategie mit RSI-Indikator und gleitendem Durchschnittsindikator


Erstellungsdatum: 2024-01-24 14:31:01 zuletzt geändert: 2024-01-24 14:31:01
Kopie: 0 Klicks: 715
1
konzentrieren Sie sich auf
1617
Anhänger

Quantitative Strategie mit RSI-Indikator und gleitendem Durchschnittsindikator

Überblick

Die Dual RSI Average Breakout Strategie ist eine quantitative Strategie, bei der sowohl der RSI als auch der Average Breakout verwendet werden, um den Zeitpunkt des Handels zu bestimmen. Die Kernidee der Strategie besteht darin, die Richtung der Mittellinie zu nutzen, um die Signale zu filtern, wenn der RSI die überkaufte Überverkaufszone erreicht, um nach besseren Breakouts zu suchen.

Strategieprinzip

  1. Der RSI-Indikator und der einfache Moving Average SMA werden jeweils nach den vom Benutzer festgelegten Parametern berechnet.

  2. Wenn der RSI die eingestellte Überverkaufsgrenze (Default 30) überschreitet, wird ein Mehrkopfsignal erzeugt, wenn der Preis unter der LONG-Ausgangsgrenze liegt.

  3. Wenn der RSI unterhalb der eingestellten Überkauflinie (Default 70) liegt, wird ein Hohlkopfsignal erzeugt, wenn der Preis über der SHORT Exit Mean Line liegt.

  4. Der Benutzer kann die Filtermittellinie auswählen, und das Signal wird nur erzeugt, wenn der Preis über der Filtermittellinie liegt.

  5. Die Ausstiegsentscheidung der Position erfolgt nach der LONG Ausstiegsgrenze und der SHORT Ausstiegsgrenze.

Analyse der Stärken

  1. Die Doppel-Indikatoren sind so konzipiert, dass die beiden wichtigsten Faktoren des Marktes berücksichtigt werden, um die Genauigkeit der Entscheidungen zu verbessern.

  2. Der RSI-Indikator ist ein Trendindikator, der die Umkehr des RSI-Wertgefüges nutzt, um den Zeitpunkt der Umkehr zu ermitteln.

  3. Einheitliche Filter erhöhen die Genauigkeit der Beurteilung und verhindern die Verfolgung von Höhen und Tiefen.

  4. Erlaubt die Anpassung von Parametern, die für verschiedene Sorten und Zyklen optimiert werden können.

  5. Einfache Logik, leicht zu verstehen und zu ändern.

Risikoanalyse

  1. Der RSI ist anfällig für Vertikalkurven, die durch den Density-Index verringert werden können.

  2. Der RSI unter großen Phasen ist leicht auszufallen und kann durch Parameteroptimierung oder andere Indikatoren beeinträchtigt werden.

  3. Die Durchschnittslinie ist rückläufig und kann entsprechend verkürzt werden, um die Länge der Durchschnittslinie zu verkürzen oder die MACD-Anzeige zu unterstützen.

  4. Einfache Beurteilungsbedingungen, mit denen mehr Indikatoren eingeführt werden können, um die Effektivität von Handelssignalen zu gewährleisten.

Optimierungsrichtung

  1. Die Optimierung der RSI-Parameter oder die Einführung eines Density-Indikators reduziert die Wahrscheinlichkeit von Falschsignalen.

  2. Trends und Supportpunkte werden in Kombination mit Trend- und Schwankungsindikatoren wie DMI und BOLL ermittelt.

  3. Die Einführung von Alternativen oder Gleichheitsbeurteilungen wie MACD.

  4. Erweiterung der Logik der Börsenöffnungsbedingungen, um unerwünschte Durchbruchsignale zu verhindern.

Zusammenfassen

Die Doppel-RSI-Gleichgewichts-Breakthrough-Strategie nutzt die RSI-Indikatoren, um Überkauf-Überverkauf- und Gleichgewichts-Trends zu beurteilen. Theoretisch kann die Umkehrmöglichkeit effektiv genutzt werden. Die Strategie ist flexibel, einfach zu handhaben und gleichzeitig für die Optimierung verschiedener Sorten geeignet.

Strategiequellcode
/*backtest
start: 2024-01-16 00:00:00
end: 2024-01-23 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Global Market Signals: RSI Strategy.
//@version=4
strategy("GMS: RSI Strategy", overlay=true)

LongShort = input(title="Long Only or Short Only or Both?", type=input.string, defval="Both", options=["Both", "Long Only", "Short Only"])
RSILength = input(title="RSI Length", type = input.integer ,defval=14)
RSIUpper = input(title="Upper Threshold", type = input.float ,defval=70)
RSILower = input(title="Lower Threshold", type = input.float ,defval=30)
LongExit = input(title="Long Exit SMA Length", type = input.integer ,defval=5)
ShortExit = input(title="Short Exit SMA Length", type = input.integer ,defval=5)
AboveBelow = input(title="Trend SMA Filter?", type=input.string, defval="Above", options=["Above", "Below", "Don't Include"])
TrendLength = input(title="Trend SMA Length", type = input.integer ,defval=200)


//Long Side

if LongShort =="Long Only" and AboveBelow == "Above"
    strategy.entry("LONG", true, when = rsi(close,RSILength)<RSILower and close< sma(close,LongExit) and close>sma(close,TrendLength))
    strategy.close("LONG", when = close>sma(close,LongExit))
    
if LongShort =="Long Only" and AboveBelow == "Below"
    strategy.entry("LONG", true, when = rsi(close,RSILength)<RSILower and close< sma(close,LongExit) and close<sma(close,TrendLength))
    strategy.close("LONG", when = close>sma(close,LongExit))
    
if LongShort =="Long Only" and AboveBelow == "Don't Include"
    strategy.entry("LONG", true, when = rsi(close,RSILength)<RSILower and close< sma(close,LongExit))
    strategy.close("LONG", when = close>sma(close,LongExit))
    
if LongShort =="Both" and AboveBelow == "Above"
    strategy.entry("LONG", true, when = rsi(close,RSILength)<RSILower and close< sma(close,LongExit) and close>sma(close,TrendLength))
    strategy.close("LONG", when = close>sma(close,LongExit))
    
if LongShort =="Both" and AboveBelow == "Below"
    strategy.entry("LONG", true, when = rsi(close,RSILength)<RSILower and close< sma(close,LongExit) and close<sma(close,TrendLength))
    strategy.close("LONG", when = close>sma(close,LongExit))
    
if LongShort =="Both" and AboveBelow == "Don't Include"
    strategy.entry("LONG", true, when = rsi(close,RSILength)<RSILower and close< sma(close,LongExit))
    strategy.close("LONG", when = close>sma(close,LongExit))
    
    
//SHORT SIDE

if LongShort =="Short Only" and AboveBelow == "Above"
    strategy.entry("SHORT", false, when = rsi(close,RSILength)>RSIUpper and close> sma(close,ShortExit) and close>sma(close,TrendLength))
    strategy.close("SHORT", when = close<sma(close,ShortExit))
    
if LongShort =="Short Only" and AboveBelow == "Below"
    strategy.entry("SHORT", false, when = rsi(close,RSILength)>RSIUpper and close> sma(close,ShortExit) and close<sma(close,TrendLength))
    strategy.close("SHORT", when = close<sma(close,ShortExit))
    
if LongShort =="Short Only" and AboveBelow == "Don't Include"
    strategy.entry("SHORT", false, when = rsi(close,RSILength)>RSIUpper and close> sma(close,ShortExit))
    strategy.close("SHORT", when = close<sma(close,ShortExit))
    
if LongShort =="Both" and AboveBelow == "Above"
    strategy.entry("SHORT", false, when = rsi(close,RSILength)>RSIUpper and close> sma(close,ShortExit) and close>sma(close,TrendLength))
    strategy.close("SHORT", when = close<sma(close,ShortExit))
    
if LongShort =="Both" and AboveBelow == "Below"
    strategy.entry("SHORT", false, when = rsi(close,RSILength)>RSIUpper and close> sma(close,ShortExit) and close<sma(close,TrendLength))
    strategy.close("SHORT", when = close<sma(close,ShortExit))
    
if LongShort =="Both" and AboveBelow == "Don't Include"
    strategy.entry("SHORT", false, when = rsi(close,RSILength)>RSIUpper and close> sma(close,ShortExit))
    strategy.close("SHORT", when = close<sma(close,ShortExit))