Triple RSI Extrem-Handelsstrategie

Schriftsteller:ChaoZhang, Datum: 2023-11-02 14:34:21
Tags:

img

Übersicht

Diese Strategie verwendet drei RSI-Indikatoren mit unterschiedlichen Perioden, um festzustellen, ob der Markt extrem überkaufte oder überverkaufte Niveaus erreicht hat, und erzeugt entsprechend Kauf- und Verkaufssignale.

Strategie Logik

Wenn alle drei RSI-Indikatoren gleichzeitig überkaufte oder überverkaufte Signale zeigen, werden Handelssignale generiert.

Wenn der 2-Perioden-RSI unter 10, der 7-Perioden-RSI unter 20 und der 14-Perioden-RSI unter 30 liegt, gilt der Markt als überverkauft und ein Kaufsignal wird generiert.

Der Code verwendet einen Genauigkeitsparameter, um die überkauften/überverkauften Schwellenwerte des RSI zu optimieren. Der Standardwert beträgt 3 und niedrigere Werte bedeuten strengere Kriterien für Überkauf/Überkauf.

Wenn ein Kauf- oder Verkaufssignal generiert wird, wird die aktuelle Position geschlossen, um Gewinn zu erzielen oder Verluste zu reduzieren, wenn sich der Preis umkehrt und den Eröffnungspreis des Tages durchbricht.

Analyse der Vorteile

  • Die Verwendung einer Kombination von mehrjährigen RSI-Indikatoren kann zu präziser zu überkauften/überverkauften Bedingungen führen und falsche Signale filtern.

  • Durch die Feinabstimmung der Kriterien für Überkauf/Überverkauf mit verschiedenen Parametern kann die Strategieempfindlichkeit anhand der Marktbedingungen angepasst werden.

  • Durch die Einführung offener Preisverfolgungshaltestellen können Sie rechtzeitig Gewinne erzielen.

Risikoanalyse

  • Die RSI-Indikatoren sind anfällig für Abweichungen, die bei der Ermittlung von Trendumkehrungen nicht wirksam sind.

  • Bei Perioden hoher Volatilität müssen die RSI-Parameter angepasst werden, da sie sonst zu häufig zu Stops führen können.

  • Drei RSI-Signale, die zusammen auslösen, sind selten, was gute Handelsmöglichkeiten verpassen kann.

  • Die Parameter für die Kriterien für Überkauf/Überverkauf sollten abgestimmt und auf verschiedenen Märkten getestet werden.

Optimierungsrichtlinien

  • Es sollten andere Indikatoren zur Bestätigung hinzugefügt werden, wie Bollinger-Bänder, KDJ usw., um eine RSI-Divergenz zu vermeiden.

  • Automatische Optimierung der RSI-Parameter auf der Grundlage verschiedener Marktregime.

  • Testen Sie andere Stopp-Ausfahrbedingungen, wie ATR-Stopps.

  • Fügen Sie Filter hinzu, um den Handel in ungeeigneten Zeiten zu vermeiden.

Schlussfolgerung

Diese Strategie identifiziert überkaufte/überverkaufte Zonen unter Verwendung einer Kombination von mehrjährigen RSI-Indikatoren und implementiert Trend-Tracking-Stopps. Zu den Vorteilen gehören eine verbesserte Genauigkeit, rechtzeitige Stopps; Zu den Nachteilen gehören fehlende Trades, RSI-Fehler. Parameteroptimierungstests werden empfohlen, zusammen mit dem Hinzufügen von Bestätigungsindikatoren, um eine bessere Leistung zu erzielen.


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

//@version=3
strategy(title = "Noro's Triple RSI Top/Bottom", shorttitle = "3RSI Top/Bottom", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
accuracy = input(3, defval = 3, minval = 1, maxval = 10, title = "accuracy")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")


//RSI-2
fastup = rma(max(change(close), 0), 2)
fastdown = rma(-min(change(close), 0), 2)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//RSI-7
middleup = rma(max(change(close), 0), 7)
middledown = rma(-min(change(close), 0), 7)
middlersi = middledown == 0 ? 100 : middleup == 0 ? 0 : 100 - (100 / (1 + middleup / middledown))

//RSI-14
slowup = rma(max(change(close), 0), 14)
slowdown = rma(-min(change(close), 0), 14)
slowrsi = slowdown == 0 ? 100 : slowup == 0 ? 0 : 100 - (100 / (1 + slowup / slowdown))

//Signals
acc = 10 - accuracy
up = fastrsi < (5 + acc) and middlersi < (10 + acc * 2) and slowrsi < (15 + acc * 3)
dn = fastrsi > (95 - acc) and middlersi > (90 - acc * 2) and slowrsi > (85 - acc * 3)
exit = (strategy.position_size > 0 and close > open) or (strategy.position_size > 0 and close > open)

//Trading
if up
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Bottom", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Top", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
    strategy.close_all()

Mehr