STS dan CCI Hull Strategi Pelacakan Tren Rata-rata Gerak

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

img

Gambaran umum

Strategi ini mengintegrasikan Indeks Kekuatan Relatif (TSI), Indeks Saluran Komoditas (CCI) dan indikator Hull Moving Average (Hull MA) untuk membentuk strategi perdagangan pelacakan tren.

Prinsip Strategi

Strategi ini terutama menggunakan indikator TSI dan CCI untuk menilai arah tren dan situasi overbought/oversold di pasar, serta Hull MA untuk menentukan tren harga menengah, dan ketiga indikator tersebut dikombinasikan sebagai kondisi dasar untuk membuka posisi.

Secara khusus, ketika garis cepat TSI melintasi di atas garis lambat, indikator CCI melintasi di atas +20 && n1 naik, pergi panjang; ketika garis cepat TSI melintasi di bawah garis lambat, indikator CCI melintasi di bawah -20 && n1 turun, pergi pendek.

Dengan mengkonfirmasi dengan indikator pada siklus yang berbeda, terobosan palsu dapat secara efektif disaring untuk melacak tren jangka menengah dan panjang.

Analisis Keuntungan

Ini adalah strategi pelacakan tren yang relatif stabil dan efisien, dengan keuntungan utama berikut:

  1. Menggunakan TSI untuk menilai arah tren jangka panjang lebih dapat diandalkan, menghindari gangguan dari kebisingan pasar jangka pendek;

  2. Penambahan indikator CCI dapat mengkonfirmasi fenomena overbought/oversold dan menyaring beberapa sinyal palsu;

  3. Pertimbangan Hull MA membuat titik masuk lebih tepat, sangat meningkatkan probabilitas keuntungan;

  4. Integrasi indikator dengan parameter yang berbeda dapat meningkatkan keandalan sinyal dan mengurangi kemungkinan gangguan.

  5. Pengaturan parameter yang fleksibel dari strategi dapat dioptimalkan untuk siklus pasar yang berbeda.

Analisis Risiko

Meskipun strategi ini relatif stabil, masih ada beberapa risiko yang perlu dicatat:

  1. Pasar dapat mengalami kemunduran yang keras yang tidak dapat dengan cepat dihentikan karena kerugian, menyebabkan kerugian yang relatif besar;

  2. Indikator TSI Diff dan CCI dapat memiliki sinyal palsu dan keterlambatan, kehilangan beberapa titik masuk;

  3. Pengaturan parameter yang tidak tepat juga dapat menyebabkan frekuensi perdagangan yang terlalu tinggi atau penurunan kualitas sinyal.

Pengendalian:

  1. Sesuaikan stop loss dengan tepat untuk mengendalikan loss tunggal;

  2. Konfirmasi dengan indikator lain sesuai untuk meningkatkan akurasi sinyal;

  3. Sesuaikan parameter sesuai dengan pasar untuk memastikan stabilitas strategi.

Arahan Optimasi

Strategi ini juga dapat dioptimalkan dalam aspek berikut:

  1. Cobalah kombinasi indikator parameter yang berbeda untuk menemukan pencocokan terbaik;

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

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

  4. Masukkan lebih banyak filter untuk meningkatkan tingkat kemenangan strategi.

Ini akan menjadi fokus untuk optimasi di masa depan.

Ringkasan

Strategi ini secara komprehensif memanfaatkan indikator TSI, CCI dan Hull MA untuk membentuk strategi pelacakan tren yang relatif stabil dan efisien. Ini berhasil memanfaatkan keuntungan dari indikator multi-siklus untuk meningkatkan kualitas sinyal. Langkah selanjutnya adalah untuk lebih meningkatkan stabilitas dan profitabilitas strategi melalui optimasi parameter, peningkatan filter dan sarana lainnya.


/*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 banyak