
Strategi ini berdagang berdasarkan isyarat persilangan Hull Moving Average (HMA). Ia menghasilkan isyarat perdagangan dengan mengira dua garis HMA cepat dan lambat apabila mereka bersilang. HMA adalah penunjuk purata bergerak yang canggih yang mengurangkan ketinggalan dengan kombinasi khas purata bergerak bertimbangan (WMA) untuk memberikan isyarat trend pasaran yang lebih cepat dan lebih lancar.
Inti strategi ini adalah menggunakan persilangan HMA dari pelbagai kitaran untuk menangkap titik peralihan trend pasaran. Proses pengiraan HMA terdiri daripada tiga langkah: pertama, mengira WMA separuh kitaran, kemudian mengira WMA kitaran penuh, dan akhirnya menggunakan kombinasi khas kedua-dua WMA untuk mengira semula WMA satu kitaran sebagai akar kuasa dua kitaran asal. Apabila HMA cepat (~ 9 kitaran lalai) melintasi HMA perlahan (~ 16 kitaran lalai) ke atas, ia menghasilkan isyarat plurality; Apabila HMA cepat melintasi HMA perlahan (~ 16 kitaran lalai), ia menghasilkan isyarat kosong.
Ini adalah strategi perdagangan kuantitatif yang berasaskan HMA silang, yang menyediakan isyarat perdagangan yang lebih tepat pada masanya dengan mengurangkan keterlambatan rata-rata bergerak tradisional. Strategi ini direka dengan ringkas, mudah difahami dan dilaksanakan, tetapi dalam aplikasi praktikal memerlukan perhatian terhadap kesesuaian dan pengurusan risiko dengan persekitaran pasaran. Dengan pengoptimuman dan penyempurnaan berterusan, strategi ini berpotensi menjadi sistem perdagangan yang mantap.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-28 00:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Hull Moving Average Crossover", overlay=true)
fastLength = input.int(9, "Fast HMA Length", minval=1)
slowLength = input.int(16, "Slow HMA Length", minval=1)
hma(src, length) =>
wma1 = ta.wma(src, length / 2)
wma2 = ta.wma(src, length)
ta.wma(2 * wma1 - wma2, math.floor(math.sqrt(length)))
fastHMA = hma(close, fastLength)
slowHMA = hma(close, slowLength)
plot(fastHMA, color=color.blue, title="Fast HMA")
plot(slowHMA, color=color.red, title="Slow HMA")
longCondition = ta.crossover(fastHMA, slowHMA)
shortCondition = ta.crossunder(fastHMA, slowHMA)
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
plotshape(longCondition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
plotshape(shortCondition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)