
Cette stratégie est basée sur le croisement des signaux de la Hull Moving Average (HMA). En calculant les deux lignes HMA rapides et lentes, elle génère un signal de transaction lorsqu’elles se croisent. La HMA est un indicateur avancé de la moyenne mobile qui réduit le retard par une combinaison spéciale de WMA pondérés, offrant un signal de tendance de marché plus rapide et plus fluide.
Le cœur de la stratégie est de capturer les points de conversion des tendances du marché en utilisant des croisements de HMA de différentes périodes. Le processus de calcul de l’HMA comprend trois étapes: d’abord, le calcul de la WMA du demi-cycle, puis le calcul de la WMA du cycle complet, et enfin, par une combinaison particulière de ces deux WMA, le recalcul de la WMA d’un cycle à la racine carrée du cycle d’origine.
Il s’agit d’une stratégie de négociation quantitative basée sur la croisée des HMA qui fournit des signaux de négociation plus opportuns en réduisant le retard des moyennes mobiles traditionnelles. La stratégie est conçue pour être concise, facile à comprendre et à mettre en œuvre, mais nécessite une attention particulière à l’adaptation et à la gestion des risques dans l’environnement du marché.
/*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)