Strategi perdagangan kuantitatif multi-faktor yang mengintegrasikan faktor rata-rata bergerak dan indikator osilasi untuk mengendalikan risiko dan meningkatkan stabilitas.
Strategi ini terdiri dari tiga modul utama:
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.
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.
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.
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")