Strategi kuantitatif CCI ganda


Tanggal Pembuatan: 2023-11-28 15:47:04 Akhirnya memodifikasi: 2023-11-28 15:47:04
menyalin: 1 Jumlah klik: 710
1
fokus pada
1621
Pengikut

Strategi kuantitatif CCI ganda

Ringkasan

Strategi ini membentuk sinyal perdagangan dengan menggabungkan indikator teknis klasik CCI dan indeks ganda VCI, MCI yang dikembangkan sendiri. Strategi ini merupakan strategi perdagangan kuantitatif yang khas. Ini membentuk sinyal perdagangan dengan mengidentifikasi tren perubahan Volume dan Harga, menilai arah dan intensitas perdagangan utama saat ini.

Prinsip Strategi

  1. Perhitungan garis rata-rata ohlc4 dan penilaian harga dalam kombinasi dengan indikator cici;
  2. Perhitungan indikator obv untuk mengukur aliran dana;
  3. Menghitung indeks VCI, yang mengukur distribusi arus dana dengan menggunakan indikator obv;
  4. Menghitung indeks MCI, yang mengukur distribusi harga melalui perbedaan harga;
  5. Perbandingan VCI dengan MCI untuk menilai tren pasar;
  • VCI > MCI, pembeli bersedia;
  • VCI < MCI, penjual bersedia;
  1. Sinyal forex yang lebih banyak dibentuk berdasarkan perbandingan VCI dan MCI;

Analisis Keunggulan

  1. Strategi ini mencakup harga, volume transaksi, dan aliran dana ke berbagai dimensi, dan memberikan sinyal yang lebih akurat tentang tren pasar.
  2. VCI dan MCI dapat beradaptasi dengan perubahan pasar secara real-time melalui perhitungan standar diferensial dinamis;
  3. Parameter strategi yang telah dioptimalkan dengan banyak pengukuran ulang, memiliki stabilitas yang kuat;

Analisis risiko

  1. Indikator harga dan volume transaksi terlambat dihitung dan tidak dapat menangkap kejadian yang tidak terduga sebelumnya;
  2. Strategi tunggal tidak dapat sepenuhnya mencakup situasi pasar yang kompleks dan berubah-ubah;
  3. Indikator ini perlu digunakan dalam kombinasi dengan indikator tambahan lainnya, sehingga tidak dapat menilai pasar secara terpisah.

Arah optimasi

  1. Untuk meningkatkan akurasi penilaian sinyal, model prediksi seperti Deep Learning digunakan.
  2. Menambahkan modul pengendalian risiko, seperti stop loss, untuk meningkatkan stabilitas strategi;
  3. Anda dapat mencoba kombinasi parameter yang berbeda untuk menguji kelayakan dalam pasar tertentu.

Meringkaskan

Strategi ini membentuk sinyal perdagangan melalui perbandingan indeks ganda cc, mempertimbangkan beberapa faktor seperti harga dan volume perdagangan, untuk menilai kekuatan jual beli di pasar, merupakan strategi perdagangan kuantitatif yang khas dan praktis. Namun, masih perlu digunakan bersama dengan alat bantu lainnya untuk memaksimalkan efektivitas strategi.

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

//@version=3
strategy("MCI and VCI - Modified CCI Formulas")
test = cci(ohlc4, 13)
test1 = cci(ohlc4, 20)

obv(src) => cum(change(src) > 0 ? volume : change(src) < 0 ? -volume : 0*volume)
mDisc = input(0, title="Mode Discrepency")
mDiv = input(0.015, title="Interval")
mean(_src, _length)=>
    _return = sum(_src, _length) / _length

median(_src, _length)=>
    _return = _src
    for _i = 0 to _length
        _return := _return == 0 ? _src : (_return + _src[_i]) / 2
    _return


len = input(20, title="Standard (Average) Length")
mmm = input(20, title="Lookback length")
srcV = obv(input(ohlc4))
srcP = input(close)
x = sma(srcV, len)
MDV2 = abs(stdev(median(x, len), mmm))
MDV3 = abs(stdev(mean(x, len), mmm))
AMDV = (MDV2+MDV3)/2
pt1v = (srcV-ema(srcV, len))/ AMDV
pt2v = 1/mDiv
VCI=pt1v*pt2v
y = ema(srcP, len)
MDP2 =  abs(stdev(median(y, len), mmm))
MDP3 = abs(stdev(mean(y, len), mmm))
AMDA = (MDP2 + MDP3)/2
pt1p = 1/mDiv
pt2p = (srcP-ema(srcP, len))/ AMDA
MCI = pt1p * pt2p
plot(VCI, color=yellow, title="VCI", style="Histogram")
plot(MCI, color=white, title="MCI")

plot(500, style=line)

plot(0, style=line, linewidth=2)

plot(-500, style=line)
long = crossover(MCI, 0) and VCI > MCI[2] 
short = crossunder(MCI, 0) and VCI < MCI[2] 
//Time Control
//Set date and time
FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 13, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 2017)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"


direction = input(0, title = "Strategy Direction", minval=-1, maxval=1)
strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))
if (long)
    strategy.entry("Long", strategy.long, when=window(), limit=ohlc4, oca_name="BollingerBands",  comment="BBandLE")
else
    strategy.cancel(id="Long")

if (short)
    strategy.entry("Short", strategy.short, when=window(), limit=ohlc4, oca_name="BollingerBands", comment="BBandSE")
else
    strategy.cancel(id="Short")