Strategi kuantitatif Dwi CCI


Tarikh penciptaan: 2023-11-28 15:47:04 Akhirnya diubah suai: 2023-11-28 15:47:04
Salin: 1 Bilangan klik: 708
1
fokus pada
1619
Pengikut

Strategi kuantitatif Dwi CCI

Gambaran keseluruhan

Strategi ini membentuk isyarat perdagangan dengan menggabungkan petunjuk teknikal klasik CCI dan VCI, MCI ganda yang dibangunkan sendiri untuk membentuk isyarat perdagangan. Strategi ini merupakan strategi perdagangan kuantitatif yang tipikal. Ia membentuk isyarat perdagangan dengan mengenal pasti trend perubahan dalam Volume dan Harga, menilai arah dan kekuatan perdagangan utama semasa. Ia boleh digunakan secara meluas untuk instrumen kewangan seperti mata wang digital, forex dan saham.

Prinsip Strategi

  1. Mengira garis purata ohlc4 dan menilai harga dengan menggunakan indikator cici;
  2. Kaedah ini digunakan untuk mengukur aliran wang.
  3. Mengira Indeks VCI, iaitu pembahagian aliran wang yang diukur dengan perbezaan di antara indikator obv;
  4. Mengira Indeks MCI, iaitu pengukuran perbezaan harga dalam pembahagian harga;
  5. Perbandingan VCI dengan MCI untuk menilai pergerakan pasaran;
  • VCI > MCI, pembeli bersedia;
  • VCI < MCI, penjual bersedia;
  1. Isyarat lebih rendah berdasarkan perbandingan antara VCI dan MCI;

Analisis kelebihan

  1. Strategi ini merangkumi harga, jumlah dagangan dan aliran wang ke pelbagai dimensi untuk menilai pergerakan pasaran dan memberi isyarat yang lebih tepat.
  2. VCI dan MCI dapat menyesuaikan diri dengan perubahan pasaran dalam masa nyata melalui pengiraan perbezaan piawai yang dinamik;
  3. Parameter strategi telah banyak dioptimumkan dengan pengkajian semula dan mempunyai kestabilan yang kuat;

Analisis risiko

  1. Pengiraan indikator harga dan jumlah transaksi terlewat, tidak dapat menangkap kejadian yang tidak dijangka;
  2. Strategi tunggal tidak dapat merangkumi keadaan pasaran yang kompleks dan berubah-ubah;
  3. Ia perlu digunakan bersama-sama dengan penunjuk lain yang tidak dapat menilai pasaran secara berasingan.

Arah pengoptimuman

  1. Meningkatkan ketepatan penilaian isyarat dengan menggunakan model ramalan seperti pembelajaran mendalam;
  2. Menambah modul kawalan risiko seperti stop loss untuk meningkatkan kestabilan strategi;
  3. Anda boleh mencuba kombinasi parameter yang berbeza untuk menguji kesesuaian dalam pasaran tertentu.

ringkaskan

Strategi ini membentuk isyarat dagangan melalui perbandingan indeks dua-cci, mempertimbangkan pelbagai faktor seperti harga dan jumlah perdagangan, untuk menilai kekuatan jual beli pasaran, merupakan strategi perdagangan kuantitatif yang tipikal dan praktikal. Tetapi masih perlu digunakan bersama dengan alat bantu lain untuk mencapai keberkesanan maksimum strategi.

Kod 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")