Strategi Dagangan Kuantitatif Berdasarkan Indikator TSI dan Purata Bergerak Hull

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

img

Ringkasan

Strategi ini dinamakan Strategi Dagangan Kuantitatif Berdasarkan Indikator TSI dan Purata Bergerak Hull. Idea utamanya adalah untuk mengenal pasti trend saham, mata wang kripto atau forex dengan menggabungkan indikator TSI dan purata bergerak Hull, dan menghasilkan isyarat perdagangan apabila trend bermula.

Logika Strategi

Strategi ini menggunakan penunjuk TSI untuk menentukan trend harga dan momentum. Penunjuk TSI berdasarkan purata bergerak berimbang dua kali kadar perubahan harga. Ia menghasilkan isyarat beli apabila nilai TSI melintasi di atas purata bergerak, dan isyarat jual apabila melintasi di bawah.

Strategi ini juga menggunakan Purata Bergerak Hull untuk menentukan trend harga. Purata Bergerak Hull dibina dengan purata bergerak bertimbang ganda dan boleh menapis bunyi pasaran dengan berkesan.

Apabila penunjuk TSI menghasilkan isyarat, jika Hull Moving Average mengesahkan trend ke arah yang sama, isyarat dagangan yang sepadan akan dicetuskan. Di samping itu, strategi ini juga memeriksa arah badan lilin untuk mengesahkan trend. Isyarat dihasilkan hanya apabila isyarat penunjuk, isyarat Hull dan arah badan lilin semuanya sejajar secara konsisten.

Analisis Kelebihan

Dengan menggabungkan penunjuk trend, momentum dan purata bergerak, strategi ini dapat dengan berkesan mengenal pasti permulaan trend pasaran dan mengelakkan isyarat palsu yang berlebihan. purata bergerak yang dihaluskan dua kali juga menapis beberapa bunyi bising.

Berbanding dengan strategi satu penunjuk, strategi ini menapis isyarat dengan menggabungkan beberapa penunjuk, yang dapat meningkatkan kualiti isyarat dengan ketara.

Analisis Risiko

Walaupun strategi ini dapat dengan berkesan mengenal pasti permulaan trend, ia boleh menghasilkan beberapa isyarat palsu dan perdagangan berlebihan semasa penyatuan pasaran. tetapan parameter yang tidak sesuai juga boleh menyebabkan keluar yang tidak perlu.

Untuk mengurangkan risiko, tempoh Hull atau parameter TSI boleh diselaraskan dengan sewajarnya. Hentian juga boleh ditambahkan untuk kehilangan kawalan. Semasa pengoptimuman, perhatian perlu dibayar untuk memastikan nisbah isyarat ke bising yang tinggi untuk parameter terbaik.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Mengoptimumkan parameter Hull Moving Average untuk meluruskan lengkung dan menapis isyarat palsu
  2. Mengoptimumkan parameter TSI untuk mengimbangi kepekaan dan kestabilan
  3. Tambah strategi stop loss untuk mengawal saiz kerugian
  4. Sesuaikan panjang isyarat untuk menapis bunyi jangka pendek
  5. Ujian pada produk dan jangka masa yang berbeza
  6. Masukkan penunjuk lain untuk pengesahan isyarat

Kesimpulan

Strategi ini menggabungkan penunjuk TSI dan Hull Moving Average untuk menjana isyarat perdagangan selepas mengesahkan trend pasaran. Strategi ini mempunyai waktu dan kualiti isyarat yang tinggi. Melalui pengoptimuman parameter dan kombinasi strategi, keuntungan dapat ditingkatkan secara besar-besaran sambil mengurangkan risiko. Strategi ini sesuai untuk mengenal pasti trend jangka sederhana hingga panjang, dan mempunyai prospek aplikasi yang menjanjikan terutamanya di pasaran 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 lanjut