Strategi Mengikuti Tren Rata-rata Pergerakan Hall Berdasarkan TSI dan CCI


Tanggal Pembuatan: 2023-11-28 15:53:03 Akhirnya memodifikasi: 2023-11-28 15:53:03
menyalin: 0 Jumlah klik: 765
1
fokus pada
1621
Pengikut

Strategi Mengikuti Tren Rata-rata Pergerakan Hall Berdasarkan TSI dan CCI

Ringkasan

Strategi ini menggabungkan tiga indikator, yaitu indeks kekuatan relatif (TSI), indeks jalur komoditas (CCI), dan Hull Moving Average (Hull MA), untuk membentuk strategi perdagangan yang mengikuti tren. Strategi ini dapat melacak perdagangan garis panjang pada varietas perdagangan apa pun dalam kerangka waktu 1 jam atau lebih.

Prinsip Strategi

Strategi ini terutama didasarkan pada dua indikator TSI dan CCI untuk menilai tren pasar dan kondisi overbought dan oversold, serta Hull MA untuk menilai tren harga jangka menengah, ketiganya bekerja sama sebagai kondisi dasar untuk membangun posisi.

Hull MA digunakan untuk menyaring tren jangka menengah, hanya jika harga lebih tinggi dari Hull MA dan lebih tinggi dari Hull MA.

Dengan demikian, dengan mengkonfirmasi berbagai indikator siklus, dapat secara efektif memfilter terobosan palsu dan melacak tren garis panjang menengah.

Analisis Keunggulan

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

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

  2. Menambahkan indikator CCI, dapat mengkonfirmasi fenomena overbought dan oversold, dan memfilter beberapa sinyal palsu;

  3. Pengadilan Hull MA membuat titik masuk lebih tepat dan meningkatkan peluang keuntungan secara signifikan;

  4. Integrasi berbagai parameter indikator, dapat meningkatkan keandalan sinyal, mengurangi kemungkinan gangguan.

  5. Pengaturan parameter strategi yang fleksibel dapat disesuaikan dengan siklus pasar yang berbeda.

Analisis risiko

Meskipun strategi ini stabil, ada beberapa risiko yang perlu diperhatikan:

  1. Hal ini dapat terjadi jika terjadi perlambatan yang sangat besar, yang tidak dapat dihentikan dengan cepat, dan menyebabkan kerugian yang lebih besar.

  2. Indikator TSIDiff dan CCI dapat mengalami sinyal palsu dan lag, misses beberapa titik masuk;

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

Tanggapan:

  1. Mengatur titik-titik penghentian yang tepat untuk mengendalikan kerugian tunggal;

  2. Meningkatkan akurasi sinyal, dikombinasikan dengan indikator lain, jika diperlukan;

  3. Adapun strategi yang digunakan adalah strategi yang disesuaikan dengan parameter pasar.

Arah optimasi

Strategi ini juga dapat dioptimalkan dalam beberapa hal:

  1. Mencoba kombinasi indikator parameter yang berbeda untuk menemukan indikator yang paling cocok;

  2. Menambahkan algoritma pembelajaran mesin untuk mengoptimalkan penyesuaian parameter;

  3. Menambahkan modul pengelolaan dana untuk stabilitas pendapatan;

  4. Dengan lebih banyak filter, Anda bisa meningkatkan peluang Anda untuk menang.

Ini akan menjadi fokus optimasi di masa depan.

Meringkaskan

Strategi ini menggabungkan tiga indikator TSI, CCI, dan Hull MA, membentuk strategi pelacakan tren yang lebih stabil dan efisien. Strategi ini berhasil menerapkan keunggulan indikator beberapa periode waktu, meningkatkan kualitas sinyal. Langkah selanjutnya adalah untuk meningkatkan stabilitas dan profitabilitas strategi dengan cara optimasi parameter, penguatan filter, dll.

Kode Sumber Strategi
/*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)