Strategi perdagangan kuantitatif berdasarkan indikator TSI dan Hull Moving Average

Penulis:ChaoZhang, Tanggal: 2023-12-18 16:56:22
Tag:

img

Gambaran umum

Strategi ini disebut Quantitative Trading Strategy Based on TSI Indicator and Hull Moving Average. Ide utamanya adalah untuk mengidentifikasi tren saham, cryptocurrency atau forex dengan menggabungkan indikator TSI dan Hull moving average, dan menghasilkan sinyal perdagangan ketika tren dimulai.

Logika Strategi

Strategi ini menggunakan indikator TSI untuk menentukan tren harga dan momentum. Indikator TSI didasarkan pada rata-rata pergerakan dua kali rata tingkat perubahan harga. Ini menghasilkan sinyal beli ketika nilai TSI melintasi di atas rata-rata bergerak, dan sinyal jual ketika melintasi di bawah.

Strategi ini juga menggunakan Hull Moving Average untuk menentukan tren harga. Hull Moving Average dibangun dengan rata-rata bergerak bertimbang ganda dan dapat menyaring kebisingan pasar secara efektif.

Ketika indikator TSI menghasilkan sinyal, jika Hull Moving Average mengkonfirmasi tren ke arah yang sama, sinyal perdagangan yang sesuai akan dipicu. Selain itu, strategi juga memeriksa arah tubuh lilin untuk mengkonfirmasi tren.

Analisis Keuntungan

Dengan menggabungkan indikator tren, momentum dan moving average, strategi ini dapat secara efektif mengidentifikasi awal tren pasar dan menghindari sinyal palsu yang berlebihan.

Dibandingkan dengan strategi indikator tunggal, strategi ini menyaring sinyal dengan menggabungkan beberapa indikator, yang dapat sangat meningkatkan kualitas sinyal.

Analisis Risiko

Meskipun strategi ini dapat secara efektif mengidentifikasi awal tren, hal ini dapat menghasilkan beberapa sinyal palsu dan over-trading selama konsolidasi pasar.

Untuk mengurangi risiko, parameter periode Hull atau TSI dapat disesuaikan sesuai. Stop juga dapat ditambahkan untuk kehilangan kontrol. Selama optimalisasi, perhatian perlu dibayar untuk memastikan rasio sinyal-ke-noise yang tinggi untuk parameter terbaik.

Arahan Optimasi

Strategi dapat dioptimalkan dalam aspek berikut:

  1. Mengoptimalkan Parameter Hull Moving Average untuk meluruskan kurva dan menyaring sinyal palsu
  2. Mengoptimalkan parameter TSI untuk menyeimbangkan sensitivitas dan stabilitas
  3. Tambahkan strategi stop loss untuk mengontrol ukuran kerugian
  4. Sesuaikan panjang sinyal untuk menyaring kebisingan jangka pendek
  5. Uji pada produk dan kerangka waktu yang berbeda
  6. Masukkan indikator lain untuk verifikasi sinyal

Kesimpulan

Strategi ini menggabungkan indikator TSI dan Hull Moving Average untuk menghasilkan sinyal perdagangan setelah mengkonfirmasi tren pasar. Strategi ini memiliki waktu dan kualitas sinyal yang tinggi. Melalui optimasi parameter dan kombinasi strategi, profitabilitas dapat ditingkatkan secara besar-besaran sambil menurunkan risiko. Strategi ini cocok untuk mengidentifikasi tren jangka menengah hingga panjang, dan memiliki prospek aplikasi yang menjanjikan terutama di pasar cryptocurrency dan forex.


/*backtest
start: 2022-12-11 00:00:00
end: 2023-12-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("TSI/HullMA/VWMA strategy", shorttitle="TSI/HullMA/VWMA", overlay=true, default_qty_type=strategy.percent_of_equity, max_bars_back=420, default_qty_value=100, calc_on_order_fills=true, calc_on_every_tick=true, pyramiding=0)
TP = input(defval=200.00, title="TargetPoint in $", type=float, step=1)
SL = input(defval=-2000.00, title="StopLoss in $", type=float, step=1)
signal = input(title="Signal Length",  defval=6)
keh=input(title="HullMA cross",defval=2)
a=input(title="VWMA",defval=2)
long=35,short=35,linebuy=4,linesell=-4,ot=1,p=ohlc4[0]
double_smooth(src, long, short) =>
    fist_smooth = ema(src, long)
    ema(fist_smooth, short)
pc = change(p)
rvwma=vwma(p,round(a))
rvwma2=vwma(p,round(a*2))
n2ma=2*wma(p,round(keh/2))
nma=wma(p,keh)
diff=n2ma-nma
sqn=round(sqrt(keh))
n2ma1=2*wma(p[1],round(keh/2))
nma1=wma(p[1],keh)
diff1=n2ma1-nma1
sqn1=round(sqrt(keh))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
hullbuy=n1>n2 and n1>n2[1] and rvwma>rvwma2
hullsell=n1<n2 and n1<n2[1] and rvwma<rvwma2
candlebuy=ohlc4[0]>ohlc4[1] and ohlc4[0]>ohlc4[2] and ohlc4[0]>ohlc4[3]
candlesell=ohlc4[0]<ohlc4[1] and ohlc4[0]<ohlc4[2] and ohlc4[0]<ohlc4[3]
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)
strategy.entry("buy", true, na, when = tsi_value>ema(tsi_value, signal) and candlebuy and hullbuy)
strategy.entry("sell", false, na, when = tsi_value<ema(tsi_value, signal) and candlesell and hullsell)
strategy.close_all(when = strategy.openprofit>TP or strategy.openprofit<SL)

Lebih banyak