Strategi ini berdasarkan isyarat silang Hull Moving Average (HMA). Ia menghasilkan isyarat perdagangan apabila dua garis HMA dengan tempoh yang berbeza bersilang. HMA adalah penunjuk purata bergerak maju yang mengurangkan kelewatan melalui gabungan khas Purata Bergerak Bertimbang (WMA), memberikan isyarat trend pasaran yang lebih cepat dan lebih lancar.
Inti strategi ini terletak pada menangkap titik pembalikan trend pasaran menggunakan persilangan HMA dari tempoh yang berbeza. Pengiraan HMA melibatkan tiga langkah: pertama mengira WMA separuh tempoh, kemudian mengira WMA tempoh penuh, dan akhirnya mengira WMA lain dengan tempoh yang sama dengan akar kuadrat tempoh asal menggunakan gabungan khas dua WMA pertama. Isyarat beli dihasilkan apabila HMA cepat (default 9 tempoh) melintasi di atas HMA perlahan (default 16 tempoh), dan isyarat jual apabila HMA cepat melintasi di bawah HMA perlahan.
Ini adalah strategi perdagangan kuantitatif berdasarkan persilangan HMA, menyediakan isyarat perdagangan yang lebih tepat pada masanya dengan mengurangkan kelewatan purata bergerak tradisional. Reka bentuk strategi ringkas, mudah difahami dan dilaksanakan, tetapi memerlukan perhatian terhadap kebolehan menyesuaikan diri dengan persekitaran pasaran dan pengurusan risiko dalam aplikasi praktikal. Melalui pengoptimuman dan peningkatan yang berterusan, strategi ini berpotensi menjadi sistem perdagangan yang kukuh.
/*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)