MetaTrader 5 build 2170 : portée MQL5, testeur de stratégie global et mises à jour intégrées de l'Hébergement Virtuel

Mises à jour : MetaTrader 5

5 octobre 2019

Terminal

  1. Options de gestion de l'Hébergement Virtuel intégrées entièrement repensées. Toutes les informations sur le terminal loué, ainsi que sur les fonctions de migration, d'arrêt et de démarrage d'environnement, sont désormais disponibles dans un onglet séparé de la fenêtre Boîte à outils.

    Dans les versions précédentes, les fonctions d'Hébergement Virtuel étaient disponibles dans le menu contextuel de la fenêtre du Navigateur. Désormais, toutes les informations et commandes de contrôle nécessaires sont classées sous l'onglet "VPS" :




    Les informations de base de l'abonnement apparaissent à gauche :

    • Données de connexion : comparaison des délais réseau entre votre terminal sur le serveur d’hébergement et un terminal fonctionnant sur un PC local.
    • Compte de trading pour lequel l'hébergement a été loué et le plan de paiement.
    • Identifiant d'abonnement unique. Un clic sur l'ID ouvre la section Hébergement du profil utilisateur MQL5.community, à partir duquel l'abonnement peut être géré.
    • Date d'inscription et état actuel. Si le service d'hébergement est arrêté, un statut approprié apparaîtra instantanément ici.

    En utilisant le bouton Démarrer/Arrêter, le terminal virtuel peut être rapidement démarré ou arrêté.

    Les données relatives au matériel du serveur d'hébergement et aux graphiques de consommation de la CPU sont affichées dans la partie droite de la fenêtre. Sur la base des informations affichées, vous pourrez réagir rapidement si votre Expert Advisor ou votre indicateur utilise une mémoire ou un temps excessif du processeur.

    Des informations sur la dernière migration de l'environnement de trading ainsi que les commandes de migration sont également disponibles ici. Ces commandes permettent une migration rapide de l'environnement après l'achat d'un abonnement.

    Une plateforme virtuelle peut être louée à partir de l'onglet "VPS". Le processus de location n'a pas changé et il est toujours rapide et facile. Il vous suffit de sélectionner un plan et un mode de paiement adapté. Le meilleur serveur pour la connexion à votre courtier sera sélectionné automatiquement.




  2. Ajout de la possibilité de basculer rapidement entre les opérations de dépôt/retrait sur le site Web du courtier.

    Il n'est pas nécessaire de rechercher les fonctions appropriées dans une salle de traders sur le site du courtier. Les commandes de navigation rapides sont disponibles directement dans les terminaux : dans le menu des comptes du Navigator et dans l'onglet Boîte à Outils > Trade :



    • Les opérations de dépôt/retrait ne sont disponibles que si les fonctions appropriées sont activées pour le compte de trading côté courtier.
    • Le terminal de trading n'effectue aucune opération de dépôt/retrait sur le compte. Les fonctions intégrées redirigent l'utilisateur vers les pages appropriées du site Web du courtier.
  3. Nouveaux champs dans la spécification d'un symbole de trading :

    Catégorie
    La propriété est utilisée pour le marquage supplémentaire d'instruments financiers. Par exemple, il peut s'agir du secteur de marché auquel appartient le symbole : Agriculture, Pétrole et Gaz et autres. La catégorie est affichée uniquement si les informations appropriées sont fournies par le courtier.

    Bourse
    Le nom de la bourse dans laquelle le titre est échangé. La catégorie est affichée uniquement si les informations appropriées sont fournies par le courtier.

    Commissions
    Informations sur les commissions facturées par un courtier pour les transactions du symbole. Les détails du calcul sont affichés ici :

    • La commission peut être à un seul niveau ou à plusieurs niveaux, c’est-à-dire égale quel que soit le volume/le chiffre d’affaires ou peut dépendre de la taille. Les données appropriées sont affichées dans le terminal.
    • La commission peut être chargée immédiatement à la signature de l'opération ou à la fin d'un jour de bourse/mois.
    • La commission peut être facturée en fonction de la direction de la transaction : entrée, sortie ou les deux types d'opération.
    • La commission peut être facturée par lot ou par transaction.
    • La commission peut être calculée en argent, en pourcentage ou en points.

    Par exemple, l'entrée suivante signifie qu'une commission est prélevée immédiatement lors de l'entrée et de la sortie de l'opération. Si le volume des transactions se situe entre 0 et 10 lots, une commission de 1,2 USD est facturée par opération. Si le volume de transaction se situe entre 11 et 20 lots, une commission de 1,1 USD est facturée pour chaque lot de la transaction.
    Commission | Offres instantanées, volume, entrée/sortie
    0  - 10  | 1.2 USD par transaction
    11 - 20  | 1.1 USD par lot



  4. Des champs associés aux options supplémentaires ont été ajoutés à la spécification du symbole :

    • Type de l'option — call ou put
    • Sous-jacent — le symbole sous-jacent de l'option
    • Prix d'exercice — prix d'exercice de l'option

  5. Ajout du support pour la livraison des options "Grecs" : delta, gamma, vega, theta, rho. Les courtiers peuvent fournir des informations supplémentaires relatives à ces instruments. Les données sont affichées dans la section Détails de la fenêtre Market Watch et peuvent être utilisées pour une analyse avancée des trades :



  6. L'outil Croix de Visée indique maintenant la distance entre les niveaux de prix en pourcentage, en plus des pips précédemment disponibles :




  7. Ajout de l'affichage d'un prix résultant dans les boîtes de dialogue de trading pendant les opérations d'exécution Market et Boursière, si ce prix est disponible au moment où une réponse est reçue du courtier :




  8. Correction d'une erreur occasionnelle provoquant l'échec de la commande "Tout Afficher" dans la fenêtre Market Watch lors de l'affichage de la liste de tous les instruments de trading disponibles.

MQL5

  1. la portée des opérations a été révisée et MQL5 est maintenant encore plus proche du C++. Cela offre aux programmeurs MQL5 de plus larges possibilités d’opérations avec des bibliothèques tierces. La mise à jour élimine le besoin de modifier les bibliothèques et d'unifier les identificateurs.

    Exemple : Le code contient la déclaration de deux structures portant le même nom, même si elles appartiennent à des classes différentes. Dans les versions antérieures, une telle déclaration produisait une erreur de compilation : "identificateur déjà utilisé". Maintenant, ce code sera compilé et exécuté avec succès. Pour un accès correct à la variable/structure/fonction souhaitée en dehors de sa portée, vous devez spécifier une classe (dans ce cas, il s'agit de CBar::Item).
    class CFoo
      {
    public:
       struct Item { int x; };
      };
    //+------------------------------------------------------------------+
    class CBar
      {
    public:
       struct Item { int x; };
      };
      
    CBar::Item item;  // déclaration correcte de la structure Item de la classe Bar
    Item       item;  // déclaration incorrecte
    Ajout du support de namespace fournissant plus de possibilités lors de l'utilisation de code/bibliothèques tierces dans les applications MQL5.

    #define PrintFunctionName() Print(__FUNCTION__)
    
    namespace NS
    {
    void func()
      {
       PrintFunctionName();
      }
    
    struct C
      {
       int               x;
                         C() { PrintFunctionName(); };
      };
    }
    
    struct C
      {
       int               x;
                         C() { PrintFunctionName(); };
      };
    
    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
    void func()
      {
       PrintFunctionName();
      }
    //+------------------------------------------------------------------+
    //| Fonction de lancement du script                                  |
    //+------------------------------------------------------------------+
    void OnStart()
      {
       func();
       NS::func();
    
       C c;
       NS::C ac;
      }
    Lors de l'exécution, le résultat suivant est affiché en sortie :
    2019.09.18 13:39:35.947    TestScript (AUDCAD,H1)    func
    2019.09.18 13:39:35.949    TestScript (AUDCAD,H1)    NS::func
    2019.09.18 13:39:35.949    TestScript (AUDCAD,H1)    C::C
    2019.09.18 13:39:35.949    TestScript (AUDCAD,H1)    NS::C::C

  2. la nouvelle version offre un accès plus rapide aux données temporelles à l'aide des fonctions suivantes : iTime, iOpen, iHigh, iLow, iClose, iVolume, iTickVolume, iSpread.

  3. Ajout du support de l'attribut "=delete". Cela permet d'interdire l'utilisation de certaines méthodes de classe.
    class A
      {
       void              operator=(const A &)=delete;    // interidt l'opérateur de copie d'objet
      };
    
    class B : public A
      {
      };
    
    //+------------------------------------------------------------------+
    //| Fonction de lancement du script                                  |
    //+------------------------------------------------------------------+
    void OnStart()
      {
       A a1,a2;
       B b1,b2; 
      
       a1=a2;
       b1=b2;
      }
    Dans cet exemple, le compilateur renverra des erreurs pour "a1=a2" et "b1=b2" :
    attempting to reference deleted function 'void A::operator=(const A&)'
       function 'void A::operator=(const A&)' was explicitly deleted here

    attempting to reference deleted function 'void B::operator=(const B&)'
       function 'void B::operator=(const B&)' was implicitly deleted because it invokes deleted function 'void A::operator=(const A&)'

  4. les valeurs suivantes ont été ajoutées à l'énumération ENUM_SYMBOL_INFO_STRING :

    • SYMBOL_CATEGORY — catégorie du symbole. Elle est utilisée pour le marquage supplémentaire d'instruments financiers. Par exemple, il peut s'agir du secteur de marché auquel appartient le symbole : Agriculture, Pétrole et Gaz et autres.
    • SYMBOL_EXCHANGE — le nom de la bourse dans laquelle le titre est échangé.

  5. Ajout du support pour la fermeture de position par la règle FIFO.

    • La valeur ACCOUNT_FIFO_CLOSE a été ajoutée à ENUM_ACCOUNT_INFO_INTEGER. Cela indique que les positions ne peuvent être fermées que par la règle FIFO. Si la valeur de la propriété est true, les positions de chaque instrument ne peuvent être fermées que dans le même ordre dans lequel elles ont été ouvertes : le plus ancien doit être fermé en premier, puis le suivant, etc. En cas de tentative de fermeture de positions dans un ordre différent, une erreur sera renvoyée. La valeur de la propriété est toujours 'false' pour les comptes sans gestion de la position de couverture (ACCOUNT_MARGIN_MODE!=ACCOUNT_MARGIN_MODE_RETAIL_HEDGING).
    • Nouveau code de retour : MT_RET_REQUEST_CLOSE_ONLY — la requête est rejetée car la règle "Seule la fermeture de positions existantes par la règle FIFO est autorisée" est définie pour le symbole

    Il existe trois méthodes principales pour fermer une position :

    • Fermeture depuis le terminal client : le trader ferme la position manuellement, à l’aide d’un robot de trading, sur la base de l’abonnement au service Signals, etc. En cas de tentative de fermeture d'une position qui ne respecte pas la règle FIFO, le trader recevra une erreur appropriée.
    • Clôture par l'activation du Stop Loss ou du Take Profit : ces ordres sont traités côté serveur. La fermeture de position n'est donc pas demandée côté trader (terminal), mais initiée par le serveur. Si le Stop Loss ou le Take Profit se déclenche pour une position et que cette position n'est pas conforme à la règle FIFO (une position plus ancienne correspond au même symbole), la position ne sera pas fermée.
    • Fermeture lors du déclenchement du Stop Out : de telles opérations sont également traitées côté serveur. En mode normal, dans lequel la fermeture par FIFO est désactivée, en cas de Stop Out, les positions sont fermées en commençant par celle ayant la plus grande perte. Si cette option est activée, l'heure d'ouverture sera également vérifiée pour les positions perdues. Le serveur détermine les positions perdantes pour chaque symbole, recherche la position la plus ancienne pour chaque symbole, puis ferme celle qui a la plus grande perte parmi les positions trouvées.

  6. Ajout d'options pour le regroupement de paramètres via "groupe d'entrée". Cela permet une séparation visuelle des paramètres en fonction de leur logique sous-jacente.

    Dans le code Expert Advisor ci-dessous, les paramètres d’entrée sont regroupés en fonction de leur objectif :
    input group           "Signal"
    input int             ExtBBPeriod = 20;         // période des Bandes de Bollinger
    input double          ExtBBDeviation=2.0;       // déviation
    input ENUM_TIMEFRAMES ExtSignalTF=PERIOD_M15;   // Période BB
    
    input group           "Tendance"
    input int             ExtMAPeriod = 13;         // Période de la moyenne mobile
    input ENUM_TIMEFRAMES ExtTrendTF=PERIOD_M15;    // Période MM
    
    input group           "ReglesDeSortie"
    input bool            ExtUseSL      = true;     // utilise le StopLoss
    input int             Ext_SL_Points = 50;       // StopLoss en points
    input bool            ExtUseTP      = false;    // utilise le TakeProfit
    input int             Ext_TP_Points = 100;      // TakeProfit en points
    input bool            ExtUseTS      = true;     // utilise le Trailing Stop
    input int             Ext_TS_Points = 30;       // Trailing Stop en points
    
    input group           "MoneyManagement"
    sinput double         ExtInitialLot =0.1;       // valeur initiale du lot
    input bool            ExtUseAutoLot =true;      // calcul automatique du lot
    
    input group           "Auxiliaire"
    sinput int            ExtMagicNumber =123456;   // Magic Number de l'EA
    sinput bool           ExtDebugMessage=true;     // affiche les messages de debug
    Lorsqu'un tel Expert Advisor est lancé dans le Strategy Tester, les blocs de paramètres d'entrée peuvent être réduits ou développés par un double-clic sur le nom du groupe. Tous les paramètres d'un groupe peuvent être sélectionnés pour être optimisés à l'aide d'une seule case à cocher.




  7. Correction de l'import des fonctions DLL avec des noms correspondant aux noms de fonctions MQL5. Exemple :
    #import "lib.dll"
    int func();
    #import
    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
    int func()
      {
       return(0);
      }
    //+------------------------------------------------------------------+
    //| Fonction de lancement du script                                  |
    //+------------------------------------------------------------------+
    void OnStart()
      {
       Print( func() );
      }
    Dans les versions antérieures, l'erreur suivante était renvoyée lors de la compilation :
    'func' - ambiguous call to overloaded function with the same parameters
    could be one of 2 function(s)
       int func()
       int func()
    Maintenant, au lieu de l'erreur, la fonction MQL5 intégrée avec une priorité plus élevée sera utilisée par défaut. La fonction importée peut être appelée en spécifiant explicitement la portée :
    void OnStart()
      {
       Print( lib::func() );
      }
  8. Correction de la spécification de l'heure dans les nouvelles du calendrier économique. Les événements sont désormais livrés en tenant compte du fuseau horaire du serveur de trading auquel le terminal est connecté, au lieu du fuseau horaire de l'ordinateur local.
  9. correction de la consommation excessive de mémoire dans les fonctions Copyticks et CopyTicksRange.

Signals

  1. Correction de l'affichage des graphiques de signaux lorsque vous travaillez dans Wine (MacOS et Linux).

Tester

  1. Grosse mise à jour du Strategy Tester. Nouvelle page de démarrage, page de paramètres redessinée, facilité d'utilisation améliorée.

    Page de démarrage
    Maintenant, après le lancement du testeur, l’utilisateur voit, au lieu de plusieurs paramètres, une liste de tâches standards, en sélectionnant celles qu’ils peuvent rapidement commencer à tester. La nouvelle conception est principalement destinée aux utilisateurs inexpérimentés.

    Nous avons sélectionné les tâches de test de stratégie et d'optimisation les plus fréquentes et les avons ajoutées à la page de démarrage. En outre, l’une des tâches précédemment exécutées peut être redémarrée à partir de la page de démarrage. Si vous avez exécuté de nombreuses tâches et qu'elles ne rentrent pas dans la page de démarrage, utilisez la barre de recherche. Vous pouvez trouver un test avec n’importe quel paramètre : nom du programme, symbole, calendrier, mode de modélisation, etc.




    Masquer les paramètres non pertinents
    Après avoir sélectionné une tâche, l'utilisateur procède à des tests supplémentaires : sélection d'un expert, symbole, période de test, etc. Tous les paramètres non pertinents qui ne sont pas requis pour les tâches sélectionnées sont masqués à partir de la page de configuration. Par exemple, si des calculs mathématiques sont sélectionnés, seuls deux paramètres doivent être spécifiés : la sélection d'un programme à tester et le mode d'optimisation. Les paramètres de période de test, de délai et de génération de ticks seront masqués.




    Configuration de test pratique
    Pour plus de commodité, certains paramètres de la page de configuration ont été réorganisés. Des explications détaillées ont été ajoutées pour les paramètres de délai et de visualisation. En outre, les paramètres de test peuvent maintenant être enregistrés et téléchargés manuellement, ce qui permet au trader de revenir rapidement aux paramètres précédents.




    En utilisant le même onglet, vous pouvez rapidement ouvrir le programme pour le modifier dans MetaEditor.

    Calcul du profit en pips
    En utilisant les paramètres, vous pouvez activer le calcul du profit en pips. Ce mode accélère les tests alors qu'il n'est pas nécessaire de recalculer le profit dans la devise du dépôt en utilisant des taux de conversion (et qu'il n'est donc pas nécessaire de télécharger l'historique des prix approprié). Les calculs de swap et de commission sont éliminés dans ce mode.




    Veuillez noter que lors du calcul du profit en pips, le volume des transactions n’a pas d’importance. Seul le nombre de pips gagnés/perdus est calculé pour chaque transaction. De plus, le contrôle des marges n'est pas effectué dans ce mode. Utilisez-le uniquement pour une estimation rapide et approximative de la stratégie, puis vérifiez les résultats obtenus en utilisant des modes plus précis.

    Amélioratoins générales
    Le bouton de démarrage/arrêt de test et la barre de progression ont été déplacés vers la barre des onglets. Ainsi, l'utilisateur peut contrôler le processus depuis n'importe quelle section du Strategy Tester. Des commandes de test de démarrage/arrêt ont également été ajoutées aux menus contextuels des sections de paramètres et d’entrées.




  2. le graphique d'optimisation peut désormais être affiché dans la zone de travail principale du terminal, au lieu de s'afficher dans une section de testeur de stratégie distincte. De cette façon, beaucoup plus d'espace devient disponible pour l'analyse des données. Le système de visualisation 3D a également été mis à jour.




  3. ajout de la sauvegarde du cache d’optimisation pour le mode "Tous les symboles du Market Watch".
  4. Ajout de la sauvegarde du cache du test.

    Dans les versions précédentes, les résultats des tâches exécutées étaient enregistrés dans des fichiers uniquement lors de l'optimisation d'Expert Advisors. Désormais, les fichiers de cache sont également sauvegardés lors de tests individuels, à l’aide desquels les utilisateurs peuvent revenir à des calculs antérieurs et consulter à tout moment les statistiques, l’équilibre, le solde et le chargement des dépôts. Dans les prochaines versions, cette option permettra de comparer les résultats des tests.

    Pour charger les résultats des tests précédents, utilisez la nouvelle page de démarrage du testeur : cliquez sur "Résultats précédents" et sélectionnez le site souhaité :




  5. Essais et optimisations considérablement accélérés, y compris les opérations effectuées avec le réseau cloud MQL5.
  6. Correction et optimisation des opérations avec des cadres.

MetaEditor

  1. Ajout de la possibilité de configurer le styler de code.

    MetaEditor comprend un styler de code intégré, qui permet de formater automatiquement le texte du programme conformément à la norme adoptée. Maintenant, en plus du style commun, vous pouvez utiliser d'autres normes populaires. Pour ce faire, ouvrez les paramètres de MetaEditor et sélectionnez le style souhaité :




    Les paramètres suivants peuvent également être définis pour le styler :

    Espaces par indentations
    Définit le nombre d'espaces utilisés dans l'alignement des constructions imbriquées :
    if(condition)
      {
       //---
      }

    Remplacer les tabulations par des espaces
    Si cette option est activée, le styliste remplacera tous les onglets du code par des espaces. Le nombre de caractères par tabulation est défini dans la section Général.

    Supprimer les lignes vides
    Lorsque cette option est activée, le styler supprimera toutes les lignes comportant uniquement un caractère de saut de ligne.

    Insérer des espaces après des virgules et des points-virgules
    Lorsque cette option est activée, le styler séparera visuellement les constructions avec des énumérations d'éléments. Exemple :
    // before styling
    ParameterGetRange("InpX",enable,x_cur,x_start,x_step,x_stop);
    // after styling
    ParameterGetRange("InpX", enable, x_cur, x_start, x_step, x_stop);

    Insérer des espaces autour des opérateurs de déclaration
    Lorsque cette option est activée, le styler insère des espaces autour des opérateurs d'affectation, d'égalité, de comparaison et autres. Exemple :
    // before styling
    if(x==1&y!=2)
      {
       int a=0;
      }
    // after styling
    if(x == 1 & y != 2)
     {
      int a = 0;
     }

  2. Ajout de la commande "Afficher dans le Navigator" au menu contextuel des favoris du fichier. Ainsi, l'utilisateur peut facilement trouver un fichier ouvert en édition dans la structure de dossiers de l'éditeur.




  3. Correction de l'affichage du mot clé 'union' dans les bulles d'aide.

L’interface utilisateur a également été traduite dans 18 nouvelles langues :

  • Région européenne - suédois, lituanien, danois, letton, estonien, serbe, slovène, slovaque, finnois, géorgien
  • Région asiatique - Javanais, marathi, bengali, punjabi, tamoul, telugu
  • Région africaine - swahili, haoussa

L’interface de la plateforme est maintenant disponible en 50 langues, parlées par plus de 4 milliards de personnes.

Pour définir la langue de votre interface, accédez au menu "Affichage \ Langue" situé en haut du terminal.

La documentation a été mise à jour.

Corrections basées sur les journaux de crash.

La mise à jour sera disponible via le système Live Update.