
Die RSI-Handelsstrategie basiert auf John EHLERS’s RSI-Filter. Die Strategie erhöht oder verringert die Lagritude und Gleitfähigkeit des RSI-Indikators durch eine Anpassung des α-Faktors, um so den RSI-Indikator zu filtern und ein klareres Kauf- und Verkaufssignal zu erzeugen.
Der Kernindikator der Strategie ist der Ragel RSI. Die Berechnungsformel lautet:
L0 = (1-γ)*Src + γ*L0[1]
L1 = -γ*L0 + L0[1] + γ*L1[1]
L2 = -γ*L1 + L1[1] + γ*L2[1]
L3 = -γ*L2 + L2[1] + γ*L3[1]
Hier ist γ = 1-α, wobei α ein einstellbarer Faktor ist, wobei Src den Preis darstellt. L0 bis L3 sind vier Indikatoren, die eine fortlaufende Beziehung enthalten. Auf dieser Basis können die aktuellen Aufwärts- und Abwärts-Prozent cu und cd berechnet werden:
cu = (L0>L1 ? L0-L1 : 0) + (L1>L2 ? L1-L2 : 0) + (L2>L3 ? L2-L3 : 0) cd = (L0
Dann kann man den RSI mit Hilfe von cu und cd berechnen:
LaRSI = cu / (cu + cd)
Durch die Struktur des Recursive-Filters filtert der RSI eine große Menge an zufälligem Geräusch, um ein klareres und glatteres Handelssignal zu erzeugen, während die Fähigkeit des RSI, Trends zu erkennen, erhalten bleibt.
Spezifische Handelsregeln: Wenn der RSI über 20 liegt, ist das Plus; wenn der RSI unter 80 liegt, ist das Minus.
Die wichtigsten Vorteile der RSI-Strategie von Rachael sind:
RSI-Indikatorgeräusche werden durch die Ragel-Filterstruktur effizient gefiltert, um Handelssignale klarer und zuverlässiger zu machen
Die Anpassung des α-Faktors ermöglicht eine flexible Optimierung der Parameter der Strategie für die breitere Marktumgebung
Die langfristige Wirksamkeit des RSI-Indikators wird beibehalten, während Dynamikerkennung, Trendbindung und Überbuying und Überselling durch Filter erfolgen
Strategie-Regeln sind einfach, intuitiv und leicht umzusetzen und funktionieren gut in verschiedenen Marktumgebungen
Diese Strategie birgt folgende Risiken:
Die falsche Einstellung des α-Koeffizienten kann zu übermäßigen Verzögerungen oder übermäßigen Filterungen führen, wodurch Preisänderungen übersehen werden.
Häufige Handelsverluste in stark bewegten Märkten
Die lang andauernde Bull-Markt könnte einen Teil der Aufschwungchancen verpassen
Diese Strategie kann in folgenden Bereichen optimiert werden:
Einstellungen zur Optimierung des α-Faktors mithilfe von Machine Learning-Algorithmen
Erhöhung der Stop-Loss-Mechanismen und Verringerung der Risiken
In Kombination mit anderen Indikatoren zur Beurteilung von Falschmeldungen
Erhöhung der Quantitative Easing-Regelung, um Gewinne in bestimmten Phasen zu sichern
Die RSI-Strategie von Rachael identifiziert Überkauf-Überverkauf durch einen Filtermechanismus und vermeidet die Störung durch Geräusche, während das Handelssignal ausgegeben wird. Die Strategie ist einfach, praktisch, hat viel Platz für Parameteroptimierung und ist in der Lage, sich an verschiedene Marktumgebungen anzupassen.
/*backtest
start: 2022-12-12 00:00:00
end: 2023-12-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mertriver1
// Developer: John EHLERS
//@version=3
// Author:Kıvanç Özbilgiç
strategy("Laguerre RSI", shorttitle="LaRSI", overlay=false)
src = input(title="Source", defval=close)
alpha = input(title="Alpha", type=float, minval=0, maxval=1, step=0.1, defval=0.2)
colorchange = input(title="Change Color ?", type=bool, defval=false)
Date1 = input(true, title = "=== Date Backtesting ===")
FromDay1 = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromMonth1 = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromYear1 = input(defval = 2020, title = "From Year", minval = 2017)
ToDay1 = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToMonth1 = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToYear1 = input(defval = 9999, title = "To Year", minval = 2017)
start1 = timestamp(FromYear1, FromMonth1, FromDay1, 00, 00)
finish1 = timestamp(ToYear1, ToMonth1, ToDay1, 23, 59)
window1() => time >= start1 and time <= finish1 ? true : false
gamma=1-alpha
L0 = 0.0
L0 := (1-gamma) * src + gamma * nz(L0[1])
L1 = 0.0
L1 := -gamma * L0 + nz(L0[1]) + gamma * nz(L1[1])
L2 = 0.0
L2 := -gamma * L1 + nz(L1[1]) + gamma * nz(L2[1])
L3 = 0.0
L3 := -gamma * L2 + nz(L2[1]) + gamma * nz(L3[1])
cu= (L0>L1 ? L0-L1 : 0) + (L1>L2 ? L1-L2 : 0) + (L2>L3 ? L2-L3 : 0)
cd= (L0<L1 ? L1-L0 : 0) + (L1<L2 ? L2-L1 : 0) + (L2<L3 ? L3-L2 : 0)
temp= cu+cd==0 ? -1 : cu+cd
LaRSI=temp==-1 ? 0 : cu/temp
Color = colorchange ? (LaRSI > LaRSI[1] ? green : red) : blue
plot(100*LaRSI, title="LaRSI", linewidth=2, color=Color, transp=0)
plot(20,linewidth=1, color=maroon, transp=0)
plot(80,linewidth=1, color=maroon, transp=0)
strategy.entry("Long", true, when = window1() and crossover(cu, cd))
strategy.entry("Short", false, when = window1() and crossunder(cu, cd))