English Русский 中文 Español Deutsch 日本語 Português 한국어 Italiano Türkçe
Voici les nouveaux MetaTrader 5 et MQL5

Voici les nouveaux MetaTrader 5 et MQL5

MetaTrader 5Exemples | 22 décembre 2021, 16:07
133 0
Yuriy Zaytsev
Yuriy Zaytsev

Je vais donner juste une brève description de quelques moments.


Fig. 1. Ce n'est pas Photoshop - c'est MQL5.

Presque tout ce qui m'a intéressé, ainsi que d'autres, dans MQL5 et MT5 est implémenté à un très haut niveau.

Le changement de base dans MQL5 est l'apparition de la programmation orientée objet. Je n'entrerai pas en profondeur dans la POO - c'est juste que les programmeurs expérimentés ont plus de possibilités. Pour ceux qui ont aimé MQL4 et ne connaissent pas la POO, les développeurs ont laissé la possibilité d'écrire en MQL5 en utilisant le style de MQL4 sans OOP. La différence réside dans la fonctionnalité qui doit être réapprise.

Prenons un exemple simple : les variables Ask et Bid n'existent plus. Afin d'obtenir les valeurs Bid, la fonction ci-dessous doit être appelée :

SymbolInfoDouble(Symbol(),SYMBOL_BID);

Il n'y a pas de Low[0] ou iLow fréquemment utilisés ( Symbol(), PERIOD_D1, 0 ), mais vous pouvez facilement les reconstruire. Les nouvelles fonctions fonctionnant avec les données historiques donnent la possibilité de lire en mémoire les données historiques d'un point à un autre, d'une certaine barre à une autre certaine barre ou de l'heure sélectionnée à l'autre heure sélectionnée. La lecture préalable d'une série de données permet de charger en mémoire toute la gamme visible. Peu importe que vous en ayez besoin ou non, mais la lecture a été faite ; et si vous aviez besoin de lire M1, la lecture a été faite depuis 1999 (dans le cas où il y avait un historique disponible) jusqu'à la date, l'heure et la minute actuelles.

Désormais, seule la gamme nécessaire peut être lue, ce qui économise considérablement du temps et de la mémoire.

MqlRates rates_arrayG[];
Int Bar=30; // read only 30 bars stating from the zero one
iCopBar=CopyRates(Symbol(),PERIOD_M1,0,Bar,rates_arrayG);

Cette fonction permet d'économiser du temps et de la mémoire.

Un tel changement de fonctionnalité ne fait pas peur. Nous aurons simplement besoin de temps pour apprendre de nouvelles fonctions-analogues.

Quelques innovations fonctionnelles que j'attendais de MQL :

  • OnTimer() - fonction pour traiter les événements de la minuterie (maintenant vous n'avez plus besoin de boucler l'Expert Advisor pour le faire fonctionner avec une certaine périodicité indépendante du trait entrant) ;
  • OnTrade() - fonction pour traiter les événements de trade - ouverture, fermeture de position de trade, ou changement de volume ;
  • OnChartEvent() - traitement des événements par la souris ou le clavier.

Attardons-nous un peu sur ces derniers.

La fonction OnTimer() est appelée si le timer est pré-initialisé dans la fonction prédéfinie OnInit (processeur des événements d'initialisation EA).

Exemple :

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   EventSetTimer(1); //each second we'll refer to OnTimer()
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit()
  {
   EventKillTimer(); // canceling of timer reference must be called at exit
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTimer()
  {
   MqlDateTime str1;
   TimeGMT(str1); // new function to get GMT time
   Comment(str1.hour
           ,str1.min
           ,str1.sec
           ,str1.day
           ,str1.mon
           ,str1.year
           ,str1.day_of_year
           ,OrdersTotal()
           ,PositionsTotal()
           );
  }

Ainsi, le contrôle peut être obtenu non seulement à la réception des traits comme c'était le cas auparavant, mais également à partir de la minuterie qui permet d'écrire des programmes gérables en temps réel. Avec cette possibilité, des systèmes plus élaborés peuvent être créés.

J'ai aimé la fonction OnTrade(). Cette fonction est appelée au moment où l'un des événements commerciaux suivants se déclenche : passation d'ordres, activation de StopLoss ou TakeProfit, changement de niveaux StopLoss ou TakeProfit, passation/suppression d'un ordre en attente.

Il est désormais beaucoup plus facile de surveiller les événements liés aux opérations de trade. Désormais, il n'est plus nécessaire de vérifier en boucle le statut des ordres aux traits ou aux barres. De telles boucles sont utilisées en MQL4, ce qui réduit considérablement les performances du programme si importantes en optimisation.

Attardons-nous sur la fonction OnChartEvent(). L'appel de fonction est effectué pour plusieurs événements. Je n'ai pas réussi à tester chacun d'eux, mais la liste est impressionnante :

  • CHARTEVENT_KEYDOWN — événement clic sur la touche ;
  • CHARTEVENT_OBJECT_CLICK — événement d'un clic de souris sur un objet graphique appartenant à un graphique ;
  • CHARTEVENT_OBJECT_DRAG — événement de déplacement d'un objet graphique effectué par une souris ;
  • CHARTEVENT_OBJECT_ENDEDIT — événement de fin d'édition de texte ;
  • CHARTEVENT_CUSTOM+n — identifiant d'un événement personnalisé ;
  • CHARTEVENT_CUSTOM_LAST — le dernier.

La possibilité de gérer le trading et les graphiques à un nouveau niveau fonctionnel - c'est ce que les développeurs ont promis.

De nouveaux objets graphiques, boutons, champ de saisie sont apparus. La gestion des graphiques est devenue fantastique, on peut même insérer des images à partir de fichiers - cette option offre beaucoup de possibilités pour ceux qui aiment le design spécial. Ce n'est pas Photoshop, c'est le résultat des possibilités MQL5 et MetaTrader 5. Parmi les nouvelles fonctionnalités, vous pouvez créer vos propres boutons et champs de saisie en ajoutant, par exemple, un bouton pour fermer tous les ordres ouverts, ou le bouton d'achat et de vente rapide avec des paramètres stop et take prédéfinis.


Fig. 2. Des objets graphiques permettant de créer un panneau d'information.

Fig. 2. Les objets graphiques permettant de créer un panneau d'information

Il y a un fait désagréable : les objets ne peuvent pas être créés à partir d'indicateurs. Cela a été fait intentionnellement pour accélérer la performance des indicateurs. La bonne nouvelle est qu'ils le comprennent et, probablement, mettront en œuvre la possibilité de démarrer plusieurs Expert Advisors dans un même graphique. Ainsi, nous pourrons créer des indicateurs EA avec des objets et sans trader. De tels indicateurs peuvent être créés maintenant - ils fonctionneront comme des indicateurs. Maintenant, la tâche est résolue en démarrant un EA de trading dans un graphique et l'EA en créant des objets dans le second, puis en implémentant l'échange entre eux.

Par exemple, j'ai réussi à transformer mon indicateur de percée de MQL4 à MQL5 en quelques heures. Le plus de temps a été pris par la fonction d'apprentissage et de débogage. En MQL5, le code est devenu plus court.

Quant au terminal lui-même, j'ai été impressionné par le nombre de délais. À mon avis, il y a même l'excès. Cependant, l'abondance de délais par minute peut être utile pour certains traders. Eh bien, maintenant, il n'y a qu'une étape pour créer un délai librement configuré. Toutes les données ne sont désormais stockées que sous forme d'une minute, il n'y a donc aucun problème avec la synchronisation de différents délais - il s’agit là d’une solution technologique importante.

Maintenant, il n'y a plus de fichiers pour différents délais dans le catalogue HISTORY



Fig. 3. Tout l'historique est stocké dans un seul fichier.

Une autre introduction agréable est que nous pouvons maintenant effacer les journaux.


Fig. 4. Un seul clic de bouton pour effacer le journal EA, supprimer tous les messages inutiles

Ceci n'est qu'un bref aperçu de MetaTrader 5. Je ne peux pas décrire toutes les nouvelles fonctionnalités du système sur une période aussi courte - les tests ont commencé le 09.09.2009. C'est une date symbolique, et je suis sûr que ce sera un chiffre porte-bonheur. Quelques jours se sont écoulés depuis que j'ai obtenu la version bêta du terminal MetaTrader 5 et MQL5. Je n'ai pas réussi à essayer toutes ses fonctionnalités, mais je suis déjà impressionné.

Les magiciens de MetaQuotes ont créé un produit épatant. Étant un développeur doté de 25 ans d'expérience, j'ai vu le début de nombreux projets et je suis en mesure de conclure ceci avec certitude !

Cordialement,
Yuriy Zaytsev

Skype : yurazyuraz
yzh@mail.ru

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

Embarquement sur de nouveaux rails : Indicateurs personnalisés dans MQL5 Embarquement sur de nouveaux rails : Indicateurs personnalisés dans MQL5
Je ne vais pas énumérer toutes les nouvelles possibilités et fonctionnalités du nouveau terminal et du nouveau langage. Elles sont nombreuses, et certaines nouveautés méritent d'être discutées dans un article séparé. De plus, il n'y a aucun code d’écrit avec une programmation orientée objet, c'est un sujet trop sérieux pour être simplement mentionné dans un contexte comme des avantages supplémentaires pour les développeurs. Dans cet article, nous examinerons les indicateurs, leur structure, leur dessin, leurs types et leurs détails de programmation, par rapport à MQL4. J'espère que cet article sera utile aussi bien aux débutants qu'aux développeurs expérimentés, peut-être que certains d'entre eux trouveront quelques éléments d’apprentissage.
Utilisez les canaux MQL5.community et les discussions de groupe Utilisez les canaux MQL5.community et les discussions de groupe
Le site MQL5.com rassemble des traders du monde entier. Les utilisateurs publient des articles, partagent des codes gratuits, vendent des produits sur le Market, effectuent des commandes auprès des Freelance et copient des signaux de trading. Vous pouvez communiquer avec eux sur le Forum, dans les chats des traders et dans les canaux MetaTrader.
MQL5 : Créez votre propre indicateur MQL5 : Créez votre propre indicateur
Qu’est-ce qu’un indicateur? C’est un ensemble de valeurs calculées que nous voulons afficher à l’écran de manière pratique. Les ensembles de valeurs sont représentés dans les programmes sous forme de tableaux. Ainsi, la création d’un indicateur signifie écrire un algorithme qui gère certains tableaux (tableaux de prix) et enregistre les résultats de la manipulation sur d’autres tableaux (valeurs d’indicateur). En décrivant la création de True Strength Index, l’auteur montre comment écrire des indicateurs dans MQL5.
Indicateurs et Systèmes de Trading de William Blau en MQL5. partie 1: Indicateurs Indicateurs et Systèmes de Trading de William Blau en MQL5. partie 1: Indicateurs
L'article présente les indicateurs, décrits dans le livre de William Blau "Dynamique, Direction, and Divergence". L'approche de William Blau nous permet d'estimer rapidement et avec précision les fluctuations de la courbe des prix, de déterminer la tendance des mouvements de prix et des tournants, et d'éliminer le bruit des prix. Pendant ce temps, nous sommes également en mesure de détecter les états de surachat/survente du marché et des signaux indiquant la fin d'une tendance et l'inversion du mouvement des prix.