Adaptive dynamische Handelsstrategie basierend auf normalisierten logarithmischen Renditen

SZI SMA LOG STD
Erstellungsdatum: 2024-12-27 14:39:32 zuletzt geändert: 2024-12-27 14:39:32
Kopie: 2 Klicks: 376
1
konzentrieren Sie sich auf
1617
Anhänger

Adaptive dynamische Handelsstrategie basierend auf normalisierten logarithmischen Renditen

Überblick

Die Strategie ist ein adaptives Handelssystem, das auf dem Shiryaev-Zhou-Index (SZI) basiert. Es identifiziert überkaufte und überverkaufte Zustände des Marktes durch Berechnung eines standardisierten Punktes für die logische Rendite und fängt so die Gelegenheit für eine mittlere Rückkehr des Preises ein. Die Strategie kombiniert dynamische Stop-Loss- und Profit-Goals und ermöglicht eine präzise Risikokontrolle.

Strategieprinzip

Im Zentrum der Strategie steht der Aufbau eines standardisierten Indikators durch rollende statistische Merkmale der logarithmischen Rendite. Die konkreten Schritte lauten:

  1. Berechnen Sie die parallelen Renditen, um eine normalisierte Behandlung der Renditen zu erreichen
  2. Berechnung des Rollenden Durchschnitts und der Standarddifferenz mit einem 50-Zyklus-Fenster
  3. Konstruieren Sie SZI-Indikatoren: (logarithmische Rendite - Rolling Average) / Rolling Standard Differenz
  4. Wenn SZI unter -2,0 ist, erzeugt mehrere Signale, wenn er über 2,0 ist, erzeugt er ein Leerzeichen
  5. Setzen Sie 2% Stop Loss und 4% Stop Stop Level auf Basis des Einstiegspreises

Strategische Vorteile

  1. Die theoretische Grundlage ist solide: basierend auf der Hypothese der logarithmischen normalen Verteilung, mit guter statistischer Unterstützung
  2. Anpassungsfähigkeit: Fähigkeit, sich an veränderte Merkmale der Marktfluktuation durch Rollfensterberechnung anzupassen
  3. Perfekte Risikokontrolle: Percentage Stop-Loss-Strategien, um die Risiken für jeden Handel genau zu kontrollieren
  4. Visualisierungsfreundlich: Handelssignale und Risikokontrollen werden klar auf den Diagrammen markiert

Strategisches Risiko

  1. Parameter-Sensitivität: Die Wahl der Länge der Rollfenster und der Thresholds beeinflussen die Strategie erheblich
  2. Marktumfeld-Abhängigkeit: Häufige falsche Signale, die in einem Trendmarkt entstehen können
  3. Schlupfpunkt-Effekte: In Zeiten starker Schwankungen können die tatsächlichen Kaufpreise erheblich von den idealen Niveaus abweichen
  4. Berechnungsverzögerung: Die Berechnung von Statistiken in Echtzeit kann zu einer gewissen Signalverzögerung führen

Richtung der Strategieoptimierung

  1. Dynamische Schwellenwerte: Eine dynamische Anpassung des Signal-Schwellenwerts an die Marktfluktuation kann in Betracht gezogen werden
  2. Mehrzeit-Perioden: Ein Signalbestätigungsmechanismus, der mehrere Zeitperioden einführt
  3. Volatilitätsfilter: Haltet den Handel aus oder passt die Position während extremer Volatilität an
  4. Signalbestätigung: Erhöhung des Verkehrsvolumens, der Antriebskraft usw. für die Signalbestätigung
  5. Positionsmanagement: Dynamisches Positionsmanagement basierend auf Volatilität

Zusammenfassen

Es handelt sich um eine quantitative Handelsstrategie, die auf einer soliden statistischen Grundlage basiert und Preisschwankungen durch standardisierte symmetrische Erträge erfasst. Die Hauptvorteile der Strategie liegen in ihrer Anpassungsfähigkeit und perfekten Risikokontrolle, es besteht jedoch noch Raum für Optimierung in Bezug auf die Auswahl der Parameter und die Anpassung an die Marktumgebung. Die Stabilität und Zuverlässigkeit der Strategie wird durch die Einführung von dynamischen Abwertungen und mehrdimensionalen Signalbestätigungsmechanismen weiter verbessert werden.

Strategiequellcode
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Jalambi Paul model", overlay=true)

// Define the length for the rolling window
window = input.int(50, title="Window Length", minval=1)
threshold = 2.0 // Fixed threshold value
risk_percentage = input.float(1.0, title="Risk Percentage per Trade", step=0.1) / 100

// Calculate the logarithmic returns
log_return = math.log(close / close[1])

// Calculate the rolling mean and standard deviation
rolling_mean = ta.sma(log_return, window)
rolling_std = ta.stdev(log_return, window)

// Calculate the Shiryaev-Zhou Index (SZI)
SZI = (log_return - rolling_mean) / rolling_std

// Generate signals based on the fixed threshold
long_signal = SZI < -threshold
short_signal = SZI > threshold

// Plot the signals on the main chart (overlay on price)
plotshape(series=long_signal, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="BUY", offset=-1)
plotshape(series=short_signal, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="SELL", offset=-1)

// Strategy logic: Buy when SZI crosses below the negative threshold, Sell when it crosses above the positive threshold
if (long_signal)
    strategy.entry("Buy", strategy.long, comment="Long Entry")
    
if (short_signal)
    strategy.entry("Sell", strategy.short, comment="Short Entry")

// Calculate the stop loss and take profit levels based on the percentage of risk
stop_loss_pct = input.float(2.0, title="Stop Loss (%)") / 100
take_profit_pct = input.float(4.0, title="Take Profit (%)") / 100

// Set the stop loss and take profit levels based on the entry price
strategy.exit("Take Profit / Stop Loss", "Buy", stop=close * (1 - stop_loss_pct), limit=close * (1 + take_profit_pct))
strategy.exit("Take Profit / Stop Loss", "Sell", stop=close * (1 + stop_loss_pct), limit=close * (1 - take_profit_pct))

// Plot the stop loss and take profit levels for visualization (optional)
plot(stop_loss_pct != 0 ? close * (1 - stop_loss_pct) : na, color=color.red, linewidth=1, title="Stop Loss Level")
plot(take_profit_pct != 0 ? close * (1 + take_profit_pct) : na, color=color.green, linewidth=1, title="Take Profit Level")