Mehrperiodischer Gaußscher Kanal kombiniert mit der StochRSI-Trendverfolgungsstrategie

RSI HLC3 TR SMA BAND
Erstellungsdatum: 2025-02-18 13:50:36 zuletzt geändert: 2025-02-18 13:50:36
Kopie: 3 Klicks: 503
1
konzentrieren Sie sich auf
1617
Anhänger

Mehrperiodischer Gaußscher Kanal kombiniert mit der StochRSI-Trendverfolgungsstrategie

Überblick

Die Strategie ist ein Handelssystem, das Trends auf der Grundlage von Gauss-Schwankungen und StochRSI-Indikatoren verfolgt. Die Strategie identifiziert Markttrends über den Gauss-Kanal und optimiert die Einstiegszeit in Kombination mit den Überkauf-Überverkauf-Bereichen des StochRSI-Indikators. Das System verwendet eine multifunktionale Anpassung, um den Gauss-Kanal zu erstellen, um die Preisentwicklung durch dynamische Anpassung der Auf- und Abwärtsbahn zu verfolgen und die Marktentwicklung genau zu verfolgen.

Strategieprinzip

Im Mittelpunkt der Strategie steht ein Preiskanal, der auf dem Goslin Wave-Algorithmus basiert. Die Umsetzung umfasst folgende Schlüsselschritte:

  1. Um mit der polynomialen Funktion f_filt9x eine 9-stufige Gaussianische Filterwelle zu realisieren, verbessert man die Filterwirkung durch eine Pole-Optimierung.
  2. Hauptfluktuationslinie und Fluktuationsrate-Kanal berechnet auf Basis von HLC3-Preisen
  3. Die Einführung des Reduced Lag-Modus reduziert die Verzögerung des Filters und des FastResponse-Modes erhöht die Antwortgeschwindigkeit.
  4. Überkauf-Überverkauf-Bereich (8020) anhand des StochRSI-Indikators, um ein Handelssignal zu ermitteln
  5. Mehrfaches Signal in Kombination mit dem StochRSI, wenn der Gauss-Kanal nach oben geht und der Preis auf die Bahn geht
  6. Ein Ausgang, wenn der Preis auf die Strecke fällt

Strategische Vorteile

  1. Ghosn-Wellen haben eine hervorragende Geräuschminderung und filtern effektiv Marktlärm.
  2. Durch die Anwendung von Multivariate-Fitness wird ein reibungsloser Trendverfolgungsprozess ermöglicht, um falsche Signale zu reduzieren.
  3. Unterstützt Optimierung der Verzögerung und schnelle Reaktionsmodus, flexibel angepasst an die Merkmale des Marktes
  4. Optimierte Einstiegszeiten in Verbindung mit dem StochRSI erhöhen die Erfolgsrate
  5. Dynamische Kanalbreite, um sich an Veränderungen der Marktschwankungen anzupassen

Strategisches Risiko

  1. Es gibt eine gewisse Verzögerung, die dazu führen kann, dass Spieler nicht rechtzeitig ein- oder aussteigen.
  2. Häufige Handelssignale können in einem wackligen Markt zu erhöhten Kosten führen
  3. Der StochRSI kann unter bestimmten Marktbedingungen ein Lagersignal erzeugen
  4. Der Prozess der Parameteroptimierung ist komplex und erfordert eine Neuausrichtung der Parameter für verschiedene Marktbedingungen
  5. System mit hohen Anforderungen an die Rechenressourcen, mit einer gewissen Verzögerung bei der Realzeitberechnung

Richtung der Strategieoptimierung

  1. Einführung von Adaptive Parameter-Optimierungsmechanismen, die die Parameter dynamisch an die Marktlage anpassen
  2. Erweiterung des Moduls zur Identifizierung von Marktbedingungen mit unterschiedlichen Kombinationen von Parametern für unterschiedliche Marktbedingungen
  3. Optimierung von Gaussian-Wave-Algorithmen zur weiteren Verringerung der Rechenverzögerung
  4. Einführung von mehr technischen Kennzahlen zur Überprüfung und Verbesserung der Signalsicherheit
  5. Entwicklung von intelligenten Stop-Loss-Mechanismen zur Verbesserung der Risikokontrolle

Zusammenfassen

Die Strategie ermöglicht durch die Kombination von Gaussian-Wellen und StochRSI-Indikatoren eine effektive Verfolgung von Markttrends. Das System verfügt über eine gute Geräuschdämpfung und Trenderkennungsfähigkeit, aber es gibt auch eine gewisse Verzögerung und Schwierigkeiten bei der Optimierung der Parameter. Durch kontinuierliche Optimierung und Verbesserung wird die Strategie zu stabilen Erträgen im tatsächlichen Handel führen.

Strategiequellcode
/*backtest
start: 2024-02-19 00:00:00
end: 2025-02-16 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="Demo GPT - Gaussian Channel Strategy v3.0", overlay=true, commission_type=strategy.commission.percent, commission_value=0.1, slippage=0, default_qty_type=strategy.percent_of_equity, default_qty_value=250)

// ============================================
// Gaussian Functions (Must be at top)
// ============================================
f_filt9x(_a, _s, _i) =>
    var int _m2 = 0, var int _m3 = 0, var int _m4 = 0, var int _m5 = 0, var int _m6 = 0,
    var int _m7 = 0, var int _m8 = 0, var int _m9 = 0, var float _f = 0.0
    _x = 1 - _a
    _m2 := _i == 9 ? 36 : _i == 8 ? 28 : _i == 7 ? 21 : _i == 6 ? 15 : _i == 5 ? 10 : _i == 4 ? 6 : _i == 3 ? 3 : _i == 2 ? 1 : 0
    _m3 := _i == 9 ? 84 : _i == 8 ? 56 : _i == 7 ? 35 : _i == 6 ? 20 : _i == 5 ? 10 : _i == 4 ? 4 : _i == 3 ? 1 : 0
    _m4 := _i == 9 ? 126 : _i == 8 ? 70 : _i == 7 ? 35 : _i == 6 ? 15 : _i == 5 ? 5 : _i == 4 ? 1 : 0
    _m5 := _i == 9 ? 126 : _i == 8 ? 56 : _i == 7 ? 21 : _i == 6 ? 6 : _i == 5 ? 1 : 0
    _m6 := _i == 9 ? 84 : _i == 8 ? 28 : _i == 7 ? 7 : _i == 6 ? 1 : 0
    _m7 := _i == 9 ? 36 : _i == 8 ? 8 : _i == 7 ? 1 : 0
    _m8 := _i == 9 ? 9 : _i == 8 ? 1 : 0
    _m9 := _i == 9 ? 1 : 0
    _f := math.pow(_a, _i) * nz(_s) + _i * _x * nz(_f[1]) - (_i >= 2 ? _m2 * math.pow(_x, 2) * nz(_f[2]) : 0) + (_i >= 3 ? _m3 * math.pow(_x, 3) * nz(_f[3]) : 0) - (_i >= 4 ? _m4 * math.pow(_x, 4) * nz(_f[4]) : 0) + (_i >= 5 ? _m5 * math.pow(_x, 5) * nz(_f[5]) : 0) - (_i >= 6 ? _m6 * math.pow(_x, 6) * nz(_f[6]) : 0) + (_i >= 7 ? _m7 * math.pow(_x, 7) * nz(_f[7]) : 0) - (_i >= 8 ? _m8 * math.pow(_x, 8) * nz(_f[8]) : 0) + (_i == 9 ? _m9 * math.pow(_x, 9) * nz(_f[9]) : 0)
    _f

f_pole(_a, _s, _i) =>
    _f1 = f_filt9x(_a, _s, 1)
    _f2 = _i >= 2 ? f_filt9x(_a, _s, 2) : 0.0
    _f3 = _i >= 3 ? f_filt9x(_a, _s, 3) : 0.0
    _f4 = _i >= 4 ? f_filt9x(_a, _s, 4) : 0.0
    _f5 = _i >= 5 ? f_filt9x(_a, _s, 5) : 0.0
    _f6 = _i >= 6 ? f_filt9x(_a, _s, 6) : 0.0
    _f7 = _i >= 7 ? f_filt9x(_a, _s, 7) : 0.0
    _f8 = _i >= 8 ? f_filt9x(_a, _s, 8) : 0.0
    _f9 = _i == 9 ? f_filt9x(_a, _s, 9) : 0.0
    _fn = _i == 1 ? _f1 : _i == 2 ? _f2 : _i == 3 ? _f3 : _i == 4 ? _f4 : _i == 5 ? _f5 : _i == 6 ? _f6 : _i == 7 ? _f7 : _i == 8 ? _f8 : _i == 9 ? _f9 : na
    [_fn, _f1]

// ============================================
// Date Filter
// ============================================
startDate = input(timestamp("1 Jan 2018"), "Start Date", group="Time Settings")
endDate = input(timestamp("31 Dec 2069"), "End Date", group="Time Settings")
timeCondition = true

// ============================================
// Stochastic RSI (Hidden Calculations)
// ============================================
stochRsiK = input.int(3, "Stoch RSI K", group="Stochastic RSI", tooltip="Only for calculations, not visible")
stochRsiD = input.int(3, "Stoch RSI D", group="Stochastic RSI")
rsiLength = input.int(14, "RSI Length", group="Stochastic RSI")
stochLength = input.int(14, "Stochastic Length", group="Stochastic RSI")

rsiValue = ta.rsi(close, rsiLength)
k = ta.sma(ta.stoch(rsiValue, rsiValue, rsiValue, stochLength), stochRsiK)
d = ta.sma(k, stochRsiD)

// ============================================
// Gaussian Channel
// ============================================
gaussianSrc = input(hlc3, "Source", group="Gaussian")
poles = input.int(4, "Poles", minval=1, maxval=9, group="Gaussian")
samplingPeriod = input.int(144, "Sampling Period", minval=2, group="Gaussian")
multiplier = input.float(1.414, "Multiplier", step=0.1, group="Gaussian")
reducedLag = input.bool(false, "Reduced Lag Mode", group="Gaussian")
fastResponse = input.bool(false, "Fast Response Mode", group="Gaussian")

// Gaussian Calculations
beta = (1 - math.cos(4 * math.asin(1) / samplingPeriod)) / (math.pow(1.414, 2 / poles) - 1)
alpha = -beta + math.sqrt(math.pow(beta, 2) + 2 * beta)
lag = (samplingPeriod - 1) / (2 * poles)

srcData = reducedLag ? gaussianSrc + (gaussianSrc - gaussianSrc[lag]) : gaussianSrc
trData = reducedLag ? ta.tr(true) + (ta.tr(true) - ta.tr(true)[lag]) : ta.tr(true)

[mainFilter, filter1] = f_pole(alpha, srcData, poles)
[trFilter, trFilter1] = f_pole(alpha, trData, poles)

finalFilter = fastResponse ? (mainFilter + filter1) / 2 : mainFilter
finalTrFilter = fastResponse ? (trFilter + trFilter1) / 2 : trFilter

upperBand = finalFilter + finalTrFilter * multiplier
lowerBand = finalFilter - finalTrFilter * multiplier

// ============================================
// Trading Logic
// ============================================
longCondition = 
  finalFilter > finalFilter[1] and      // Green Channel
  close > upperBand and                 // Price above upper band
  (k >= 80 or k <= 20) and             // Stoch RSI condition
  timeCondition

exitCondition = ta.crossunder(close, upperBand)

if longCondition
    strategy.entry("Long", strategy.long)

if exitCondition
    strategy.close("Long")

// ============================================
// Visuals (Gaussian Only)
// ============================================
bandColor = finalFilter > finalFilter[1] ? color.new(#00ff00, 0) : color.new(#ff0000, 0)
plot(finalFilter, "Filter", bandColor, 2)
plot(upperBand, "Upper Band", bandColor)
plot(lowerBand, "Lower Band", bandColor)
fill(plot(upperBand), plot(lowerBand), color.new(bandColor, 90))

barcolor(close > open and close > upperBand ? color.green : 
         close < open and close < lowerBand ? color.red : na)