Indeks Penyimpangan Trend dengan Strategi Purata Bergerak

Penulis:ChaoZhang, Tarikh: 2023-11-06 14:46:40
Tag:

img

Ringkasan

Strategi ini mengira Indeks Penyimpangan Trend (TSI) harga, memproses TSI dengan purata bergerak, dan membentuk garis purata bergerak TSI. Digabungkan dengan arah lilin harga, ia menentukan sama ada harga semasa berada dalam trend menaik atau penurunan, dan dengan itu menghasilkan isyarat beli dan jual.

Prinsip-prinsip

Langkah utama strategi ini ialah:

  1. Mengira peratusan perubahan harga
  2. Double smooth pct dengan HMA untuk mendapatkan double_smoothed_pc
  3. Mengira HMA berganda pct mutlak untuk mendapatkan double_smoothed_abs_pc
  4. Mengira nilai TSI: (100 * (double_smoothed_pc / double_smoothed_abs_pc))
  5. Nilai TSI proses dengan HMA untuk mendapatkan garis rata-rata bergerak TSI tsihmaline
  6. Bandingkan nilai TSI dan garis purata bergerak TSI, di atas purata bergerak adalah aliran menaik, di bawah adalah aliran menurun
  7. Dalam trend menaik, jika harga juga meningkat, menjana isyarat beli
  8. Dalam trend menurun, jika harga juga jatuh, menjana isyarat jual

Melalui langkah-langkah di atas, ia menentukan arah trend keseluruhan, digabungkan dengan pergerakan harga sebenar, untuk menjana isyarat perdagangan.

Kelebihan

  1. Double HMA penghalusan penapis keluar bising jangka pendek dan kunci dalam trend utama
  2. STI dan garis purata bergeraknya menentukan arah trend keseluruhan
  3. Digabungkan dengan lilin harga mengelakkan pecah palsu, meningkatkan kebolehpercayaan isyarat
  4. Parameter yang boleh disesuaikan menyesuaikan diri dengan pasaran kitaran yang berbeza
  5. Visualisasi grafik, hijau untuk aliran naik, merah untuk aliran turun

Risiko

  1. Boleh menjana beberapa isyarat palsu semasa pasaran terikat julat
  2. Kelewatan garis purata bergerak pada titik giliran, mungkin kehilangan titik kemasukan terbaik
  3. Penyesuaian parameter yang kerap diperlukan untuk menyesuaikan diri dengan pasaran yang berubah
  4. Berdasarkan satu penunjuk STI, boleh dioptimumkan dengan penunjuk lain

Peningkatan

  1. Tambah penapis untuk mengelakkan isyarat palsu semasa penyatuan
  2. Tambah penunjuk lain untuk mengesahkan titik pembalikan trend
  3. Mengoptimumkan parameter secara automatik melalui pembelajaran mesin dll
  4. Memperkenalkan stop loss untuk mengawal kerugian perdagangan tunggal

Kesimpulan

Strategi ini menggunakan TSI untuk menentukan arah trend digabungkan dengan lilin harga untuk menjana isyarat perdagangan, yang secara berkesan dapat menangkap trend, membeli dalam trend menaik dan menjual dalam downtrend.


/*backtest
start: 2023-10-29 00:00:00
end: 2023-11-05 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="TSIHULLBOT", shorttitle="TSICCIHULL", default_qty_type=strategy.percent_of_equity, default_qty_value=100)
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=7)
price = input(title="Source",type=input.source,defval=open)
lineupper = input(title="Upper Line", type=input.integer, defval=250)
linelower = input(title="Lower Line", type=input.integer, defval=-250)
double_smooth(price, long, short) =>
    fist_smooth = hma(price, long)
    hma(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))*5
tsihmaline=(hma(tsi_value,signal))*5
clr = tsihmaline < tsi_value ? color.red : color.lime
clr2 = tsi_value < tsi_value[1] ? color.red : color.lime
i1=plot(lineupper+3, color=color.black, linewidth=3)
i2=plot(linelower+3, color=color.black, linewidth=3)
i3=plot(lineupper, color=clr)
i4=plot(linelower, color=clr)
trendv=tsihmaline/5.6
plot(trendv, linewidth=7,  color=color.black)
plot(trendv, linewidth=4,  color=color.yellow)
j1=plot(tsi_value, linewidth=5, color=color.black)
j2=plot(tsi_value[1], linewidth=5, color=color.black)
j3=plot(tsi_value, color=clr2)
j4=plot(tsi_value[1], color=clr2)
fill(i3,i4,color=clr,transp=90)
fill(j3,j4,color=clr2,transp=15)
longCondition = tsihmaline>tsihmaline[1] and price>price[1]
if (longCondition)
    strategy.entry("Buy ⤴️", strategy.long)
shortCondition = tsihmaline<tsihmaline[1] and price<price[1]
if (shortCondition)
    strategy.entry("Sell ⤵️", strategy.short)

Lebih lanjut