Esta estratégia é um sistema de negociação adaptativo baseado no Índice Shiryaev-Zhou (SZI). Identifica as condições de mercado de sobrecompra e sobrevenda através do cálculo de pontuações padronizadas de retornos logarítmicos, com o objetivo de capturar oportunidades de reversão média.
O núcleo da estratégia consiste na construção de um indicador padronizado utilizando propriedades estatísticas rolantes de retornos logarítmicos.
Esta é uma estratégia de negociação quantitativa construída sobre bases estatísticas sólidas, capturando oportunidades de volatilidade de preços através de retornos logarítmicos padronizados. Os principais pontos fortes da estratégia estão em sua adaptabilidade e controle de risco abrangente, embora ainda haja espaço para otimização na seleção de parâmetros e adaptação ao ambiente de mercado. Através da introdução de limiares dinâmicos e mecanismos de confirmação de sinais multidimensionais, a estabilidade e confiabilidade da estratégia podem ser ainda melhoradas.
/*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")