CCI Dual Timeframe Trend Mengikut Strategi

Penulis:ChaoZhang, Tarikh: 2023-11-24 10:53:07
Tag:

img

Ringkasan

Strategi ini adalah trend mengikuti strategi berdasarkan penunjuk CCI. Ia menjana isyarat perdagangan dengan memantau persilangan antara dua CCI jangka masa yang berbeza. Khususnya, ia akan mengesan jika CCI jangka pendek memecahkan CCI jangka panjang dan menentukan kedudukan panjang atau pendek berdasarkan arah terobosan.

Logika Strategi

Logik teras strategi ini ialah:

  1. Mendefinisikan dua CCI, ci1 sebagai 14 tempoh, ci2 sebagai 56 tempoh
  2. Apabila ci1 memecahkan di atas ci2, pergi panjang
  3. Apabila ci1 memecahkan di bawah ci2, pergi pendek
  4. Gunakan nilai ci1 dan ci2 untuk menentukan keluar selepas isyarat dicetuskan

Peraturan panjang khusus:

  1. ci1 pecah di atas ci2, CCI tempoh yang lebih pendek di atas CCI tempoh yang lebih lama
  2. Keadaan penghentian kerugian: ci1 <-50 dan kadar perubahan < 0 atau ci1 pecah di bawah -100

Peraturan ringkas khusus:

  1. ci1 pecah di bawah ci2, CCI tempoh yang lebih pendek di bawah CCI tempoh yang lebih lama
  2. Keadaan stop loss: ci1 > 100 dan kadar perubahan > 0 atau ci2 pecah di atas 100

Seperti yang dapat dilihat, strategi ini memanfaatkan kepekaan CCI jangka pendek dan kestabilan CCI jangka panjang untuk mengenal pasti dan mengikuti trend.

Kelebihan

Kelebihan strategi ini:

  1. Mengenali trend dengan berkesan menggunakan kekuatan penunjuk CCI
  2. Reka bentuk CCI berganda menapis beberapa perdagangan bunyi bising
  3. Gabungan PKI jangka panjang dan jangka pendek mengawal risiko sambil mengikuti trend
  4. Peraturan strategi yang mudah difahami dan dilaksanakan
  5. Sangat boleh dikonfigurasi, kedua-dua tempoh CCI dan keadaan stop loss boleh disesuaikan

Risiko

Terdapat juga beberapa risiko:

  1. Kemampuan yang lemah untuk mengenal pasti pasaran terhad dan turun naik menggunakan CCI
  2. Perbezaan mungkin berlaku antara CCI jangka panjang dan jangka pendek, menyebabkan isyarat yang salah
  3. Tetapan stop loss yang tidak betul boleh membawa kepada kerugian besar
  4. Penyesuaian parameter yang tidak sesuai juga memberi kesan besar kepada keuntungan strategi

Penyelesaian:

  1. Menggabungkan penunjuk lain untuk menentukan keadaan pasaran, mengelakkan perdagangan dalam tempoh tidak menentu
  2. Tambah penapis untuk mengelakkan kesilapan dari perbezaan CCI
  3. Mengoptimumkan dan menguji tahap stop loss yang berbeza
  4. Cari set parameter yang sesuai melalui backtesting dan penyesuaian

Arahan pengoptimuman

Bidang di mana strategi boleh dioptimumkan lebih lanjut:

  1. Tambah lebih banyak penunjuk untuk membina sistem perdagangan yang lebih sistematik
  2. Perbezaan keuntungan ujian antara hari kerja dan sesi
  3. Cari parameter yang lebih baik menggunakan pembelajaran mesin
  4. Parameter tune untuk produk yang berbeza
  5. Mengoptimumkan peraturan kemasukan dan keluar

Kesimpulan

Kesimpulannya, ini adalah strategi trend berikut yang mudah berdasarkan persilangan CCI. Ia dapat mengenal pasti arah trend dengan berkesan dan mengikuti trend. Sementara itu ia mengawal risiko melalui stop loss. Strategi ini mudah, praktikal, fleksibel dalam penyesuaian parameter, dan boleh berfungsi sebagai strategi kuant permulaan. Ia boleh ditingkatkan menjadi sistem yang lebih kuat melalui pengoptimuman dan kombinasi lanjut.


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

//@version=3
strategy(title="my work",calc_on_order_fills=true,currency=currency.USD, default_qty_type=strategy.percent_of_equity,commission_type=strategy.commission.percent)


source = close
shortlength=input(14)
longlength=input(56)
aa=input(2)
Ss=input(75)

//Cci part
ci1=cci(source,shortlength)   //4시간봉의 기본 cci
ci2=cci(source,longlength)   //4시간봉에서 12시봉의 cci 무빙측정

//오린간 선생님의 WT + ichimoku
len = input(10)
lenTurn = input(9)
lenStd = input(26)

wtm_e(so, l) =>
    esa = ema(so, l)
    d = ema(abs(so - esa), l)
    ci = (so - esa) / (0.015 * d)
    ema(ci, l*2+1)

alh(len) => avg(lowest(len), highest(len))
alh_src(src, len) => avg(lowest(src, len), highest(src, len))

wt = wtm_e(close,len)
turn = alh_src(wt, lenTurn)
std = alh_src(wt, lenStd)

cnt = 0
if wt > turn
    cnt:=cnt+1
if wt > std
    cnt:=cnt+1


//100,-100선
h0 = hline(100)
h1 = hline(-100)

//plot(ci,color=green)
// plot(k,color=green)
// plot(d,color=red)
plot(ci1,color=green)
plot(ci2,color=red)

plot(0,color=black)
plot(100,color=black)
plot(-100,color=black)

fill(h0,h1,color=purple,transp=95)

bgcolor(cnt==0 ? red : cnt==1 ? blue : cnt == 2 ? green : na, transp = Ss)

//기간조정

Fromday = input(defval=1, title="from day", minval=1, maxval=31)
FromMonth = input(defval=1, title="from month", minval=1, maxval=12)
FromYr = input(defval=2019, title="from yr", minval=1970)

Today = input(defval=13, title="to day", minval=1, maxval=31)
ToMonth = input(defval=12, title="to month", minval=1, maxval=12)
ToYr = input(defval=2019, title="to yr", minval=1970)

startDate = timestamp(FromYr, FromMonth, Fromday, 00, 00)
finishDate = timestamp(ToYr, ToMonth, Today, 00, 00)
Time_cond = true


/////롱

if  crossover(ci1,ci2) and change(ci2)>0 and Time_cond
    strategy.entry("go", strategy.long, comment="go")
    
strategy.close("go", (ci2<0 and ci1 <-50 and change(ci1)<0) or (crossunder(ci1,-100) and strategy.openprofit<0) and change(cnt)<0)



/////숏

if  (crossunder(ci1,ci2) and change(ci2)<0 and falling(ci1,aa)) and Time_cond
    strategy.entry("die", strategy.short, comment="die")
    
strategy.close("die", (ci2>0 and ci1 > 100 and change(ci1)>0) or (crossover(ci2,100) and strategy.openprofit<0) and change(cnt)>0)

Lebih lanjut