English Русский 中文 Español Deutsch 日本語 Português 한국어 Italiano Türkçe
L’algorithme de génération de ticks dans le testeur de stratégie du terminal MetaTrader 5

L’algorithme de génération de ticks dans le testeur de stratégie du terminal MetaTrader 5

MetaTrader 5Tester | 13 janvier 2022, 09:27
515 0
MetaQuotes
MetaQuotes


Création d’Expert Advisors - systèmes de trading automatisés dans MQL5

Le terminal MetaTrader 5 contient un environnement de développement intégré pour le développement de stratégies entièrement automatisées (robots de trading), qui peuvent effectuer des trades sans aucune intervention humaine. Un autre nom pour ces robots de trading est Expert Advisors. Les Expert Advisors et les indicateurs techniques du terminal MetaTrader 5 sont écrits en utilisant le MQL5 langage, qui englobe tous les avantages des langages de programmation modernes.

  • la vitesse d’exécution ;
  • la prise en charge de la programmation orientée objet (POO) ;
  • la possibilité de déboguer.

La possibilité de déboguer des programmes dans MQL5 vous permet de créer un code avec le niveau de sécurité maximum possible, mais bien que nécessaire, ce n’est pas la seule condition requise pour le développement d’un système de trading rentable. Les systèmes de trading, qui sont capables de démontrer des résultats positifs tout au long d’un grand intervalle de données historiques, sont appelés robustes, qui est dérivé du mot anglais « robust », qui signifie tolérant aux défauts et aux erreurs.


Test des stratégies de trading

Avant de confier votre capital à un Expert Advisor, vous devez vous assurer que ses règles d’ouverture et de clôture des positions, ainsi que ses règles de gestion de l’argent, permettent l’attente de bénéfice. La façon la plus simple de tester cela est de simuler le travail de l’Advisor à l’aide des données historiques disponibles.

Le terminal client MetaTrader 5 dispose d’un composant intégré spécial, un testeur de stratégie pour obtenir les résultats du travail de l’Advisor avec des données historiques. Le processus d’une exécution unique de l’Expert Advisor sur un intervalle de dates est appelé le test de l’Expert Advisor. Ce test unique nous fournit une grande quantité d’informations utiles, nécessaires pour tirer des conclusions sur la robustesse de l’Expert Advisor.

Mais pour pouvoir faire confiance à ces résultats, le processus de test doit modéliser le plus fidèlement possible l’environnement actuel dans lequel l’Expert Advisor est exécuté. Le testeur MetaTrader 5 utilise une modélisation des prix tick par tick, en utilisant les valeurs historiques des spreads pour chaque instrument, sur lequel une opération de trading a lieu.


Un peu d’histoire sur le testeur de stratégie


MetaTrader 3

Le premier testeur de stratégie est apparu initialement dans le terminal MetaTrader 3. C’était un testeur relativement simple selon les normes modernes; il a effectué des tests basés sur trois modèles d’évolution des prix à la barre:
  • Modèle de quatre prix - le prix est passé consécutivement par les étapes d’ouverture, de bas, de haut et de clôture pour la bougie haussière, et pour la bougie baissière, il est passé par Open, High, Low et Close ;
  • Le modèle "Every 1 point" - utilise un modèle de vague 3-5-3, dans lequel le prix passe consécutivement par une vague de trois, puis une vague de cinq, puis une autre de trois, avec un incrément de 1 point ;
  • Le modèle "Spread / 2" - utilise le même modèle que "Every 1 point", mais l’incrément de prix est la moitié du spread, indiqué par l’utilisateur.

La modélisation des prix a toujours été basée sur les barres de la trame temporelle testée, les informations provenant de trames temporelles inférieures n’ont pas été utilisées. Le testeur du terminal MetaTrader 3 avait de nombreuses lacunes, notamment une vitesse de test lente, une faible précision et le manque d’optimisation de l’Expert Advisor par les paramètres d’entrée.

MetaTrader 4

Le terminal MetaTrader 4 a remplacé le troisième terminal et a inclus un nouveau langage compilé MQL4 (le précédent MQL-II a été interprété), ainsi qu’une approche absolument nouvelle des tests. Maintenant, les tests peuvent être effectués en trois modes :

  • Chaque tick (Every Tick) - génération de ticks dans la bougie, permet une modélisation maximale du travail d’Expert Advisor au trading réel, dans l’environnement de test ;
  • Points de contrôle (Checkpoints) - un compromis entre la précision et la vitesse des tests;
  • Par prix d’ouverture (Open Price) - le lancement de l’Expert Advisor ne se fait qu’à l’ouverture de la bougie, cela permet une évaluation très rapide de la stratégie.

Une différence importante par rapport au testeur du troisième terminal était que la stratégie de test du terminal MetaTrader 4 utilisait les données de prix de la plus jeune trame temporelle disponible pour la simulation de trading. Par conséquent, avec la présence de l’historique des minutes, tout au long de l’intervalle testé, les résultats des tests sont au maximum proches des résultats obtenus en ligne. En l’absence des trames temporelles sous-jacentes, la simulation de l’évolution des prix dans la barre est générée de la même manière que dans le terminal testeur de MetaTrader 3.

De plus, nous avons eu l’occasion d’effectuer une optimisation par énumération directe des paramètres d’entrée, ainsi qu’à l’aide d’un algorithme génétique. Cela nous a donné l’occasion d’accélérer considérablement le processus d’optimisation, en particulier pour les stratégies avec un grand nombre de paramètres d’entrée. Il est maintenant possible d’effectuer les tests réels dans le régime visuel. C’était un grand pas, qui a été apprécié par les traders.

Le nouveau terminal MetaTrader de la 5ème génération est basé sur l’expérience acquise lors de la conception des terminaux précédents, et cela s’applique au testeur de stratégie. Il est maintenant possible de tester des stratégies multi-devises, c’est-à-dire des stratégies qui sont tradées simultanément sur plusieurs instruments.

L’optimisation de la stratégie peut désormais être effectuée non seulement sur tous les cœurs de processeur disponibles, mais également sur des agents distants, situés sur d’autres ordinateurs du réseau local et du réseau Internet mondial. Cela vous permet de développer les puissances du testeur et d’effectuer des calculs cloud, qui étaient auparavant inaccessibles, directement dans le langage de MQL5.

Mais pour une compréhension de base du processus de test dans le terminal MetaTrader 5, il est essentiel de pouvoir comprendre comment se déroule la modélisation des prix dans un testeur de stratégie.


Algorithme de génération de ticks

Strategy Tester du terminal MetaTrader 5 n’utilise qu’un seul mode de modélisation des prix dans les tests - la génération de ticks sur la base des données historiques existantes sur des trames temporelles infimes des symboles utilisés. Les autres modes de simulation dans MetaTrader 4 ont été supprimés car malgré leur vitesse élevée, ils n’ont pas réussi à fournir une grande précision de test.

L’utilisation d’une trame temporelle M1 dans le testeur permet une simulation très précise de l’évolution des prix, avec un nombre minimum d’erreurs, contrairement à la simulation des ticks basée sur des trames temporelles seniors. En conséquence, les erreurs dans la modélisation des prix dans le testeur de stratégie MetaTrader 5 sont triviales, et les différences entre le prix simulé et le prix qui a eu lieu dans la réalité, ne peuvent être que dans l’échelle d’une barre de minute.

La possibilité d’effectuer une optimisation sur des agents locaux et distants, dans cette approche, peut compenser l’augmentation du temps de test. La génération de ticks est basée sur les entrées de minute mises en cache dans un format entier. Par conséquent, la génération de ticks se fait très rapidement.

Les barres de toutes les trames temporelles requises sont formées dans la base de données historiques du testeur de la manière habituelle (tout comme dans le terminal client) avec la réception des ticks générés. Le volume de tick 1 de la barre minute n’est soumise à aucune génération - elle peut être écrite avec la valeur Close.


Une barre avec 2 ticks n’est pas non plus générée - d’abord sa valeur de tick est enregistrée comme Open, puis un tick avec une valeur de Close est enregistrée.

          



Une barre avec 3 ticks est générée selon un schéma, pour les barres à trois ticks, il n’y a que 4 modèles de développement de barres :
  1. Je suis allé dans une direction et je suis revenu au niveau de Open




  2. Je suis allé d’un côté, je suis retombé et j’ai atteint un niveau Open




  3. Est allé dans une direction, est retombé, mais n’a pas atteint le niveau de Open




  4. Plusieurs points dans une direction




Point d’appui

Si la barre a plus de 3 ticks, les points d’appui sont d’abord générés. Le nombre de points d’appui ne peut pas être supérieur au volume de tick. Le cours d'ouverture n'est pas pris en compte dans le décompte des points d'appui, puisqu'il s'agit du point de départ. Nombre maximum de points d'appui - 11.

Les points d'appui sont répartis entre l’ombre d’ouverture, l’échelle de la bougie et l’ombre de la bougie de fermeture. 


Selon le nombre de ticks, la distribution des points d’appui est la suivante (ombre d’ouverture - la portée de la bougie - ombre de fermeture) :

3 - 5 - 3
2 - 6 - 2
2 - 5 - 2
2 - 4 - 2
2 - 3 - 2
1 - 4 - 1
1 - 3 - 1
1 - 2 - 1
1 - 1 - 1
Si la bougie n’a pas une des ombres, les points d’appui de ces ombres sont donnés à la magnitude des bougies.



La portée de la bougie est générée par un nombre impair de points d’appui. Si la portée a un nombre pair de points d’appui, alors le point supplémentaire "extra" est donné à l’une des ombres à condition que l’ombre ait déjà 2 points. Sinon, le point "extra" disparaît tout simplement.

Les valeurs des points d'appui représentent la différence entre le prix du point d'appui et le prix d’ouverture des bougies. La distribution idéale (3-5-3) des points de soutien pour une bougie haussière (blanche) est la suivante :





Pour une bougie baissière (noire), la génération de points d’appui sur le modèle 3-5-3 est similaire :




Si la bougie est un doji, c’est-à-dire Close == Open, alors les bougies précédentes sont analysées, si la bougie précédente se levait, alors ce doji est considéré comme une bougie vers le bas.



Si l’ombre est générée à l’aide de trois points d'appui et de valeurs entières 3 / 4 la taille de l’ombre et 1 / 2 la taille de l’ombre sont égales (cela se produit lorsque la différence entre Ouvert et Bas ou Ouvert et Haut n’est pas supérieure à 2 points), alors la génération de l’ombre change de la manière suivante :

 

Si l’ombre est générée par deux points d’appui, les points de commande sont disposés de la manière suivante :





L’ombre de fermeture est générée de la même manière.


Formation d’un terrain de points d’appui de Bas en Haut

La portée de la bougie est générée par des vagues impulsionnelles, le nombre de vagues est calculé comme suit :

number of waves = (number of support points in the scope + 1) / 2.

Par exemple, si le nombre de points d’appui dans la portée de la bougie est égal à 5 (Figure 3-5-3), alors 3 vagues seront générées = (5 +1) / 2.

Chaque vague d’impulsion a un pas de longueur en points, qui est calculé par la formule :

step=(High-Low-1)/(quantity of waves)+1

Par exemple, la portée des bougies (Haut - Bas) = (1,3113 - 1,3100) = 0,0013 est de 13 points, tandis que le pas de longueur d’onde = (13-1) / 3 +1 = 5 points.

Après le pas d'impulsion, les points doivent être réduits d'un point. Plus loin dans le cycle, les positions des points d’appui sont calculées (pour une bougie haussière) :

prev=low
cycle
  n1=prev+step
  n2=prev+step-1
  prev=n2


où :

  • n1 - premier point d’appui d’impulsion
  • n2 - deuxième point d’appui - le point de retour en arrière.

Appliquons cet algorithme à une bougie haussière dans un schéma 3-5-3, où le nombre de vagues est égal à 3 et le pas = 5 points, point = 0,0001 :

  1. Le premier pas. Variable prev = Low = 1,3100, entrez dans le cycle.
  2. Calculez les données de la première vague
    • Nous calculons la position du point n1 = précédent + pas = 1,3100 + 5 * 0,0001 = 1,3105.
    • Nous calculons la position du point n2 = précédent + pas-1 = 1,3100 + 5 * 0,0001-1 * 0,0001 = 1,3104 ;
    • Attribuez la valeur n2: prev = 1,3104 à la variable prev;
  3. Calculer les données pour la deuxième vague
    • Calculer la position du point n1 = précédent + pas = 1,3104 + 5 * 0,0001 = 1,3109.
    • Nous calculons la position du point n2 = précédent + pas-1 + 5 = 1,3104 * 0,0001-1 * 0,0001 = 1,3108 ;
    • Attribuez la valeur de n2: prev=1.3108 à la variable prev ;
  4. Calculer les données pour la troisième vague
    • Nous calculons la position du point n1 = précédent + pas = 1,3108 + 5 * 0,0001 = 1,3113.
    • Quittez le cycle, prev = n2 = 1,3112

Tout ce qui précède est démontré pour plus de clarté sur l’image :


Le calcul des points d’appui pour les bougies baissière se fait de la même manière :

prev=high
cycle
  n1=prev-step
  n2=prev-step+1
  prev=n2


La génération de ticks est effectuée en fonction des points d’appui

Les ticks intermédiaires entre les points d’appui sont générés selon les règles suivantes :
  • Si le nombre de ticks est supérieur au nombre de points entre les points de support, alors une "scie" est générée.
  • S’il y a un certain nombre de points entre les points d’appui, une séquence linéaire de ticks est générée.


Vérifier la séquence des ticks

En conclusion, comparons l’historique des ticks, enregistré depuis le serveur MetaQuotes-Demo le 13 mai 2010 de 13h00 à 13h30, avec la séquence de ticks générée par le testeur dans le terminal client MetaTrader 5. Un Expert Advisor a été utilisé pour enregistrer les ticks dans le journal de l’agent :

//+------------------------------------------------------------------+
//|                                                  Write_Ticks.mq5 |
//|              Copyright Copyright 2010, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+

input datetime start=D'2010.05.13 13:00:00';
input datetime end=D'2010.05.13 14:00:00';

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   MqlTick tick;
   datetime time=TimeCurrent();
//---
   SymbolInfoTick(Symbol(),tick);
   Print(time,tick.bid);
//---
   if(time>end) ExpertRemove();
//---
  }

L’historique des ticks a été collecté en ligne, à l’aide de l’indicateur décrit dans l’article Création d’indicateurs de ticks.

Les deux séquences de ticks - celle du testeur et celle stockée dans un fichier - sont représentées sur le graphique. Les ticks obtenus lors des tests sont représentés par une couleur verte, et les ticks obtenus sur le serveur de trading MetaQuotes-Demo, et enregistrés dans l’indicateur de fichier, sont représentés par une couleur bleue.


Vous pouvez pointer la souris vers n’importe quel point du graphique et lire des informations sur chaque tick dans les fenêtres contextuelles :

  • origine (Testeur ou Historique) ;
  • heure du tick ;
  • prix du tick.

Le graphique montre clairement que la qualité des ticks de simulation dans le terminal client MetaTrader 5 testeur permet de tester de manière adéquate les Expert Advisors sur les données historiques.

Traduit du russe par MetaQuotes Ltd.
Article original : https://www.mql5.com/ru/articles/75

Comment copier le trading depuis MetaTrader 5 vers MetaTrader 4 Comment copier le trading depuis MetaTrader 5 vers MetaTrader 4
Est-il possible de trader sur un vrai compte MetaTrader 5 aujourd'hui ? Comment organiser un tel trading ? L'article contient la théorie de ces questions et les codes de travail utilisés pour copier les trades depuis le terminal MetaTrader 5 vers MetaTrader 4. L'article sera utile à la fois pour les développeurs d'Expert Advisors et pour les traders pratiquants.
Econometrics - Prévisions à un stade précoce de l’EURUSD Econometrics - Prévisions à un stade précoce de l’EURUSD
L'article se concentre sur les prévisions d'avance pour l'EURUSD à l'aide du logiciel EViews et sur une évaluation plus approfondie des résultats des prévisions à l'aide des programmes d'EViews. La prévision implique des modèles de régression et est évaluée au moyen d'un Expert Advisor développé pour MetaTrader 4.
Test rapide des idées de trading sur le graphique Test rapide des idées de trading sur le graphique
L'article décrit la méthode de test visuel rapide des idées de trading. La méthode est basée sur la combinaison d'un graphique de prix, d'un indicateur de signal et d'un indicateur de calcul de solde. J'aimerais partager ma méthode de recherche d'idées de trading, ainsi que la méthode que j'utilise pour tester rapidement ces idées.
Indicateur pour la cartographie Kagi Indicateur pour la cartographie Kagi
L'article propose un indicateur de graphique Kagi avec diverses options de cartographie et des fonctions supplémentaires. En outre, le principe de cartographie des indicateurs et ses fonctionnalités de mise en œuvre MQL5 sont pris en compte. Les cas les plus populaires de sa mise en œuvre dans le trading sont affichés - stratégie d'échange Yin/Yang, s'éloignant de la ligne de tendance et augmentant constamment les "épaules" / diminuant la "taille".