Die Ressourcen sind geladen. Beförderung...

Adaptive dynamische Handelsstrategie auf Basis standardisierter logarithmischer Renditen

Schriftsteller:ChaoZhang, Datum: 2024-12-27 14:39:32
Tags:SZISMALKGGeschlechtskrankheiten

img

Übersicht

Diese Strategie ist ein anpassungsfähiges Handelssystem, das auf dem Shiryaev-Zhou Index (SZI) basiert. Es identifiziert überkaufte und überverkaufte Marktbedingungen durch die Berechnung standardisierter Logarithmusrenditen, mit dem Ziel, durchschnittliche Rückkehrmöglichkeiten zu erfassen. Die Strategie enthält dynamische Stop-Loss- und Take-Profit-Ziele für eine präzise Risikokontrolle.

Strategieprinzipien

Der Kern der Strategie liegt im Aufbau eines standardisierten Indikators unter Verwendung rollender statistischer Eigenschaften logarithmischer Renditen.

  1. Berechnen Sie logarithmische Renditen für die Normalisierung
  2. Berechnung des gleitenden Mittelwerts und der Standardabweichung unter Verwendung eines 50-Periodenfensters
  3. Konstruktion von SZI: (logarithmische Rendite - rollender Durchschnitt) / rollende Standardabweichung
  4. Lange Signale erzeugen, wenn der SZI unter -2,0 fällt, und kurze Signale, wenn er über 2,0 liegt
  5. Festlegen von 2% Stop-Loss- und 4% Take-Profit-Niveaus auf der Grundlage des Einstiegspreises

Strategische Vorteile

  1. Solide theoretische Grundlage: Basierend auf Annahmen der log-normalen Verteilung mit starker statistischer Unterstützung
  2. Hohe Anpassungsfähigkeit: Die Berechnungen des Rollfensters passen sich den Veränderungen der Merkmale der Marktvolatilität an
  3. Umfassende Risikokontrolle: Eine prozentual basierte Stop-Loss-Strategie ermöglicht eine präzise Risikokontrolle für jeden Handel
  4. Benutzerfreundliche Visualisierung: Übersichtliche Anmerkung von Handelssignalen und Risikokontrollniveaus auf Diagrammen

Strategische Risiken

  1. Parameterempfindlichkeit: Strategieleistung, die durch die Wahl der Länge des Rollfensters und der Schwellenwerte erheblich beeinflusst wird
  2. Abhängigkeit vom Marktumfeld: Kann häufige falsche Signale in Trendmärkten erzeugen
  3. Slippe-Effekt: Die tatsächlichen Ausführungspreise können in volatilen Perioden erheblich von den idealen Niveaus abweichen.
  4. Berechnungsverzögerung: Die Berechnung statistischer Indikatoren in Echtzeit kann zu Signalverzögerungen führen

Optimierungsrichtlinien

  1. Dynamische Schwellenwerte: Überlegen Sie, die Signalschwellenwerte anhand der Marktvolatilität anzupassen.
  2. Mehrere Zeitrahmen: Einführung von Signalbestätigungsmechanismen über mehrere Zeitrahmen hinweg
  3. Volatilitätsfilterung: Pause des Handels oder Anpassung von Positionen während extremer Volatilitätsperioden
  4. Signalbestätigung: Volumen, Impuls und andere Hilfsindikatoren für die Signalbestätigung hinzufügen
  5. Positionsmanagement: Implementierung einer volatilitätsbasierten dynamischen Positionsgröße

Zusammenfassung

Es handelt sich um eine quantitative Handelsstrategie, die auf soliden statistischen Grundlagen basiert und durch standardisierte logarithmische Renditen Chancen auf Preisvolatilität erfasst. Die Hauptstärken der Strategie liegen in ihrer Anpassungsfähigkeit und umfassender Risikokontrolle, obwohl bei der Parameterwahl und Anpassung an das Marktumfeld noch Raum für Optimierungen besteht. Durch die Einführung dynamischer Schwellenwerte und mehrdimensionaler Signalbestätigungsmechanismen können die Stabilität und Zuverlässigkeit der Strategie weiter verbessert werden.


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


Verwandt

Mehr