
Strategi ini adalah sistem perdagangan adaptif berdasarkan indeks Shiryaev-Zhou (SZI). Strategi ini mengidentifikasi kondisi overbought dan oversold di pasar dengan menghitung skor standar untuk rasio imbal hasil logaritmik, sehingga menangkap peluang harga untuk kembali ke nilai rata-rata. Strategi ini menggabungkan stop loss dan profit target yang dinamis untuk mengendalikan risiko dengan tepat.
Inti dari strategi ini adalah untuk membangun indikator standar melalui rolling statistical characteristics of logarithmic yields. Langkah-langkahnya adalah sebagai berikut:
Ini adalah strategi perdagangan kuantitatif yang dibangun di atas dasar statistik yang kuat, menangkap peluang fluktuasi harga dengan keuntungan logis standar. Keunggulan utama strategi ini adalah kemampuan beradaptasi dan pengendalian risiko yang baik, tetapi masih ada ruang untuk pengoptimalan dalam pemilihan parameter dan adaptasi dengan lingkungan pasar.
/*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")