Strategi ini menggabungkan tiga petunjuk iaitu Indeks Kekuatan Relatif (TSI), Indeks Jalan Komoditi (CCI), dan Purata Pergerakan Hull (Hull MA) untuk membentuk strategi perdagangan jenis trend. Ia boleh menjejaki perdagangan dalam barisan panjang untuk jenis perdagangan apa pun dalam satu jam atau lebih.
Strategi ini adalah berdasarkan kepada dua indikator iaitu TSI dan CCI yang menilai trend pasaran dan keadaan overbought dan oversold, dan Hull MA yang menilai trend harga jangka menengah, ketiga-tiganya bekerjasama sebagai syarat asas untuk membina kedudukan.
Khususnya, apabila garis pantas TSI melintasi garis perlahan, apabila CCI melintasi +20&&n1 naik, lakukan lebih banyak; apabila garis pantas TSI melintasi garis perlahan, apabila CCI melintasi -20&n1 turun, kosongkan. Hull MA digunakan untuk menapis trend pertengahan, hanya apabila harga lebih rendah daripada Hull MA dan kosongkan apabila harga lebih tinggi daripada Hull MA.
Oleh itu, dengan pengesahan indikator kitaran yang berbeza, penembusan palsu dapat disaring dengan berkesan dan trend garis panjang tengah dapat dikesan.
Ini adalah strategi trend tracking yang agak stabil dan berkesan, dengan beberapa kelebihan utama:
Menggunakan TSI untuk menentukan arah trend jangka panjang lebih dipercayai, mengelakkan gangguan bunyi pasaran jangka pendek;
Penambahan indeks CCI, yang boleh mengesahkan fenomena overbought dan oversold, menapis beberapa isyarat palsu;
Penghakiman Hull MA menjadikan titik masuk lebih tepat dan meningkatkan peluang keuntungan;
Integrasi pelbagai parameter dapat meningkatkan kebolehpercayaan isyarat dan mengurangkan kemungkinan gangguan.
Tetapan parameter strategi fleksibel dan boleh disesuaikan dengan pengoptimuman kitaran pasaran yang berbeza.
Walaupun strategi ini lebih stabil, terdapat beberapa risiko yang perlu diperhatikan:
Ia boleh menyebabkan kemerosotan yang besar dan tidak dapat dihentikan dengan cepat.
Indeks TSIDiff dan CCI mungkin menunjukkan isyarat palsu dan ketinggalan, kehilangan beberapa titik masuk;
Tetapan parameter yang tidak betul juga boleh menyebabkan frekuensi transaksi yang terlalu tinggi atau penurunan kualiti isyarat.
Kaedah pencegahan:
Mengambil langkah-langkah yang betul untuk mengawal kerugian tunggal;
Meningkatkan ketepatan isyarat dengan pengesahan, jika perlu, dalam kombinasi dengan penunjuk lain;
Berpegang pada parameter penyesuaian pasaran untuk memastikan strategi stabil.
Strategi ini juga boleh dioptimumkan dalam beberapa aspek:
Mencuba kombinasi parameter yang berbeza untuk mencari pencocokan terbaik;
Menambah algoritma pembelajaran mesin untuk mencapai optimasi penyesuaian parameter;
Menambah modul pengurusan wang untuk menstabilkan pendapatan;
Dengan penapis tambahan, anda dapat meningkatkan peluang anda untuk menang.
Ini akan menjadi fokus pengoptimuman pada masa akan datang.
Strategi ini menggabungkan tiga penunjuk TSI, CCI dan Hull MA, membentuk strategi pengesanan trend yang lebih stabil dan cekap. Ia berjaya menggunakan kelebihan penunjuk pelbagai tempoh masa, meningkatkan kualiti isyarat. Langkah seterusnya akan meningkatkan lagi kestabilan dan keuntungan strategi melalui pengoptimuman parameter, peningkatan penapis dan sebagainya.
/*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)