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.
Der Kern der Strategie liegt im Aufbau eines standardisierten Indikators unter Verwendung rollender statistischer Eigenschaften logarithmischer Renditen.
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")