Sumber daya yang dimuat... Pemuatan...

Adaptive Dynamic Trading Strategy Berdasarkan Standardized Logarithmic Returns

Penulis:ChaoZhang, Tanggal: 2024-12-27 14:39:32
Tag:SZISMALOGPenyakit menular

img

Gambaran umum

Strategi ini adalah sistem perdagangan adaptif berdasarkan indeks Shiryaev-Zhou (SZI). Ini mengidentifikasi kondisi pasar yang terlalu banyak dibeli dan terlalu banyak dijual dengan menghitung skor standar laba logaritma, bertujuan untuk menangkap peluang reversi rata-rata. Strategi ini menggabungkan target stop-loss dan take-profit dinamis untuk pengendalian risiko yang tepat.

Prinsip Strategi

Inti dari strategi ini adalah membangun indikator standar menggunakan sifat statistik bergulir dari laba logaritma.

  1. Menghitung hasil logaritma untuk normalisasi
  2. Menghitung rata-rata bergulir dan standar deviasi menggunakan jendela 50 periode
  3. Konstruksi SZI: (pengembalian logaritma - rata-rata bergulir) / penyimpangan standar bergulir
  4. Menghasilkan sinyal panjang ketika SZI turun di bawah -2,0 dan sinyal pendek ketika di atas 2,0
  5. Menetapkan tingkat stop loss 2% dan tingkat take profit 4% berdasarkan harga masuk

Keuntungan Strategi

  1. Dasar Teoritis yang Kuat: Berdasarkan asumsi distribusi log-normal dengan dukungan statistik yang kuat
  2. Adaptifitas tinggi: Perhitungan jendela rolling beradaptasi dengan perubahan karakteristik volatilitas pasar
  3. Pengendalian Risiko yang Komprehensif: Strategi stop loss berbasis persentase memungkinkan pengendalian risiko yang tepat untuk setiap perdagangan
  4. Visualisasi yang ramah pengguna: Anotasi sinyal perdagangan yang jelas dan tingkat kontrol risiko pada grafik

Risiko Strategi

  1. Sensitivitas Parameter: Kinerja strategi yang dipengaruhi secara signifikan oleh pilihan panjang jendela bergulir dan ambang batas
  2. Kecenderungan lingkungan pasar: Dapat menghasilkan sinyal palsu yang sering di pasar tren
  3. Dampak slippage: Harga eksekusi sebenarnya dapat menyimpang secara signifikan dari tingkat ideal selama periode volatilitas
  4. Penundaan Perhitungan: Perhitungan real-time dari indikator statistik dapat menyebabkan penundaan sinyal

Arahan Optimasi

  1. Batas Dinamis: Pertimbangkan untuk menyesuaikan batas sinyal berdasarkan volatilitas pasar
  2. Multiple Timeframes: Memperkenalkan mekanisme konfirmasi sinyal di beberapa kerangka waktu
  3. Volatility Filtering: Menunda perdagangan atau menyesuaikan posisi selama periode volatilitas ekstrim
  4. Konfirmasi sinyal: Tambahkan volume, momentum, dan indikator tambahan lainnya untuk konfirmasi sinyal
  5. Manajemen Posisi: Melaksanakan ukuran posisi dinamis berdasarkan volatilitas

Ringkasan

Ini adalah strategi perdagangan kuantitatif yang dibangun di atas dasar statistik yang kuat, menangkap peluang volatilitas harga melalui pengembalian logaritma standar. Kekuatan utama strategi terletak pada kemampuan beradaptasi dan kontrol risiko yang komprehensif, meskipun masih ada ruang untuk optimasi dalam pemilihan parameter dan adaptasi lingkungan pasar. Melalui pengenalan ambang dinamis dan mekanisme konfirmasi sinyal multidimensi, stabilitas dan keandalan strategi dapat ditingkatkan lebih lanjut.


/*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")


Berkaitan

Lebih banyak