Dimanche 19 mars 2006

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.

 

par AddictFX publié dans : Backtests
recommander

Commentaires

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


 

commentaire n° : 1 posté par : jay le: 20/03/2006 00:34:07

Intéressant ce «HMASlope» mais comment est-il calculé ?


Merci


ss

commentaire n° : 2 posté par : Syl20 le: 20/03/2006 02:23:14
Bonjour,

 

content egalement de ton retour.

 

Ce systeme a l'air vraiment prometeur !

 

Pourquoi le ROA ne figure-t-il pas dans les stats de resultat.

 

merci
commentaire n° : 3 posté par : Laurent le: 20/03/2006 10:34:21

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

commentaire n° : 4 posté par : pierre le: 20/03/2006 15:28:27
Le système semble robuste!

Merci pour ta contribution qui m'est d'une grande aide.
commentaire n° : 5 posté par : Franck le: 20/03/2006 20:40:47

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.


 

commentaire n° : 6 posté par : AddictFX (site web) le: 21/03/2006 23:16:54

Merci pour ces précieuses indications...


Pierre

commentaire n° : 7 posté par : Pierre le: 22/03/2006 11:56:51
Merci pour ce blog et ses analyses qui sortent de l'ordinaire..
et la disponibilité de son auteur
On ne le dira jamais assez !

:p
commentaire n° : 8 posté par : rikki le: 30/03/2006 18:49:29

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.

commentaire n° : 9 posté par : Tark le: 30/04/2006 16:55:20
Bonjour,

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.
commentaire n° : 10 posté par : Nicolas Janin le: 26/02/2007 23:45:44
Bonjour,

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
commentaire n° : 11 posté par : Stic le: 24/01/2008 14:56:50

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

commentaire n° : 12 posté par : chris le: 05/02/2008 22:56:20
J ai le même probleme que Stic , le slope n excede pas 15/20 points pour des données Hourly.
Vous avez une explication ?


Merci
commentaire n° : 13 posté par : Olivier le: 11/04/2008 16:33:11
Vous avez raison, il y a un facteur 10. J'avais utilisé temporairement le BigPointValue au lieu du priceScale pour plus de lisibilité (facteur 10 entre les deux sur les paramétrages standards de l'instrument) ... j'ai du probablement courir pour écrire l'article en oubliant de remettre le PriceScale (donc pour repasser en pips) ... c'est une erreur mais celà dit ca ne change rien aux backtest ou au système à part le fait qu'il faut appliquer ce facteur 10 aux triggers (lire 8 au lieu de 80 par exemple). ceux qui ont recus la newsletter auront facilement détecté le problème avec l'utilisation du BigPointValue (paramétré à 100000 ici).

Voilà ce que c'est, manque de temps ... encore désolé.
commentaire n° : 14 posté par : AddictFX (site web) le: 12/04/2008 11:28:29

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é

commentaire n° : 15 posté par : Olivier le: 15/04/2008 17:30:13

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].

commentaire n° : 16 posté par : AddictFX (site web) le: 15/04/2008 20:59:56
Formidable votre site. Très intéressant. Intrigué par cette belle EQ et ayant déjà travaillé sur ce même indicateur,  j'ai essayé de faire un backtest de mon côté mais je ne trouve pas du tout les mêmes résultats. Avez-vous intégré un slippage ou des commissions ? De combien ?
Je serais heureux de vous fournir mes résultats par email si cela vous intéresse toujours après tant de temps.
commentaire n° : 17 posté par : FD le: 03/05/2008 04:42:31

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

commentaire n° : 18 posté par : Olivier le: 06/05/2008 17:41:40
Bonjour,

On applique les deux. On sort sur le premier des deux qui est déclenché.
commentaire n° : 19 posté par : AddictFX (site web) le: 19/05/2008 10:54:01

Adresse de trackback pour cet article :

http://ann.over-blog.com/trackback.php?ref=51538&ref_article=2199878
ajouter un commentaire  

Newsletter

Inscription à la newsletter

Catégories

Recherche

Calendrier

Juillet 2008
L M M J V S D
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
<< < > >>
 
 
Contact - C.G.U. - Signaler un abus