Bonjour à tous,
Un grand nombre de stratégies de trading sont basées sur des principes de Trend Following. Les règles de base sont simples : identifier un trend haussier pour entrer long et un trend baissier pour entrer short.
La plupart des stratégies que l'on trouve dans la littérature s'appuient sur des moyennes mobiles associés à un ADX. L'ADX permet non seulement d'identifier un trend mais il permet de quantifier la force de ce dernier. En général les moyennes mobiles sont simplement là pour identifier le sens du trend.
Afin de compléter l'arsenal de ces méthodes connues nous allons mettre au point un indicateur simple capable de nous fournir de manière réactive le sens et la force d'un trend. Cet indicateur, le HMASlope est directement dérivé d'une moyenne de Hull.
Le HMASlope est la mesure de la pente d'une moyenne de Hull. Le chart ci-dessous représente cet indicateur. Pour une meilleure lecture les barres sont colorées en vert lorsque HMASlope est positif et en rouge lorsque HMASlope est négatif.
(Cliquer pour agrandir)
La pente est exprimée en pips, elle est égale à la différence entre deux points de la moyenne de Hull.
Nous allons maintenant créer un système basé exclusivement sur la force du trend. Plus le HMASlope est élevé en valeur absolue, plus le trend est puissant.
HMA Slope Variations
- HMASlope = pente de la HMA (30) exprimée en pips
- On entre en position uniquement entre 08h00 et 18h00 heure de paris
- On sort chaque soir sur la dernière barre
- Initial Stop Loss à 40 pips
- Buy Long if HMASlope > 80
- Sell Short if HMASlope < -80
- Sell if HMASlope < 20
- BuyToCover if HMASlope > -20
En clair pour les positions longues :
- On achète lorsque le HMASlope dépasse les 80 : achat sur accélération
- On revend lorsque le HMASlope repasse sous les 20 : vente sur ralentissement
Pour les positions short c'est exactement l'inverse.
Le Backtest porte sur EURUSD en 60 minutes sur 3 ans et demi.
Performance Report
| All Trades | 333 | |||
| Net Profit | 26 080.00 | |||
| Profit Factor | 1.67 | |||
| Winning Trades | 52.25% | Losing Trades | 45.65% | |
| Nb. Winning Trades | 174 | Nb. Losing Trades | 152 | |
| Avg. Winning Trade | 374.48 | Avg. Losing Trade | -257.11 | |
| Largest Winning Trade | 1 330.00 | Largest Losing Trade | -430.00 | |
| Max. Consecutive Winning Trade | 8 | Max Consecutive Losing Trade | 6 | |
| Payoff Ratio | 1.46 | |||
| Maximum Intraday Drawdown | -2 985.00 | |||
| Expectancy | 78.32 |
Equity Curve

Le pourcentage de trades gagnants ainsi que l'Expectancy et surtout le Max Drawdown laissent penser que ce système peut être traité. L'Equity Curve nous le confirme, elle offre une base de travail confortable avec une seule véritable zone de drawdown dont le montant est toutefois limité à $3 000.
Avoir de bons résultats pour un système ne suffit pas, encore faut-il qu'il soit tradable. Pour cela deux conditions doivent être réunies :
- Des horaires d'entrée et de sortie de position réalistes : la contrainte d'entrée de 08h00 à 18h00 et la sortie en fin de journée sont là pour ça
- La présence d'un stop loss initial pour maîtriser son risque maximal par trade : ici il est mis à 40 pips, la taille de position peut alors être adaptée en fonction de ce risque
AddictFX
Les backtests de cet article sont réalisés sur Tradestation, mais peuvent tous être adaptés à Wealth-Lab ou Amibroker.
Attention : les résultats passés ne présagent en rien des résultats futurs. Effectuez vos propres études avant de mener toute opération financière. Le Forex est un marché à haut risque sur lequel vous pouvez perdre plus que votre capital.
Commentaires
Intéressant ce «HMASlope» mais comment est-il calculé ?
Merci
ss
Tout d'abord bravo pour ce système!
Je n'arrive malheureusement pas à insérer l'indicateur de pente HMASlope sur un chart; en effet, tu livres dans ta newsletter le code de la fonction HMASlope mais pas de l'indicateur qui en découle. Ce qui veut dire que je vusualise très bien la HMA, que j'insère la stratégie sans problème mais que je ne peux pas vérifier les signaux visuellement. Mes connaissances, qui vont en grandissant, ne me permettent malheureusement pas encore de coder cet indicateur. Serait il possible de recevoir le code correspondant de la manière qui t'arranges le mieux.
Encore merci!
Pierre
Merci pour ta contribution qui m'est d'une grande aide.
Je vais répondre à toutes vos questions.
Jay : je n'ai pas abandonné le blog, juste mis en suspend à cause d'une grosse surcharge de travail ces derniers temps.
Syl20 : Voici le calcul en code Easy Langage
inputs: period( numericsimple ), smooth (numericsimple), type (numericsimple) ;
If type = 0 then
Value1 = AverageFC (Close, period)
else if type = 1 then
Value1 = HMA (Close, period);
HMASlope = Average (BigPointValue * (Value1 - Value1 [1]), smooth);
Il s'agit donc de la pente ramenée en pips.
Laurent : Je n'utilise simplement jamais le ROA pour évaluer la qualité d'un système.
Pierre :
Voici le code de l'indicateur
Input : period (30), smooth (1), type (1);
Var : upColour(Blue), downColour(Red);
Value1 = FXSlope (period, smooth,type);
Plot1( Value1, "HMA Slope" ) ;
Plot2(0, "ZeroLine");
if (Value1 > 0) then
SetPlotColor(1, upColour)
else if (Value1 < 0) then
SetPlotColor(1, downColour);
Voici maintenant le Paint Bar
Input : period (30), smooth (1), type (1), upColour(Green), downColour(Red);
Value1 = HMASlope (period, smooth, type);
if Value1 > 0 then PlotPaintBar( High, Low, Open, Close, "HMASlope", upColour);
if Value1 < 0 then PlotPaintBar( High, Low, Open, Close, "HMASlope", downColour);
Ne pas oublier à la création de l'indicateur de positionner ses properties avec Scaling/RightAxis et subgraph à 2 pour le voir affiché dans un panel inférieur.
Merci pour ces précieuses indications...
Pierre
et la disponibilité de son auteur
On ne le dira jamais assez !
:p
Merci pour cette analyse, mais n'utilisant pas Tradestation, je ne comprends pas comment implémenter cet indicateur sous Excel.
J'ai réussi à programmer le HMA, mais ces lignes sont vraiment obscures pour moi :
inputs: period( numericsimple ), smooth (numericsimple), type (numericsimple) ;
If type = 0 then
Value1 = AverageFC (Close, period)
else if type = 1 then
Value1 = HMA (Close, period);
HMASlope = Average (BigPointValue * (Value1 - Value1 [1]), smooth);
Que signifie le BigPointValue ? Smooth ? la fonction average ?
Merci pour votre aide.
La MM de Hull est très intéressante. J'en ai testé deux variantes assez remarquables.
La première consiste à remplacer les moyennes pondérées (weighted averages) par des DEMA (double exponential mobile average). Cette variante est encore plus rapide que la MM de Hull originelle.
La deuxième consiste en une utilisation de "time series averages" (traduction française inconnue) dans un premier temps, et d'une MM adaptative de Kaufman dans un second temps. Le résultat est une MM qui colle le cours littéralement à la culotte, avec un lissage des overshoots. Là où la première variante va dépasser le cours en cas d'overshoot, la variante 2 est beaucoup moins sensible aux valeurs extrêmes.
Ce dernier caractère devrait permettre des choses très intéressantes.
je ne comprends pas comment votre HMA slope peut avoir des valeurs allant jusqu\\\'à 80 pips (parfois même bien au-delà de 100).
En effet si le HMA slope est la différence (exprimée en pips) entre 2 valeurs de la HMA, ces valeurs me semblent beaucoup trop importantes.
Cette valeur ne devrait d\\\'après moi que rarement excéder les 20-30 pips, en tout cas en UT 1H.
Les valeurs à prendre en compte pour le calcul de la différence sont pourtant bien les valeurs successives de la HMA ?
Merci
Bonjour
Est ce que qq un pourrait poster le code correspondant à cette description /
La deuxième consiste en une utilisation de "time series averages" (traduction française inconnue) dans un premier temps, et d'une MM adaptative de Kaufman dans un second temps. Le résultat est une MM qui colle le cours littéralement à la culotte, avec un lissage des overshoots. Là où la première variante va dépasser le cours en cas d'overshoot, la variante 2 est beaucoup moins sensible aux valeurs extrêmes.
Merci infiniment
Chris
Vous avez une explication ?
Merci
Voilà ce que c'est, manque de temps ... encore désolé.
Bonjour
Merci pour votre réponse.
Je dois pas voir le bon calcul de pente. Est ce que vous pouvez me préciser les éléments suivants :
HMASlope = Average (BigPointValue * (Value1 - Value1 [1]), smooth);
Que signifie le BigPointValue ? Smooth ? la fonction average ?
Merci beaucoup pour votre disponibilité
Le BigPointValue est précisément l'erreur qui cause ce facteur 10. Il est par défaut de 100 000. Il faut utiliser le PriceScale pour passer en pips. La fonction Average est un simple lissage qui m'a servi dans un autre contexte, et le smooth est la période de cette moyenne mobile. Dans le test le smooth est positionné à 1 ce qui est équivalent à : Value1 - Value1 [1].
Je serais heureux de vous fournir mes résultats par email si cela vous intéresse toujours après tant de temps.
Bonjour
j aimerai avoir une précision quant au stoploss.
Est ce qu'on applique un SL de 40 pips ou alors la regle HMASlope<20.
Merci d'avance
On applique les deux. On sort sur le premier des deux qui est déclenché.





Content de te lire Addictfx, je commençais à me demander si tu abandonnais ton blog...