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.
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.
Ini adalah strategi pengesanan trend yang agak stabil dan cekap, dengan kelebihan utama berikut:
Menggunakan TSI untuk menilai arah trend jangka panjang adalah lebih dipercayai, mengelakkan gangguan oleh bunyi pasaran jangka pendek;
Penambahan penunjuk CCI boleh mengesahkan fenomena overbought/oversold dan menapis beberapa isyarat palsu;
Penghakiman Hull MA
Integrasi penunjuk dengan parameter yang berbeza dapat meningkatkan kebolehpercayaan isyarat dan mengurangkan kebarangkalian gangguan.
Tetapan parameter strategi yang fleksibel boleh dioptimumkan untuk kitaran pasaran yang berbeza.
Walaupun strategi ini agak stabil, masih ada beberapa risiko yang perlu diperhatikan:
Pasaran mungkin mengalami kemunduran yang ganas yang tidak dapat dihentikan dengan cepat untuk kerugian, menyebabkan kerugian yang agak besar;
Penunjuk TSI Diff dan CCI mungkin mempunyai isyarat palsu dan kelewatan, kehilangan beberapa titik masuk;
Tetapan parameter yang tidak betul juga boleh membawa kepada kekerapan perdagangan yang terlalu tinggi atau penurunan kualiti isyarat.
Tindakan balas:
Sesuaikan stop loss dengan sewajarnya untuk mengawal kehilangan tunggal;
mengesahkan dengan penunjuk lain yang sesuai untuk meningkatkan ketepatan isyarat;
Sesuaikan parameter mengikut pasaran untuk memastikan kestabilan strategi.
Strategi ini juga boleh dioptimumkan dalam aspek berikut:
Cuba kombinasi yang berbeza dari penunjuk parameter untuk mencari kecocokan terbaik;
Memperkenalkan algoritma pembelajaran mesin untuk mencapai pengoptimuman parameter adaptif;
Meningkatkan modul pengurusan modal untuk keuntungan yang lebih stabil;
Masukkan lebih banyak penapis untuk meningkatkan kadar kemenangan strategi.
Ini akan menjadi tumpuan untuk pengoptimuman masa depan.
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)