Strategi perdagangan kuantitatif pelbagai faktor yang mengambil kira faktor kesamaan dan faktor penunjuk getaran untuk mengawal risiko dan meningkatkan kestabilan. Artikel ini akan menerangkan prinsip, kelebihan dan risiko yang mungkin ada dalam strategi perdagangan ini.
Strategi ini terdiri daripada tiga modul utama:
Membina penapis trend menggunakan EMA rata-rata 5 tempoh yang berbeza (8, 13, 21, 34, 55); rata-rata dari jangka pendek ke jangka panjang, hanya mempunyai ciri-ciri trend dan menghasilkan isyarat perdagangan apabila rata-rata jangka pendek melintasi jangka panjang.
Dalam kombinasi dengan RSI dan Stochastic, penembusan akan disahkan untuk mengelakkan banyak penembusan palsu di pasaran yang bergolak.
Parameter RSI adalah 14, apabila RSI memenuhi syarat untuk melakukan lebih banyak di antara 40-70, dan memenuhi syarat untuk melakukan lebih sedikit di antara 30-60.
Parameter Stochastic adalah ((14,3,3), apabila K line memenuhi syarat untuk melakukan lebih banyak apabila dalam julat 20-80, dan memenuhi syarat untuk melakukan kurang apabila dalam julat 5-95).
Sinyal masuk hanya akan dicetuskan apabila faktor garis rata-rata dan faktor penunjuk getaran memenuhi syarat; apabila salah satu faktor tidak lagi memenuhi syarat, isyarat keluar akan dihasilkan.
Strategi ini menggunakan mekanisme penapisan pelbagai faktor yang ketat, memastikan bahawa isyarat perdagangan stabil dan boleh dipercayai, sambil mengekalkan kadar kemenangan yang tinggi.
Strategi ini berjaya menggabungkan kelebihan trend-following dan perdagangan reversal, model faktor-multi mengawal risiko dengan berkesan, dan boleh memperoleh keuntungan tambahan yang stabil. Ini adalah model strategi perdagangan kuantitatif yang sangat praktikal, yang layak untuk penyelidikan dan aplikasi mendalam oleh komuniti kecerdasan buatan.
/*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")