
Strategi ini didasarkan pada sinyal silang dari Hull Moving Average (HMA). Dengan menghitung dua garis HMA cepat dan lambat, sinyal perdagangan dihasilkan ketika mereka berselisih. HMA adalah indikator rata-rata bergerak canggih yang mengurangi keterlambatan dengan kombinasi khusus rata-rata bergerak bertimbang (WMA) untuk memberikan sinyal tren pasar yang lebih cepat dan bergeser.
Inti dari strategi ini adalah memanfaatkan HMA dari berbagai siklus untuk menangkap titik peralihan tren pasar. Proses perhitungan HMA terdiri dari tiga langkah: pertama menghitung WMA setengah siklus, kemudian menghitung WMA siklus penuh, dan akhirnya dengan kombinasi khusus dari kedua WMA ini untuk menghitung kembali WMA satu siklus sebagai akar kuadrat dari siklus asli.
Ini adalah strategi perdagangan kuantitatif berbasis HMA crossover yang menyediakan sinyal perdagangan yang lebih tepat waktu dengan mengurangi keterlambatan dari rata-rata bergerak tradisional. Strategi ini dirancang sederhana, mudah dipahami dan diimplementasikan, tetapi dalam aplikasi praktis memerlukan perhatian pada adaptasi dan manajemen risiko lingkungan pasar. Dengan terus-menerus mengoptimalkan dan menyempurnakan, strategi ini memiliki potensi untuk menjadi sistem perdagangan yang kuat.
/*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)