Chiến lược này là một hệ thống giao dịch thích nghi dựa trên chỉ số Shiryaev-Zhou (SZI). Nó xác định các điều kiện thị trường mua quá mức và bán quá mức bằng cách tính toán điểm chuẩn của lợi nhuận logarithmic, nhằm mục đích nắm bắt cơ hội đảo ngược trung bình. Chiến lược kết hợp các mục tiêu dừng lỗ và lợi nhuận năng động để kiểm soát rủi ro chính xác.
Cốt lõi của chiến lược nằm trong việc xây dựng một chỉ số tiêu chuẩn bằng cách sử dụng các tính chất thống kê lăn lăn của kết quả logarithmic.
Đây là một chiến lược giao dịch định lượng được xây dựng trên nền tảng thống kê vững chắc, nắm bắt các cơ hội biến động giá thông qua lợi nhuận logaritm tiêu chuẩn.
/*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")