Sebuah strategi perdagangan kuantitatif multi faktor, yang mempertimbangkan faktor kesetaraan dan faktor indikator osilasi secara komprehensif untuk mengendalikan risiko dan meningkatkan stabilitas. Artikel ini akan menjelaskan secara rinci prinsip, keuntungan, dan risiko yang mungkin ada dalam strategi perdagangan ini.
Strategi ini terdiri dari tiga modul utama:
Membangun filter tren dengan menggunakan 5 garis rata-rata EMA dengan periode yang berbeda (8, 13, 21, 34, 55); garis rata-rata diurutkan dari pendek ke panjang, dan hanya memiliki karakteristik tren dan menghasilkan sinyal perdagangan ketika melewati garis rata-rata periode panjang di atas garis rata-rata periode pendek.
Dengan menggunakan indikator RSI dan Stochastic untuk memverifikasi terobosan, untuk menghindari terobosan palsu dalam pasar yang bergejolak.
Parameter RSI adalah 14, ketika RSI berada di kisaran 40-70 sesuai dengan kondisi over dan 30-60 sesuai dengan kondisi under.
Parameter stokastik adalah ((14,3,3), ketika garis K memenuhi syarat untuk melakukan lebih banyak ketika berada di kisaran 20-80, dan memenuhi syarat untuk melakukan lebih sedikit ketika berada di kisaran 5-95.
Sebuah sinyal masuk hanya akan dipicu jika faktor garis rata-rata dan faktor indikator osilasi memenuhi syarat; sinyal keluar akan dihasilkan jika salah satu faktor tidak lagi memenuhi syarat.
Seluruh strategi ini menggunakan mekanisme penyaringan multi faktor yang ketat, yang memastikan bahwa sinyal perdagangan stabil dan dapat diandalkan sambil mempertahankan tingkat kemenangan yang tinggi.
Strategi ini berhasil menggabungkan keuntungan dari trend tracking dan reversal trading, model multi faktor secara efektif mengendalikan risiko, dan dapat menghasilkan keuntungan ekstra yang stabil. Ini adalah model strategi perdagangan kuantitatif yang sangat praktis yang layak untuk penelitian dan aplikasi mendalam oleh komunitas 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")