Plateforme MetaTrader 5 Update Build 1200 : Historique des Ticks et Paiement Direct pour les Services

Ajout de la possibilité de travailler avec l'historique des ticks dans le Market Watch

23 octobre 2015

Terminal

  1. Ajout de la possibilité de travailler avec l'historique des ticks dans le Market Watch. Auparavant, le graphique des ticks ne montrait que l'historique collecté par le terminal pendant son fonctionnement. Désormais, vous pouvez accéder à l'historique entier des ticks sur le serveur. Désactivez le défilement automatique et commencez à faire défiler un graphique dans le temps en utilisant votre souris pour télécharger l'historique manquant à partir du serveur, de la même façon que pour les graphiques de prix. La nouvelle fonctionnalité sera utile pour les traders qui veulent obtenir des graphiques de prix plus détaillés.



    Utilisez la fonction CopyTicks() pour recevoir l'historique des ticks. Elle a été modifié de sorte qu'elle demande l'historique manquant et le télécharge si celui-ci est présent sur le serveur.

  2. Ajout d'une icône pour l'ouverture/fermeture rapide du Depth of Market. L'icône est située près du panneau Trading En Un Clic du graphique. Vous pouvez également utiliser le nouveau raccourci clavier Alt+B. Le raccourci clavier fonctionne également dans la fenêtre Market Watch ouvrant le Depth of Market pour le symbole en surbrillance dans le Market Watch.




  3. Les informations sur les caractéristiques matérielles du PC et le système d'exploitation sont maintenant écrites dans le Journal au démarrage du terminal client. Exemple :
    2015.10.14 14:48:18.486	Data Folder: C:\Program Files\MetaTrader 5
    2015.10.14 14:48:18.486	Windows 7 Professional (x64 based PC), IE 11.00, UAC, 8 x Intel Core i7  920 @ 2.67GHz, RAM: 8116 / 12277 Mb, HDD: 534262 / 753865 Mb, GMT+03:00
    2015.10.14 14:48:18.486	MetaTrader 5 build 1190 started (MetaQuotes Software Corp.)
  4. Amélioration de l'utilisation des symboles dans le Market Watch :

    • Ajout de l'affichage du nombre de symboles dans le Market Watch et du nombre total de symboles disponibles sur le serveur
    • Ajout d'une ligne pour ajouter un nouveau symbole avec la liste de sélection intelligente
    • La recherche d'un nouveau symbole est réalisée non seulement par son nom, mais également par sa description et son nom international.




  5. Ajout du support du calendrier économique dans différentes langues.
  6. Ajout des icônes manquantes des pays au calendrier économique.
  7. Ajout du raccourci clavier pour l'ouverture de la fenêtre de gestion du symbole dans le Market Watch - Ctrl+U.
  8. Correction de l'organisation des fenêtres ouvertes des graphiques selon les commandes du menu Fenêtre.
  9. Correction d'une erreur qui entrave parfois la capacité du terminal à trouver un fichier de certificat lors de l'utilisation de l'authentification renforcée.
  10. Correction d'une erreur qui pourrait parfois conduire à une synchronisation en boucle de l'historique des prix.
  11. Correction de la mise à 0 des niveaux de StopLoss/TakeProfit d'une position ouverte précedemment après que son volume ait été augmenté si le symbole est tradé en mode Exécution de la Demande (Request execution).
  12. Correction de la vérification de la possibilité de placer un ordre sell dans le cas d'une position long sur des symboles en mode "Long uniquement" dans le Depth of Market.
  13. Correction de la fonction Trailing Stop. Dans quelques rares cas, le Stop Loss de protection pour une position ouverte était déplacé incorrectement.
  14. L'interface du terminal a été adaptée pour des écrans en haute résolution (4K).
  15. Correction de la libération mémoire excessive des données d'historique malgré les appels réguliers depuis les programmes MQL5.
  16. Correction de l'affichage de certains éléments de l'interface utilisateur lorsque vous travaillez sous Windows 10.
  17. Traductions mises à jour de l'interface de l'utilisateur.

Market

  1. Market : Le fonctionnement avec la base de données des produits dans le MQL5 Market a été révu et optimisé.
  2. Market : L'achat sans compte MQL5.community a été désactivé pour les terminaux sur VPS. L'achat requiert maintenant la spécification d'un compte MQL5.community dans les paramètres du terminal : Outils - Options - Community.
  3. Market : Ajout d'un achat direct de produit en utilisant UnionPay.
  4. Market : Journalisation améliorée lors de l'achat de produits sur le MQL5 Market.
  5. Hébergement : Ajout de la gestion de l'hébergement virtuel (sauf pour la migration) lorsque vous travaillez dans la version 32 bits du terminal client.


Hébergement Virtuel et Signaux

  1. Les paiements pour l'Hébergement Virtuel et les abonnements au Signal peuvent maintenant être transférés directement à partir des systèmes de paiement. Pour régler les services d'hébergement, les utilisateurs n'ont pas besoin de se connecter à leur compte MQL5.community et d'y ajouter de l'argent. Le paiement du service peut maintenant être transféré directement depuis la plateforme en utilisant l'un des systèmes de paiement disponibles.



    Sélectionnez l'un des systèmes disponibles et transférez de l'argent en ligne :




    De même, un paiement pour un abonnement au signal de trading peut être fait directement à partir du terminal via un système de paiement.




    Le montant souhaité sera tout d'abord transféré à votre compte MQL5.community, à partir duquel le paiement pour le service sera effectué. Ainsi, vous maintenez un historique clair et unifié des plateformes d'hébergement virtuel louées et des abonnements au signal et vous pouvez facilement accéder et examiner tous vos paiements pour les services de la MQL5.community.
  2. Ajout de la gestion de l'hébergement virtuel (sauf pour la migration) lorsque vous travaillez dans la version 32 bits du terminal client.
  3. Correction des paramètres de migration d'exportation FTP vers l'hébergement virtuel indépendamment de l'autorisation de publier des rapports via FTP.

MQL5

  1. Un nouveau compilateur d'optimisation activé. L'exécution des programmes a été accélérée par 5 sur des plateformes en 64 bits. Les programmes MQL5 doivent être recompilés dans la dernière version MetaEditor.
  2. Format étendu de la structure MqlTick. Elle passe maintenant l'heure d'arrivée d'un tick en millisecondes, ainsi que les flags pour déterminer quels paramètres du tick ont été changés.
    struct MqlTick
      {
       datetime     time;          // Heure de la dernière mise à jour d'un prix
       double       bid;           // Prix Bid actuel
       double       ask;           // Prix Ask actuel
       double       last;          // Prix Last actuel
       ulong        volume;        // Volume du prix Last actuel
       long         time_msc;      // Heure de la dernière mise à jour d'un prix en millisecondes
       uint         flags;         // Flags du tick
      };
    Les paramètres de chaque tick sont remplis indépendamment du fait qu'il y ait des changements par rapport au tick précédent. Ainsi, il est possible de trouver un prix correct pour un moment donné dans le passé, sans avoir besoin de rechercher des valeurs antérieures. Par exemple, même si le prix Bid change pendant l'arrivée d'un tick, la structure contient toujours les autres paramètres, notamment le prix Ask précédent, le volume, etc. Vous pouvez analyser les flags des ticks pour savoir exactement quelles données ont été modifiées :

    • TICK_FLAG_BID - un tick a changé le prix Bid
    • TICK_FLAG_ASK  - un tick a changé le prix Ask
    • TICK_FLAG_LAST - un tick a changé le prix de la dernière transaction
    • TICK_FLAG_VOLUME - un tick a changé le volume
    • TICK_FLAG_BUY - un tick est le résultat d'une transaction d'achat
    • TICK_FLAG_SELL - un tick est le résultat d'une transaction de vente

    La structure MqlTick est utilisée dans deux méthodes :

    • CopyTicks - la méthode ne supporte pas l'ancien format de la structure. Les fichiers EX5 compilés précédemment en utilisant l'ancien format de tick retourneront l'erreur 4006 (ERR_MQL_INVALID_ARRAY) lors de l'appel à la fonction CopyTicks.
    • SymbolInfoTick - la méthode supporte à la fois l'ancien et le nouveau format de la structure.

  3. Ajout des templates de classe vous permettant de créer des classes paramétrées comme en C++. Cela permet une plus grande abstraction et la capacité d'utiliser le même code pour travailler avec des objets de différentes classes d'une manière uniforme. Exemple d'utilisation :
    //+------------------------------------------------------------------+
    //|                                                    TemplTest.mq5 |
    //|                        Copyright 2015, MetaQuotes Software Corp. 
    //|                                             https://www.mql5.com |
    //+------------------------------------------------------------------+
    #property copyright "Copyright 2015, MetaQuotes Software Corp."
    #property link      "https://www.mql5.com"
    #property version   "1.00"
    //+------------------------------------------------------------------+
    //| Déclare un modèle de classe                                      |
    //+------------------------------------------------------------------+
    template<typename T>
    class TArray
      {
    protected:
       T                 m_data[];
    
    public:
    
       bool              Append(T item)
         {
          int new_size=ArraySize(m_data)+1;
          int reserve =(new_size/2+15)&~15;
          //---
          if(ArrayResize(m_data,new_size,reserve)!=new_size)
             return(false);
          //---
          m_data[new_size-1]=item;
          return(true);
         }
       T                 operator[](int index)
         {
          static T invalid_index;
          //---
          if(index<0 || index>=ArraySize(m_data))
             return(invalid_index);
          //---
          return(m_data[index]);
         }   
      };
    //+------------------------------------------------------------------+
    //| Modèle de classe d'un tableau de pointeurs. Le destructeur supprime   |
    //| les objets stockés dans le tableau.     |
    //|                                                                  |
    //| Noter l'héritage de la classe templatée TArray                   |
    //+------------------------------------------------------------------+
    template<typename T>
    class TArrayPtr : public TArray<T *>
      {
    public:
       void             ~TArrayPtr()
         {
          for(int n=0,count=ArraySize(m_data);n<count;n++)
             if(CheckPointer(m_data[n])==POINTER_DYNAMIC)
                delete m_data[n];
         }
      };
    //+--------------------------------------------------------------------------+
    //| Déclare la classe. Les pointeurs vers ses objets seront stockés dans le tableau |
    //+--------------------------------------------------------------------------+
    class CFoo
      {
       int               m_x;
    public:
                         CFoo(int x):m_x(x) { }
       int               X(void) const { return(m_x); }
      };
    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
    TArray<int>     ExtIntArray;   // instancie TArray (spécialiee TArray avec le type int)
    TArray<double>  ExtDblArray;   // instancie TArray (spécialise TArray avec le type double)
    TArrayPtr<CFoo> ExtPtrArray;   // instancie TArrayPtr (spécialise TArrayPtr avec le type CFoo)
    //+------------------------------------------------------------------+
    //| Fonction de démarrage du script                                  |
    //+------------------------------------------------------------------+
    void OnStart()
      {
    //--- remplit les tableaux avec les données
       for(int i=0;i<10;i++)
         {
          int integer=i+10;
          ExtIntArray.Append(integer);
          
          double dbl=i+20.0;
          ExtDblArray.Append(dbl);
          
          CFoo *ptr=new CFoo(i+30);
          ExtPtrArray.Append(ptr);
         }
    //--- extrait les contenus du tableau
       string str="Int:";
       for(int i=0;i<10;i++)
          str+=" "+(string)ExtIntArray[i];      
       Print(str);   
       str="Dbl:";
       for(int i=0;i<10;i++)
          str+=" "+DoubleToString(ExtDblArray[i],1);
       Print(str);   
       str="Ptr:";
       for(int i=0;i<10;i++)
          str+=" "+(string)ExtPtrArray[i].X();      
       Print(str);
    //--- Les objets CFoo créés via new ne devraient pas être effacés puisqu'ils sont supprimés dans le destructeur de l'objet TArrayPtr<CFoo>  
      }
    Résultats d'exécution :
    TemplTest (EURUSD,H1)    Int: 10 11 12 13 14 15 16 17 18 19
    TemplTest (EURUSD,H1)    Dbl: 20.0 21.0 22.0 23.0 24.0 25.0 26.0 27.0 28.0 29.0
    TemplTest (EURUSD,H1)    Ptr: 30 31 32 33 34 35 36 37 38 39

  4. Nouvelles opérations * et & pour recevoir une variable par référence et retourner une référence à une variable.
  5. Ajout de la forme surchargée de la fonction ObjectsDeleteAll - supprime tous les objets d'un type spécifié par un préfixe du nom dans une sous-fenêtre du graphique.
    int  ObjectsDeleteAll(
       long           chart_id,   // identifiant du graphique
       const string     prefix,   // préfixe du nom de l'objet
       int       sub_window=-1,   // indice de la fenêtre
       int      object_type=-1    // type d'objet pour la suppression
       );

  6. Correction de l'utilisation de la fonction ObjectGetValueByTime. Auparavant, une valeur de prix incorrecte pouvait être retournée (par exemple, pour une ligne de tendance horizontale).
  7. Correction des fonctions de Copie * en l'absence de l'historique des données sur le serveur. Auparavant, de tels cas proovoquaient un délai de 30-50 secondes avant de redonner le contrôle.
  8. Ajout de quelques améliorations à la Bibliothèque Standard MQL5.
  9. Documentation de la Bibliothèque Standard traduite en allemand, français, chinois, turque, espagnol et portuguais.
  10. Ajout de la documentation MQL5 en japonais.

Tester

  1. Le processus de sélection des programmes a exécuter dans le Strategy Tester est devenu plus facile. La liste est affichée désormais sous la forme d'un arbre selon les répertoires dans lequel les Expert Advisors et les indicateurs sont stockés.




  2. Correction de l'affichage de certains indicateurs pendant un test visuel pour qu'ils soient en ligne avec le terminal client.
  3. Correction de la définition du levier et de la période du graphique pendant le déboguage des programmes MQL5 via le testeur de stratégie.
  4. Correction du débogage des indicateurs lors des tests sur l'historique.
Correction d'erreurs rapportées dans les journaux.

Documentation mise à jour.