Die Ressourcen sind geladen. Beförderung...

RSI-Handelsstrategie von Laguerre

Schriftsteller:ChaoZhang, Datum: 2023-12-19 14:04:46
Tags:

img

Übersicht

Die Laguerre-RSI-Handelsstrategie basiert auf dem John EHLERS-Laguerre-Filter, der auf den RSI-Indikator angewendet wird.

Strategie Logik

Der Kernindikator dieser Strategie ist der Laguerre RSI. Seine Berechnungsformel lautet wie folgt:

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-α, α ist ein einstellbarer Koeffizient, Src repräsentiert den Preis. L0 bis L3 sind 4 Indikatoren, die rekursive Beziehungen enthalten. Auf dieser Grundlage können die Strom-Up-Integral cu und Down-Integral cd berechnet werden:

Cu = (L0>L1? L0-L1 : 0) + (L1>L2? L1-L2 : 0) + (L2>L3? L2-L3 : 0) cd = (L0

Dann kann Laguerre RSI mit Cu und cd berechnet werden:

LaRSI = cu / (cu + cd)

Durch die rekursive Filterstruktur behält Laguerre RSI die Trend-Identifikationsfähigkeit des RSI bei, während er viel zufälliges Rauschen herausfiltert und klarere und reibungslosere Handelssignale erzeugt.

Die spezifischen Handelsregeln sind: Gehen Sie lang, wenn der Laguerre RSI über 20 liegt, und kurz, wenn der Laguerre RSI unter 80 liegt.

Analyse der Vorteile

Die wichtigsten Vorteile der Laguerre RSI-Strategie sind:

  1. Effektiv filtern Sie das Rauschen von RSI durch die Laguerre-Filterstruktur, wodurch Handelssignale klarer und zuverlässiger werden

  2. Der verstellbare α-Koeffizient macht die Strategieparameter flexibel für die Optimierung, um sich an mehr Marktumgebungen anzupassen

  3. Beibehält die langfristige Gültigkeit des RSI und ermöglicht gleichzeitig die Dynamikidentifizierung durch Filtern, Integration von Trend und Überkauf/Überverkauf

  4. Einfache und intuitive Strategieregeln, die leicht zu implementieren sind und in verschiedenen Marktumgebungen gut funktionieren

Risikoanalyse

Die wichtigsten Risiken dieser Strategie sind:

  1. Eine falsche Einstellung von α kann zu einer übermäßigen Verzögerung oder zu einer Überfilterung führen und somit zu fehlenden Preisänderungen führen

  2. Häufige Handelsverluste können auf volatilen Märkten auftreten

  3. Bei langfristig anhaltenden Bullenmärkten können einige Aufwärtschancen verpasst werden

Optimierungsrichtlinien

Diese Strategie kann aus folgenden Gesichtspunkten optimiert werden:

  1. Verwenden Sie Machine Learning Algorithmen zur Optimierung der α-Koeffizienten-Einstellung

  2. Hinzufügen von Stop-Loss-Mechanismen zur Verringerung des Verlustrisikos

  3. Kombination anderer Indikatoren zur Filterung falscher Signale

  4. Ausbau des Quantitativen Lockerungsmodells zur Gewinnsicherung in bestimmten Phasen

Schlussfolgerung

Die Laguerre RSI-Strategie identifiziert überkaufte und überverkaufte Situationen durch Filtermechanismen und vermeidet dabei Störungen durch Lärm bei der Ausgabe von Handelssignalen.


/*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))

Mehr