Strategi Perdagangan Kuantitatif Berbagai Faktor

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

Strategi perdagangan kuantitatif multi-faktor yang mengintegrasikan faktor rata-rata bergerak dan indikator osilasi untuk mengendalikan risiko dan meningkatkan stabilitas.

Logika Strategi

Strategi ini terdiri dari tiga modul utama:

  1. Faktor Rata-rata yang Bergerak

Menggunakan 5 EMA dengan periode yang berbeda (8, 13, 21, 34, 55) untuk membangun filter tren. MAs diatur dari pendek ke panjang. Hanya ketika EMA yang lebih cepat melintasi di atas EMA yang lebih lambat, sinyal tren dihasilkan.

  1. Indikator osilasi

Menggabungkan osilator RSI dan Stochastic untuk memvalidasi sinyal breakout, menghindari pemisahan palsu yang berlebihan di pasar rentang.

RSI (14) menghasilkan sinyal panjang ketika dalam kisaran 40-70 dan sinyal pendek ketika dalam kisaran 30-60.

Stokastik (14,3,3) memberikan sinyal panjang ketika garis K berada di antara 20-80 dan sinyal pendek ketika garis K berada di antara 5-95.

  1. Logika Masuk dan Keluar

Sinyal masuk diaktifkan hanya ketika kedua faktor sejajar. Sinyal keluar dihasilkan ketika salah satu faktor tidak lagi berlaku.

Filter multi-faktor yang ketat memastikan tingkat kemenangan yang tinggi dan sinyal yang dapat diandalkan.

Keuntungan

  • Desain multi-faktor secara efektif menyaring kebisingan pasar dan mencegah perdagangan berlebihan.
  • Menggabungkan trend mengikuti dan rata-rata-reversi, menyeimbangkan perdagangan dinamis dan perdagangan lokasi.
  • Mencatatkan titik pembalikan dalam tren menggunakan MA dan osilator.
  • Ruang pengoptimalan yang besar untuk mendapatkan kinerja yang lebih baik.

Risiko

  • Frekuensi sinyal relatif rendah, mungkin kehilangan beberapa kesempatan.
  • MA lag harus diverifikasi dengan osilator yang lebih cepat.
  • Osilator rentan terhadap sinyal palsu, harus digunakan sebagai faktor tambahan.
  • Parameter perlu dioptimalkan secara berkala untuk beradaptasi dengan perubahan kondisi pasar.

Kesimpulan

Strategi ini berhasil menggabungkan kekuatan strategi trading trend following dan reversal. Model kontrol risiko multi-faktor memberikan alfa yang stabil. Ini adalah strategi trading kuantitatif yang sangat praktis yang layak penelitian dan penerapan mendalam oleh komunitas 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 banyak