STI dan CCI Hull Moving Average Trend Tracking Strategy

Penulis:ChaoZhang, Tarikh: 2023-11-28 15:53:03
Tag:

img

Ringkasan

Strategi ini mengintegrasikan Indeks Kekuatan Relatif (TSI), Indeks Saluran Komoditi (CCI) dan penunjuk Purata Bergerak Hull (Hull MA) untuk membentuk strategi perdagangan penjejakan trend. Ia boleh melakukan perdagangan penjejakan jangka panjang pada mana-mana jenis perdagangan dalam bingkai masa sejam atau lebih tinggi.

Prinsip Strategi

Strategi ini terutamanya menggunakan penunjuk TSI dan CCI untuk menilai arah trend dan situasi overbought/oversold pasaran, serta Hull MA untuk menentukan trend harga pertengahan, dan ketiga-tiga gabungan sebagai syarat asas untuk membuka kedudukan.

Khususnya, apabila garis pantas TSI melintasi di atas garis perlahan, penunjuk CCI melintasi di atas +20 && n1 naik, pergi panjang; apabila garis pantas TSI melintasi di bawah garis perlahan, penunjuk CCI melintasi di bawah -20 && n1 jatuh, pergi pendek. Hull MA digunakan untuk menapis trend pertengahan, hanya pergi panjang apabila harga di bawah Hull MA, dan pergi pendek apabila harga di atas Hull MA.

Dengan mengesahkan dengan penunjuk merentasi kitaran yang berbeza, pecah palsu dapat disaring dengan berkesan untuk mengesan trend jangka sederhana dan panjang.

Analisis Kelebihan

Ini adalah strategi pengesanan trend yang agak stabil dan cekap, dengan kelebihan utama berikut:

  1. Menggunakan TSI untuk menilai arah trend jangka panjang adalah lebih dipercayai, mengelakkan gangguan oleh bunyi pasaran jangka pendek;

  2. Penambahan penunjuk CCI boleh mengesahkan fenomena overbought/oversold dan menapis beberapa isyarat palsu;

  3. Penghakiman Hull MA menjadikan titik masuk lebih tepat, meningkatkan kemungkinan keuntungan;

  4. Integrasi penunjuk dengan parameter yang berbeza dapat meningkatkan kebolehpercayaan isyarat dan mengurangkan kebarangkalian gangguan.

  5. Tetapan parameter strategi yang fleksibel boleh dioptimumkan untuk kitaran pasaran yang berbeza.

Analisis Risiko

Walaupun strategi ini agak stabil, masih ada beberapa risiko yang perlu diperhatikan:

  1. Pasaran mungkin mengalami kemunduran yang ganas yang tidak dapat dihentikan dengan cepat untuk kerugian, menyebabkan kerugian yang agak besar;

  2. Penunjuk TSI Diff dan CCI mungkin mempunyai isyarat palsu dan kelewatan, kehilangan beberapa titik masuk;

  3. Tetapan parameter yang tidak betul juga boleh membawa kepada kekerapan perdagangan yang terlalu tinggi atau penurunan kualiti isyarat.

Tindakan balas:

  1. Sesuaikan stop loss dengan sewajarnya untuk mengawal kehilangan tunggal;

  2. mengesahkan dengan penunjuk lain yang sesuai untuk meningkatkan ketepatan isyarat;

  3. Sesuaikan parameter mengikut pasaran untuk memastikan kestabilan strategi.

Arahan pengoptimuman

Strategi ini juga boleh dioptimumkan dalam aspek berikut:

  1. Cuba kombinasi yang berbeza dari penunjuk parameter untuk mencari kecocokan terbaik;

  2. Memperkenalkan algoritma pembelajaran mesin untuk mencapai pengoptimuman parameter adaptif;

  3. Meningkatkan modul pengurusan modal untuk keuntungan yang lebih stabil;

  4. Masukkan lebih banyak penapis untuk meningkatkan kadar kemenangan strategi.

Ini akan menjadi tumpuan untuk pengoptimuman masa depan.

Ringkasan

Strategi ini secara komprehensif menggunakan penunjuk TSI, CCI dan Hull MA untuk membentuk strategi penjejakan trend yang agak stabil dan cekap. Ia berjaya memanfaatkan kelebihan penunjuk pelbagai kitaran untuk meningkatkan kualiti isyarat. Langkah seterusnya adalah untuk meningkatkan lagi kestabilan dan keuntungan strategi melalui pengoptimuman parameter, peningkatan penapis dan cara lain.


/*backtest
start: 2022-11-21 00:00:00
end: 2023-11-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

strategy(title="TSI CCI Hull", shorttitle="TSICCIHULL", default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills= false, calc_on_every_tick=true, pyramiding=0)
long = input(title="Long Length", type=input.integer, defval=50)
short = input(title="Short Length", type=input.integer, defval=50)
signal = input(title="Signal Length", type=input.integer, defval=25)
price=input(title="Source",type=input.source,defval=open)
Period=input(25, minval=1)
lineupper = input(title="Upper Line", type=input.integer, defval=100)
linelower = input(title="Lower Line", type=input.integer, defval=-100)
p=price
length= Period
double_smooth(src, long, short) =>
    fist_smooth = ema(src, long)
    ema(fist_smooth, short)
pc = change(price)
double_smoothed_pc = double_smooth(pc, long, short)
double_smoothed_abs_pc = double_smooth(abs(pc), long, short)
tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)
keh = tsi_value*5 > linelower ? color.red : color.lime
teh = ema(tsi_value*5, signal*5) > lineupper ? color.red : color.lime
meh = ema(tsi_value*5, signal*5) > tsi_value*5 ? color.red : color.lime
i1=plot(tsi_value*5, title="TSI Value", color=color.black, linewidth=1,transp=100)
i2=plot(ema(tsi_value*5, signal*5), title="TSI Signal", color=color.black, linewidth=1,transp=100)
fill(i1,i2,color=meh,transp=85)
plot(cross(tsi_value*5, ema(tsi_value*5, signal*5)) ? tsi_value*5 : na, style=plot.style_circles, color=color.black, linewidth=10)
plot(cross(tsi_value*5, ema(tsi_value*5, signal*5)) ? tsi_value*5 : na, style=plot.style_circles, color=color.white, linewidth=8,transp=0)
plot(cross(tsi_value*5, ema(tsi_value*5, signal*5)) ? tsi_value*5 : na, style=plot.style_circles, color=meh, linewidth=5)
n2ma = 2 * wma(p, round(length / 2))
nma = wma(p, length)
diff = n2ma - nma
sqn = round(sqrt(length))
n1 = wma(diff, sqn)
cci = (p - n1) / (0.015 * dev(p, length))
c = cci > 0 ? color.lime : color.red
c1 = cci > 20 ? color.lime : color.silver
c2 = cci < -20 ? color.red : color.silver
cc=plot(cci, color=c, title="CCI Line", linewidth=2)
cc2=plot(cci[1], color=color.gray, linewidth=1,transp=100)
fill(cc,cc2,color=c,transp=85)
plot(cross(20, cci) ? 20 : na, style=plot.style_cross,title="CCI cross UP",  color=c1, linewidth=2,transp=100,offset=-2)
plot(cross(-20, cci) ? -20 : na, style=plot.style_cross,title="CCI cross down",  color=c2, linewidth=2,transp=100,offset=-2)

TSI1=ema(tsi_value*5, signal*5)
TSI2=ema(tsi_value*5, signal*5)[2]

hullma_smoothed = wma(2*wma(n1, Period/2)-wma(n1, Period), round(sqrt(Period)))
//plot(hullma_smoothed*200)

longCondition = TSI1>TSI2 and hullma_smoothed<price and cci>0
if (longCondition and cci>cci[1] and cci > 0 and n1>n1[1])
    strategy.entry("Buy Here", strategy.long)

shortCondition = TSI1<TSI2 and hullma_smoothed>price and cci<0
if (shortCondition and cci<cci[1] and cci < 0 and n1<n1[1])
    strategy.entry("Sell Here", strategy.short)

Lebih lanjut