Strategi perdagangan dinamis adaptif berdasarkan pengembalian logaritmik yang dinormalisasi

SZI SMA LOG STD
Tanggal Pembuatan: 2024-12-27 14:39:32 Akhirnya memodifikasi: 2024-12-27 14:39:32
menyalin: 2 Jumlah klik: 376
1
fokus pada
1617
Pengikut

Strategi perdagangan dinamis adaptif berdasarkan pengembalian logaritmik yang dinormalisasi

Ringkasan

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.

Prinsip Strategi

Inti dari strategi ini adalah untuk membangun indikator standar melalui rolling statistical characteristics of logarithmic yields. Langkah-langkahnya adalah sebagai berikut:

  1. Perhitungan rasio biner untuk mendapatkan perlakuan normal dari rasio
  2. Perhitungan rata-rata dan standar deviasi dengan jendela 50 periode
  3. Konstruksi indikator SZI: (Return Logarithm - Rata-rata Bergulir) / Kerugian Standar Bergulir
  4. Ketika SZI di bawah -2,0 menghasilkan sinyal multitasking, di atas 2,0 menghasilkan sinyal vakum
  5. Setting 2% stop loss dan 4% stop loss level berdasarkan harga masuk

Keunggulan Strategis

  1. Dasar teori yang kuat: berdasarkan hipotesis distribusi logaritma normal, dengan dukungan statistik yang baik
  2. Adaptif: Beradaptasi dengan perubahan karakteristik pasar yang berfluktuasi melalui perhitungan jendela bergulir
  3. Pengendalian risiko yang sempurna: Strategi peratusan stop loss untuk mengontrol risiko setiap transaksi dengan tepat
  4. Visibilitas ramah: sinyal perdagangan dan tingkat kontrol risiko ditandai dengan jelas pada grafik

Risiko Strategis

  1. Sensitivitas parameter: Penentuan panjang dan nilai tipis jendela menelusuri dapat mempengaruhi kinerja strategi secara signifikan
  2. Ketergantungan pada kondisi pasar: sinyal palsu yang sering terjadi dalam pasar yang sedang tren
  3. Efek slippage: Pada periode fluktuasi yang kuat, harga transaksi aktual dapat secara signifikan menyimpang dari tingkat yang ideal
  4. Keterlambatan perhitungan: perhitungan real-time indikator statistik mungkin menghasilkan beberapa sinyal lag

Arah optimasi strategi

  1. Dynamic Threshold: Dapat dipertimbangkan untuk menyesuaikan sinyal threshold secara dinamis sesuai dengan volatilitas pasar
  2. Multi-periode waktu: mekanisme konfirmasi sinyal yang memperkenalkan beberapa periode waktu
  3. Filter volatilitas: menangguhkan perdagangan atau menyesuaikan posisi selama fluktuasi ekstrim
  4. Konfirmasi sinyal: meningkatkan volume lalu lintas, momentum dan indikator tambahan untuk konfirmasi sinyal
  5. Manajemen Posisi: Mengimplementasikan manajemen posisi dinamis berdasarkan volatilitas

Meringkaskan

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.

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