Strategi Perdagangan Kuantitatif Berbilang Faktor

Penulis:ChaoZhang, Tarikh: 2023-09-13 14:46:59
Tag:

Strategi perdagangan kuantitatif pelbagai faktor yang mengintegrasikan faktor purata bergerak dan penunjuk berayun untuk mengawal risiko dan meningkatkan kestabilan.

Logika Strategi

Strategi ini terdiri daripada tiga modul utama:

  1. Faktor Purata Bergerak

Menggunakan 5 EMA dengan tempoh yang berbeza (8, 13, 21, 34, 55) untuk membina penapis trend. MAs disusun dari pendek ke panjang. Hanya apabila EMA yang lebih cepat melintasi di atas EMA yang lebih perlahan, isyarat trend dihasilkan.

  1. Penunjuk berayun

Menggabungkan RSI dan pengayun Stochastic untuk mengesahkan isyarat pecah, mengelakkan pecah palsu yang berlebihan di pasaran pelbagai.

RSI (14) menghasilkan isyarat panjang apabila dalam julat 40-70 dan isyarat pendek apabila dalam julat 30-60.

Stochastic (14,3,3) memberikan isyarat panjang apabila garisan K adalah antara 20-80 dan isyarat pendek apabila garisan K adalah antara 5-95.

  1. Logik Masuk dan Keluar

Isyarat masuk diaktifkan hanya apabila kedua-dua faktor diselaraskan. Isyarat keluar dihasilkan apabila salah satu faktor tidak lagi sah.

Penapis pelbagai faktor yang ketat memastikan kadar kemenangan yang tinggi dan isyarat yang boleh dipercayai.

Kelebihan

  • Reka bentuk pelbagai faktor berkesan menapis bunyi bising pasaran dan menghalang perdagangan berlebihan.
  • Menggabungkan trend berikut dan pembalikan purata, menyeimbangkan perdagangan dinamik dan perdagangan lokasi.
  • Mencatatkan titik pembalikan dalam trend menggunakan MA dan osilator.
  • Ruang pengoptimuman yang besar untuk mendapatkan prestasi yang lebih baik.

Risiko

  • Frekuensi isyarat agak rendah, mungkin terlepas beberapa peluang.
  • Kelewatan MA harus disahkan dengan pengayun yang lebih cepat.
  • Osilator yang terdedah kepada isyarat palsu, harus digunakan sebagai faktor tambahan.
  • Parameter memerlukan pengoptimuman berkala untuk menyesuaikan diri dengan keadaan pasaran yang berubah.

Kesimpulan

Strategi ini berjaya menggabungkan kekuatan strategi perdagangan trend berikut dan pembalikan. Model kawalan risiko pelbagai faktor memberikan alpha yang stabil. Ia adalah strategi perdagangan kuantitatif yang sangat praktikal yang bernilai penyelidikan dan penerapan mendalam oleh komuniti AI.


/*backtest
start: 2022-09-12 00:00:00
end: 2022-11-15 00:00:00
period: 2d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "Combined Strategy", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value = .0020, pyramiding = 0, slippage = 3, overlay = true)

//----------//
// MOMENTUM //
//----------//
ema8 = ema(close, 8)
ema13 = ema(close, 13)
ema21 = ema(close, 21)
ema34 = ema(close, 34)
ema55 = ema(close, 55)

plot(ema8, color=red, style=line, title="8", linewidth=1)
plot(ema13, color=orange, style=line, title="13", linewidth=1)
plot(ema21, color=yellow, style=line, title="21", linewidth=1)
plot(ema34, color=aqua, style=line, title="34", linewidth=1)
plot(ema55, color=lime, style=line, title="55", linewidth=1)

longEmaCondition = ema8 > ema13 and ema13 > ema21 and ema21 > ema34 and ema34 > ema55
exitLongEmaCondition = ema13 < ema55

shortEmaCondition = ema8 < ema13 and ema13 < ema21 and ema21 < ema34 and ema34 < ema55
exitShortEmaCondition = ema13 > ema55

// ----------  //
// OSCILLATORS //
// ----------- //
rsi = rsi(close, 14)
longRsiCondition = rsi < 70 and rsi > 40
exitLongRsiCondition = rsi > 70

shortRsiCondition = rsi > 30 and rsi < 60
exitShortRsiCondition = rsi < 30

// Stochastic
length = 14, smoothK = 3, smoothD = 3
kFast = stoch(close, high, low, 14)
dSlow = sma(kFast, smoothD)

longStochasticCondition = kFast < 80
exitLongStochasticCondition = kFast > 95

shortStochasticCondition = kFast > 20
exitShortStochasticCondition = kFast < 5

//----------//
// STRATEGY //
//----------//

longCondition = longEmaCondition and longRsiCondition and longStochasticCondition and strategy.position_size == 0
exitLongCondition = (exitLongEmaCondition or exitLongRsiCondition or exitLongStochasticCondition) and strategy.position_size > 0

if (longCondition)
    strategy.entry("LONG", strategy.long)
if (exitLongCondition)
    strategy.close("LONG")
    
shortCondition = shortEmaCondition and shortRsiCondition and shortStochasticCondition and strategy.position_size == 0
exitShortCondition = (exitShortEmaCondition or exitShortRsiCondition or exitShortStochasticCondition) and strategy.position_size < 0

if (shortCondition)
    strategy.entry("SHORT", strategy.short)
if (exitShortCondition)
    strategy.close("SHORT")

Lebih lanjut