Die Ressourcen sind geladen. Beförderung...

RSI-Strategie für die Überschneidung von axalen gleitenden Durchschnitten

Schriftsteller:ChaoZhang, Datum: 23.11.2023 16:45:55
Tags:

img

Übersicht

Die RSI Axial Moving Average Crossover Strategie erzeugt Handelssignale, indem sie den RSI-Indikator und seine einfache gleitende Durchschnittslinie berechnet und goldene Kreuzungen und tote Kreuzungen zwischen den beiden beobachtet.

Strategie Logik

Die Strategie berechnet zuerst den 14-Tage-RSI-Indikator, gefolgt von der 8-Tage-einfachen gleitenden Durchschnittslinie des RSI-Indikators. Ein Kaufsignal wird erzeugt, wenn der RSI-Indikator über seine gleitende Durchschnittslinie überschreitet, während ein Verkaufssignal erzeugt wird, wenn der RSI unter seiner gleitenden Durchschnittslinie überschreitet.

Gleichzeitig werden in der Strategie Bollinger-Bänder hinzugefügt, um zu bestimmen, ob die axiale gleitende Durchschnittslinie des RSI durch Berechnung der Standardabweichung relativ überfüllt ist, und somit zu vermeiden, Spitzen zu kaufen und Tiefen zu verkaufen.

Analyse der Vorteile

Die RSI-Axial Moving Average Crossover Strategie kombiniert den Trendindikator RSI und die kurvenfolgende Indikator gleitende Durchschnittslinie, die effektiv Markttrends und Zufälligkeit bestimmen kann. Der arithmetische Durchschnitt des RSI-Indikators kann die Auswirkungen von Kursschwankungen auf Signale glätten.

Die in dieser Strategie hinzugefügten Bollinger-Bänder verwenden das Prinzip der Standardabweichung, um die Breite der oberen und unteren Spuren automatisch anzupassen, wodurch fehlerhafte Handelssignale effektiv verhindert werden.

Risikoanalyse

Das größte Risiko der RSI Axial Moving Average Crossover Strategie ist die Verzögerung des RSI-Indikators und der gleitenden Durchschnittslinien selbst. Wenn schnelle Marktbewegungen auftreten, wird die Indikatorberechnung und das Trendbeurteilungsverfahren in gewissem Maße verzögert. Dies führt zu erhöhten Kaufpunkten und gesenkten Verkaufspunkten.

Ein weiteres großes Risiko ist die Fehlleitung von Indikatoren, wenn sich der Markttrend von Bullen zu Bären oder umgekehrt verändert, während RSI- und MA-Indikatoren nicht rechtzeitig reagieren, was zu Verlustgeschäften führt.

Die Lösungen umfassen die angemessene Anpassung der RSI-Parameter, die Verkürzung der MA-Perioden, das Hinzufügen von Trendindikatoren, um das Urteilen zu unterstützen, und die angemessene Erweiterung des Stop-Loss-Bereichs.

Optimierungsrichtlinien

Die RSI-Axial Moving Average Crossover-Strategie kann in folgenden Aspekten optimiert werden:

  1. Optimierung der RSI-Parameter: Anpassung der RSI-Länge, um Empfindlichkeit und Stabilität auszugleichen

  2. Optimierung der MA-Parameter: Anpassung der MA-Typ- und Periodenparameter zur Optimierung der Trendverfolgung

  3. Hinzufügen von Stop-Loss-Mechanismen: Einstellen von Bewegung oder Zeit Stop-Loss, um einzelne Verluste zu kontrollieren

  4. Einbeziehung von Trendindikatoren: MACD, KDJ usw. hinzufügen, um Fehleinschätzungen zur Umkehrung zu vermeiden

  5. Überprüfung in mehreren Zeitrahmen: Verwenden Sie längere Zeitrahmen, um Trends zu ermitteln, um nicht in die Falle zu geraten

Schlussfolgerung

Die RSI-Axial Moving Average Crossover Strategie ist eine insgesamt ausgereifte quantitative Handelsstrategie. Sie kombiniert die Vorteile mehrerer technischer Indikatoren und kann durch Parameter-Tuning und mehrdimensionale Optimierung die Mainstream-Marktbewegungen erfassen. Das größte Risiko ist die Verzögerung der Indikatoren, die durch Stop-Losses angegangen werden muss, um Verluste zu kontrollieren.


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

//@version=5
// Copyright (c) 2020-present, Alex Orekhov (everget)
// Corrected Moving Average script may be freely distributed under the terms of the GPL-3.0 license.
strategy('rsisma', shorttitle='rsisma')

ma(source, length, type) =>
    switch type
        "SMA" => ta.sma(source, length)
        "Bollinger Bands" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

rsiLengthInput = input.int(14, minval=1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(close, "Source", group="RSI Settings")
maTypeInput = input.string("SMA", title="MA Type", options=["SMA", "Bollinger Bands", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="MA Settings")
maLengthInput = input.int(14, title="MA Length", group="MA Settings")
bbMultInput = input.float(2.0, minval=0.001, maxval=50, title="BB StdDev", group="MA Settings")

up = ta.rma(math.max(ta.change(rsiSourceInput), 0), rsiLengthInput)
down = ta.rma(-math.min(ta.change(rsiSourceInput), 0), rsiLengthInput)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
rsiMA = ma(rsi, maLengthInput, maTypeInput)
isBB = maTypeInput == "Bollinger Bands"

plot(rsi, "RSI", color=#7E57C2)
plot(rsiMA, "RSI-based MA", color=color.blue)
rsiUpperBand = hline(70, "RSI Upper Band", color=#787B86)
hline(50, "RSI Middle Band", color=color.new(#787B86, 50))
rsiLowerBand = hline(30, "RSI Lower Band", color=#787B86)
fill(rsiUpperBand, rsiLowerBand, color=color.rgb(126, 87, 194, 90), title="RSI Background Fill")
bbUpperBand = plot(isBB ? rsiMA + ta.stdev(rsi, maLengthInput) * bbMultInput : na, title = "Upper Bollinger Band", color=color.green)
bbLowerBand = plot(isBB ? rsiMA - ta.stdev(rsi, maLengthInput) * bbMultInput : na, title = "Lower Bollinger Band", color=color.green)
fill(bbUpperBand, bbLowerBand, color= isBB ? color.new(color.green, 90) : na, title="Bollinger Bands Background Fill")


long = ta.crossover(rsi, rsiMA)
short = ta.crossunder(rsi, rsiMA)
if long
    strategy.entry("long", strategy.long)
if short
    strategy.close("long", comment = "long TP")

 
// long1 = close * 9
// long2 = long1 / 100
// long3 = long2 + close


//plot(long3,color=color.blue)
// if short
//     strategy.entry("short", strategy.short)
// if long
//     strategy.close("short", comment = "short TP")




Mehr