Strategi perdagangan kuantitatif multi-faktor yang menggabungkan RSI dan CCI dinamis


Tanggal Pembuatan: 2023-11-27 18:54:34 Akhirnya memodifikasi: 2023-11-27 18:54:34
menyalin: 0 Jumlah klik: 732
1
fokus pada
1617
Pengikut

Strategi perdagangan kuantitatif multi-faktor yang menggabungkan RSI dan CCI dinamis

Ringkasan

Strategi ini memungkinkan strategi perdagangan kuantitatif yang didorong oleh banyak faktor dengan menggabungkan indikator RSI yang dinamis, indikator CCI, dan garis rata-rata MA ganda. Strategi ini secara komprehensif mempertimbangkan beberapa dimensi, seperti tren, overbought dan oversold, untuk membuat keputusan dan menghasilkan sinyal perdagangan.

Prinsip Strategi

Indikator teknis

  • MA rata-rata: menghitung nilai rata-rata harga penutupan dalam periode tertentu untuk menilai tren harga
  • Indeks RSI Relatif Lemah: Perkiraan Zona Terbebani
  • Indeks Tren CCI: Perkiraan Keadaan Overbought dan Oversold
  • Indikator Stoch KDJ: menilai indikator acak yang menyimpang dari tren utama

Sinyal perdagangan

Sinyal beli: MA12 dengan MA26, CCI di bawah 100 (dijual), Stoch KDJ di bawah 80 (dijual)

Sinyal jual: RSI melintasi penurunan dinamis, Stoch KDJ lebih tinggi dari 80 (Overbought)

Keunggulan Strategis

  1. Multi-faktor drive, penilaian komprehensif, mengurangi sinyal palsu
  2. Sellable, deteksi real-time dari overbuying dan overselling
  3. Kombinasi dari tren, acak, dan berbagai indikator teknologi utama
  4. Fleksibilitas tinggi dengan pengaturan parameter multi-set

Risiko Strategis

  1. Komposisi multifaktor terlalu rumit dan parameternya terlalu sulit untuk dioptimalkan
  2. Kinerja strategi sangat terkait dengan pilihan parameter
  3. Optimasi parameter harus dilakukan secara ketat sesuai dengan proses kuantitatif
  4. Ada risiko lebih tinggi dari kecocokan kurva

Optimasi Strategi

  1. Lebih banyak dataset yang menguji strategi kehandalan
  2. Tes kombinasi parameter multiset untuk mencari parameter optimal
  3. Meningkatkan mekanisme stop loss untuk mengurangi penarikan maksimum
  4. Meningkatkan Kontrol Posisi untuk Mencegah Penembakan
  5. Pengujian kesesuaian dari berbagai jenis kontrak

Meringkaskan

Strategi ini menggunakan berbagai indikator teknis dan penilaian multi-faktor untuk mencari parameter optimal melalui penyesuaian parameter dan verifikasi statistik yang ketat, yang dapat memberikan efek strategi yang lebih baik. Namun, tingkat kompleksitasnya lebih tinggi, perlu mencegah risiko overfit, sambil mengendalikan posisi dan stop loss untuk mengurangi pengembalian maksimum. Strategi ini dapat diperluas ke varietas lain dan periode waktu untuk pengujian optimasi.

Kode Sumber Strategi
/*backtest
start: 2023-11-19 00:00:00
end: 2023-11-26 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="ATOM2.0", shorttitle="ATOM V2.0", overlay=false, default_qty_type=strategy.cash, currency=currency.USD, initial_capital=200, default_qty_type=strategy.cash, default_qty_value=100, pyramiding=10)

// Set Parameter MA12
len12 = input(12, minval=1, title="Length")
src12 = input(close, title="Source")
ma12 = sma(src12, len12)
//plot(ma12, color=color.blue, title="MA12")

// Set Parameter MA26
len26 = input(26, minval=1, title="Length")
src26 = input(close, title="Source")
ma26 = sma(src26, len26)
//plot(ma26, color=color.orange, title="MA12")

//Stochastic RSI 14,3,3
smoothK_1 = input(3, minval=1)
smoothD_1 = input(3, minval=1)
lengthRSI = input(14, minval=1)
lengthStoch = input(14, minval=1)
src_1 = input(close, title="RSI Source_1")

rsi1 = rsi(src_1, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK_1)
d = sma(k, smoothD_1)
//plot(k, color=color.red)
//plot(d, color=color.yellow)

//Stochastic RSI 5,4,3
smoothK_2 = input(4, minval=1)
smoothD_2 = input(3, minval=1)
lengthRSI_2 = input(5, minval=1)
lengthStoch_2 = input(5, minval=1)
src_2 = input(close, title="RSI Source_2")

rsi2 = rsi(src_2, lengthRSI_2)
k_2 = sma(stoch(rsi2, rsi2, rsi2, lengthStoch_2), smoothK_2)
d_2 = sma(k_2, smoothD_2)
//plot(k_2, color=color.white)
//plot(d_2, color=color.green)

// CCI
cci = cci(close,26)
//plot(cci,color=color.blue)

// Dynamic RSI
DZbuy = 0.1
DZsell = 0.1
Period = 14
Lb = 60

RSILine = rsi(close,Period)
jh = highest(RSILine, Lb)
jl = lowest(RSILine, Lb)
jc = (wma((jh-jl)*0.5,Period) + wma(jl,Period))
Hiline = jh - jc * DZbuy
Loline = jl + jc * DZsell
R = (4 * RSILine + 3 * RSILine[1] + 2 * RSILine[2] + RSILine[3] ) / 10

plot(R, title='R', color=color.white, linewidth=1, transp=0)
plot(Hiline, title='Hiline', color=color.yellow,  linewidth=1, transp=0)
plot(Loline, title='Loline', color=color.yellow, linewidth=1, transp=0)
plot(jc, title='Jc', color=color.purple,  linewidth=1, transp=50)

col_1 = R > Hiline ? color.red:na
col_2 = R < Loline ? color.green:na

fill(plot(R, title='R', color=color.white, linewidth=1, transp=0), plot(Hiline, title='Hiline', color=color.yellow,  linewidth=1, transp=0), color=col_1,transp=0)
fill(plot(R, title='R', color=color.white, linewidth=1, transp=0), plot(Loline, title='Loline', color=color.yellow, linewidth=1, transp=0), color=col_2,transp=0)
//------------------------------------------------------------------------------
// Calculate qty
// Parameter
fund = 10           // Fund per Contract in USD
leverage = 100     // Leverage
// Buy Condition
buyCondition = (ma12>ma26 and cci<100 and k<80 and d<80 and k_2<80 and d_2<80 and crossover(k_2, d_2))
buy = (buyCondition == input(1))
alertcondition(buy, title='time to Long', message='Long!!!')
//closeBuy = (cci>100 and cci<cci[1] and cci<cci[2])
closeBuy = (crossunder(R, Hiline) and k>80)
alertcondition(closeBuy, title='Time to Close', message='Close Long')

// Submit Orders
strategy.entry(id="Long", qty=(fund*leverage)/close, long=true, when=buyCondition)
strategy.close(id="Long", when=closeBuy)