
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.
Im Zentrum der Strategie steht der Aufbau eines standardisierten Indikators durch rollende statistische Merkmale der logarithmischen Rendite. Die konkreten Schritte lauten:
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.
/*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")