Système Suivi de Tendance et Money Management

Cet article est une traduction d’un post de Lutade disponible en anglais ici. C’est une suite à l’article Soyez en Phase (VO ici) de Mikhail Korolyuk.

Mikhail Korolyuk a écrit dans son article : “Il y a de nombreuses méthodes qui analysent l’efficacité d’un système de trading en utilisant la courbe de capital et nous permettent grâce à cette analyse de filtrer certains trades dont le risque excède les limites déterminées par le trader. Appliquer ces filtres sur la base de l’analyse de la courbe de capital nous permets de réduire les risques du trading. Cependant, le revers de la médaille est de diminuer la profitabilité du système car l’ensemble des trades a en globalité une rentabilité positive attendue, et que le groupe des trades les plus risqués qui est filtré a aussi un espérance de rentabilité positive. “

Peut être que ce qui suit sera naturel aux traders aguerris, mais j’espère qu’il apportera des idées nouvelles à certains.

Disons que vous avez un EA qui vous donne un nombre de trades raisonnables avec de même un profit raisonnable. La plupart des EAs ont une condition similaire à la suivante , qui du point de vue du code donne :

{xtypo_code}MA1=NormalizeDouble(iMA(NULL, PERIOD_M5, 3, 0, MODE_SMA, PRICE_CLOSE, 1),Digits);
MA2=NormalizeDouble(iMA(NULL, PERIOD_M5, 3, 0, MODE_SMA, PRICE_CLOSE, 2),Digits);
if (MA2>MA1)
{ LS=GetLotSize();
  if (LS>0) OrderSend(Symbol(),OP_SELL,LS,Bid,3,Bid+SL_Sell*Point,Bid-TP_Sell*Point,””,0,0,Red);
}{/xtypo_code}

 

Une supposition raisonnable est le fait que plus la différence entre MA1 et MA2 est grande, plus forte est la probabilité que le trade réalisera des profits. Afin d’ouvrir seulement des positions lorsque la proabilité de gain est la plus forte, un filtre pourrait être appliqué :

{xtypo_code}MA1=NormalizeDouble(iMA(NULL, PERIOD_M5, 3, 0, MODE_SMA, PRICE_CLOSE, 1),Digits);
MA2=NormalizeDouble(iMA(NULL, PERIOD_M5, 3, 0, MODE_SMA, PRICE_CLOSE, 2),Digits);
if (MA2MA1>Filter*Point)
{ LS=GetLotSize();  
  
if (LS>0) OrderSend(Symbol(),OP_SELL,LS,Bid,3,Bid+SL_Sell*Point,BidTP_Sell*Point,“”,0,0,Red);
}{/xtypo_code}

 

Ceci augmentera le facteur de profit, mais malheureusement diminuera aussi le nombre de trades et le profit global, parce que les trades filtrés auraient aussi été rentables en moyenne :

 

 

La solution pourrait être d’utiliser pour les trades avec une plus grande probabilité de succès des lots de taille plus importante, et pour les trades avec une probabilité de succès moins importante des lots de taille inférieure. Le code ressemblerait alors au suivant :

{xtypo_code}MA1=NormalizeDouble(iMA(NULL, PERIOD_M5, 3, 0, MODE_SMA, PRICE_CLOSE, 1),Digits);
MA2=NormalizeDouble(iMA(NULL, PERIOD_M5, 3, 0, MODE_SMA, PRICE_CLOSE, 2),Digits);
if (MA2>MA1)
{ if (MA2MA1>Filter*Point)
  { LS=GetLotSize(1.0);
    
if (LS>0) OrderSend(Symbol(),OP_SELL,LS,Bid,3,Bid+SL_Sell*Point,BidTP_Sell*Point,“”,0,0,Red);
  
}
  else
  { LS=GetLotSize(Factor);
    
if (LS>0) OrderSend(Symbol(),OP_SELL,LS,Bid,3,Bid+SL_Sell*Point,BidTP_Sell*Point,“”,0,0,Red);
  
}
}
// …
double GetLotSize(double f)                                          
{ double s=NormalizeDouble((AccountEquity())*f*Perc/100/1000,1);
  
//…
}{/xtypo_code}

 

La variable Factor devrait avoir une valeur entre 0 et 1 et peut être utilisée comme une variable externe pour une meilleur optimisation. Pour mon petit EA de test, j’ai trouvé que les meilleurs résultats apparaissaient en utilisant une valeur de Filter=2 et Factor entre 0.4 et 0.5:

 

 

Notez, que les meilleurs résultats utilisant le filtre ont des dradowns moins importants et plus de profits que les meilleurs résultats non filtrés (lignes à la fin de la liste avec Filter=0 ou Factor=1). Il est aussi possible d’estimer la “meilleur” valeur de “Factor” formule de Kelly. J’obtiens les données suivantes de la part des trades filtrés et non filtrés :

 

Trades Profit Trades Loss Trades %Win Global Win Global Loss Avg Win Avg Loss Profit Factor
Non filtrés 167 109 58 65.27% 37321 21697.9 342.39 374.10 1.72
“bon” trades 80 56 24 70.00% 19665.8 8982.3 351.18 374.26 2.19
“mauvais” trades 87 53 34 60.92% 17665.2 12715.6 333.31 373.99 1.39

 

En utilisant les données simulateur en ligne, j’obtiens un rapport optimal de taille de lots de 4.56:10.16 = 0.45:1, c’est à dire que la variable “Factor” devrait être égale à 0.45, ce qui est en accord avec les résultats de l’optimiseur. Maintenant, à cause de la taille plus petite des lots, le profit global est diminué, cependant il est possible d’augmenter la valeur “Perc” pour le calcule de la taille du lot. Utilser à nouveau le simulateur en ligne (avec d’autres paramètres visibles dans la chaine de l’url) donne une estimation que pour le même risue la valeur “Perc” peut être augmentée de (10.16-7.3)/7.3*100%=39.2%. La table suivante montre qu’en utilisant l’EA avec les trades filtrés et dont le volume est ajusté aboutit à de meilleurs profits ainsi qu’à une diminution des drawdowns :

 

Filter-Perc Total net profit Absolu DD Maximal DD Relative DD Profit Factor
Non filtré-5% 11304.46 1184.44 14.14% 14.14% 1.83
Filtré-7% 14283.60 455.37 6.53% 10.42% 2.00
Non filtré-20% 137998.93 4444.64 22.17% 49.28% 1.95
Filtré-24% 152176.22 1894.80 21.20% 32.56% 2.04

 

Voici ici une image de l’equity curve de Janvier à Juillet utilisant les trades filtrés et Perc=7% (backtest) :

 

 

Les paramètres de cet EA ont été optimisés d’avril 2008 à juillet. Il a été testé comment l’EA se comportait sur la période non optimisée (janvier à avril) et l’on peut se rendre compte qu’il aurait obtenu de petites pertes. C’est ce que j’attends aussi pour le future, lorsque les paramètres optimisés ne correspondent plus au marché. Il est alors important que les pertes soient faibles avant que l’EA puisse être désactivé ou modifé avec de nouveaux paramètres. Les données suggèrent ici que les pertes inévitables seront plus petites lorsque l’on utilise la méthode de filtre.

Article Original: http://forum.mql4.com/14281
Auteur: Lutade
Traduction: Nicolas Vitale

MQL4 is a trade mark of MetaQuotes Software Corp. and all related materials are reserved for MetaQuotes 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>