Strategi dagangan dinamik adaptif berdasarkan pulangan logaritma ternormal

SZI SMA LOG STD
Tarikh penciptaan: 2024-12-27 14:39:32 Akhirnya diubah suai: 2024-12-27 14:39:32
Salin: 2 Bilangan klik: 376
1
fokus pada
1617
Pengikut

Strategi dagangan dinamik adaptif berdasarkan pulangan logaritma ternormal

Gambaran keseluruhan

Strategi ini adalah sistem dagangan penyesuaian diri berdasarkan Indeks Shiryaev-Zhou (SZI). Ia mengenal pasti keadaan pasaran yang terlalu beli dan terlalu jual dengan mengira skor standard untuk kadar pulangan logaritma, untuk menangkap peluang pulangan nilai purata harga. Strategi ini menggabungkan sasaran berhenti dan keuntungan yang dinamik untuk mengawal risiko dengan tepat.

Prinsip Strategi

Strategi ini berpusat pada membina penunjuk standard dengan ciri-ciri statistik bergulir untuk kadar pulangan logaritma. Langkah-langkahnya adalah seperti berikut:

  1. Mengira kadar pulangan pasangan untuk mencapai rawatan normal kadar pulangan
  2. Pengiraan purata bergulir dan perbezaan piawai menggunakan tetingkap 50 kitaran
  3. Membina Indeks SZI: (Pengembalian Logaritma - Purata Bergulir) / Perbezaan Standard Bergulir
  4. SZI menghasilkan isyarat multitasking apabila di bawah -2.0, menghasilkan isyarat vakum apabila di atas 2.0
  5. Tetapkan 2% Stop Loss dan 4% Stop Stop Level berdasarkan harga masuk

Kelebihan Strategik

  1. Asas teori yang kukuh: berdasarkan hipotesis peredaran logik logik, dengan sokongan statistik yang baik
  2. Beradaptasi: Beradaptasi dengan perubahan ciri-ciri turun naik pasaran melalui pengiraan tetingkap bergulir
  3. Pengendalian risiko yang sempurna: menggunakan strategi peratusan stop-loss untuk mengawal risiko setiap dagangan dengan tepat
  4. Mesra visual: menandakan isyarat perdagangan dan tahap kawalan risiko dengan jelas pada carta

Risiko Strategik

  1. Sensitiviti parameter: Panjang tetingkap bergulir dan pilihan tetingkap bergulir akan mempengaruhi prestasi strategi
  2. Ketergantungan kepada keadaan pasaran: Isyarat palsu yang sering berlaku dalam pasaran yang sedang tren
  3. Kesan slippage: Dalam tempoh turun naik yang teruk, harga sebenar boleh menjadi jauh dari tahap yang ideal
  4. Penangguhan pengiraan: pengiraan statistik dalam masa nyata mungkin menghasilkan kelewatan isyarat

Arah pengoptimuman strategi

  1. Penurunan dinamik: penyesuaian isyarat yang boleh dipertimbangkan mengikut turun naik pasaran yang dinamik
  2. Multi-zaman: mekanisme pengesahan isyarat yang memperkenalkan beberapa zaman
  3. Penapis kadar turun naik: menangguhkan perdagangan atau menyesuaikan kedudukan semasa turun naik yang melampau
  4. Pengesahan isyarat: meningkatkan jumlah lalu lintas, tenaga dan lain-lain untuk pengesahan isyarat
  5. Pengurusan kedudukan: mewujudkan pengurusan kedudukan dinamik berdasarkan kadar turun naik

ringkaskan

Ini adalah strategi dagangan kuantitatif yang dibina di atas asas statistik yang kukuh, menangkap peluang turun naik harga melalui keuntungan logaritma yang standard. Kelebihan utama strategi ini adalah penyesuaian dan kawalan risiko yang baik, tetapi masih ada ruang untuk pengoptimuman dalam pilihan parameter dan penyesuaian kepada persekitaran pasaran.

Kod 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")