Mises à jour : MetaTrader 5

L'historique des mises à jour des plateformes de bureau, mobile et web

5 juillet 2016
Plateforme Web MetaTrader 5 : Publication officielle

Après deux mois de test public, la version web de la plateforme multi-actifs MetaTrader 5 a été publiée officiellement. Elle permet de trader le Forex et les bourses depuis n'importe quel navigateur et n'importe quel système d'exploitation. Seule une connexion Internet est nécessaire, aucune installation de logiciel n'est demandée.

L'application combine les principaux avantages des versions de bureau (haute vitesse, support de plusieurs marchés et fonctions étendues de trading) avec l'aspect pratique de la nature multi-plateformes du terminal web. La fonctionnalité principale de la nouvelle version est le Depth of Market, qui n'était pas présent dans la version beta.

La plateforme web permet aux traders d'effectuer des analyses techniques et des opérations de trading comme dans la version de bureau. La plateforme web fournit les fonctionnalités suivantes :

  • Systèmes de comptabilisation des positions par compensation et par couverture
  • 31 indicateurs techniques
  • 23 objets d'analyse
  • Trading-En-1-Clic et ensemble complet d'ordres de trading
  • Interface en 41 langues
13 mai 2016
MetaTrader 5 Platform build 1340 : Transfert pratique des certificats vers les appareils mobiles et améliorations du Strategy Tester

Terminal

  1. Les certificats utilisés pour la connexion avancée peuvent être transférés de façon pratique de la plateforme de bureau vers les terminaux mobiles.

    La plateforme de trading supporte l'authentification étendue en protégeant un compte de trading en utilisant un certificat SSL en complément d'un mot de passe. Le certificat est un fichier qui est généré individuellement pour chaque compte sur le serveur de trading. Ce fichier est unique et la connexion au compte n'est pas possible sans le certificat.

    Dans les versions précédentes de la plateforme, tout certificat demandé et généré depuis le terminal de bureau devait être copié manuellement et installé sur l'appareil pour permettre l'utilisation du compte de trading depuis MetaTrader 5 Mobile pour iPhone/iPad ou pour Android. Les certificats peuvent maintenant être transférés de façon plus pratique.

    Processus de Transfert du Certificat
    Un certificat est transféré via un serveur de trading :

    • Un certificat est d'abord crypté sur le terminal de bureau : le détenteur du compte définit un mot de passe pour le cryptage du certificat en utilisant l'algorithme sécurisé AES-256. Ce mot de passe n'est connu que de l'utilisateur, il n'est pas envoyé sur le serveur.
    • Par la suite, le certificat crypté est envoyé sur le serveur de trading, où il est stocké jusqu'à ce que le terminal mobile l'ai reçu, mais pas plus d'une heure.
    • Pour recevoir le certificat sur un appareil mobile, l'utilisateur doit se connecter au compte de trading depuis le terminal mobile. Après s'être connecté, il est demandé à l'utilisateur d'importer le certificat. Pour effecture l'import, l'utilisateur doit spécifier le mot de passe utilisé pour le cryptage du certificat sur le terminal de bureau.

    Le processus de transfert du certificat est sécurisé : le serveur de trading n'est utilisé que comme stockage intermédiaire, et le certificat est crypté du côté du client. Le mot de passe du certificat n'est pas transmis ou stocké sur le serveur de trading.

    Comment Transférer un Certificat
    Connectez-vous à votre compte depuis le terminal mobile et sélectionnez "Transférer le Certificat" dans son menu contextuel :



    Saisissez le mot de passe principal du compte pour confirmer qu'il vous appartient bien. Définissez ensuite un mot de passe pour protéger le certificat avant de l'envoyer sur le serveur. Définissez un mot de passe composé d'au moins 8 chiffres.

    Après avoir envoyé le certificat sur le serveur avec succès, ouvrez le terminal mobile et connectez-vous à votre compte. Il vous sera demandé immédiatement d'importer le certificat. Confirmez et saisissez le mot de passe que vous avez défini dans le terminal de bureau.



    Vous pouvez voir le certificat importé dans la section "A Propos - Certificats".
    Les plateformes MetaTrader 5 pour iPhone/iPad et pour Android mises à jour pour le support du transfert du certificat seront publiées bientôt.

Tester

  1. Un algorithme mis à jour pour l'exécution des ordres en attente, des SL et des TP qui fournit des conditions de test plus précises. Options avancées de test visuel.

    Quoi de Neuf pour les Instruments Boursiers
    Sur le marché réel, les graphiques des instruments échangés sont générés sur la base du prix Last (le prix de la dernière transaction exécutée). Les Ordres Stop sont également déclenchés au prix Last. Les ordres Limit sont déclenchés aux prix Bid et Ask. Tous les types d'ordres sont toujours exécutés aux prix Bid/Ask actuels du marché. Le Strategy Tester a été mis à jour et émule dorénavant mieux les conditions réelles du marché :
      Avant
    Après
    Déclencheur Bid/Ask pour tous les types d'Ordres en Attente et SL/TP
    Bid/Ask pour les Ordres Limit
    Last pour les ordres Stop, Stop-Limit et SL/TP
    Exécution Le prix spécifié dans l'ordre pour tous les types d'Ordres en Attente et les SL/TP
    Bid/Ask au moment du déclenchement de l'ordre pour tous les types d'Ordres en Attente et les SL/TP

    Considérons l'exemple sur le symbole Si-6.16. Un nouvel ordre Buy Stop au prix de déclenchement = 72580 est défini alors que les prix actuels sont : Bid=72570, Ask=72572, Last=72552. De nouveaux prix courants sont reçus dans un flux de prix :

    • Bid=72588
    • Ask=72590
    • Last=72580


    Le déclencheur pour les Ordres Stops des instruments échangés est le prix Last. Donc le prix Last=72580 reçu dans le flux active l'ordre Buy Stop. Dans les versions précédentes, le même prix était utilisé pour exécuter cet ordre. Ce comportement est incorrect car il n'y a plus de prix Ask=72580 sur la marché pour exécuter la transaction Buy.


    Le prix actuel Ask=72590 est utilisé dans la version mise à jour du testeur, l'ordre Buy Stop est donc exécuté à ce prix. Le nouvel algorithme d'exécution du Tester est plus proche des conditions réelles du marché. L'opération de trading serait exécutée à un prix inexistant sur le marché en utilisant l'algorithme précédent, ce qui amènerait à des résultats de test inexacts.

    Quoi de Neuf pour les Autres Instruments
    L'algorithme n'a pas été changé pour les autres instruments : les prix Bid/Ask sont utilisés pour tous les types d'ordres en attente et pour les SL et TP. Cependant, le mode d'exécution a changé : dans les versions précédentes, les ordres étaient exécutés au prix spécifié dans l'ordre. Les prix Bid et Ask du marché au moment de l'activation de l'ordre sont maintenant utilisés.

    Quoi de Neuf pour le Test Visuel
    Durant le test visuel, les lignes des prix High Ask et Low Bid des barres ne sont pas affichées dans le testeur. Sur ces graphiques, il est plus pratique de tester les Expert Advisors qui tradent les instruments échangés car les barres de ces instruments, de même que le déclenchement des ordres, sont basées sur les prix Last, alors que les opérations au marché sont exécutées aux prix Bid et Ask.



    Nouvelle option sur le graphique de test visuel : navigation jusqu'à une date spécifiée. Double-cliquez sur le graphique et saisissez la date et l'heure désirées. Il est également possible de naviguer jusqu'à n'importe quel ordre ou n'importe quelle position : double-cliquez sur l'opération de trading souhaitée dans les onglets Trade, Historique ou Opérations.
  2. Améliorations des entrées du journal à propos des prix et de l'historique des ticks chargés avant le démarrage du test. Le journal contient maintenant les informations sur l'avancement du chargement de l'historique et sur la quantité de données téléchargées et le temps passé :
    2016.05.10 12:47:53    Core 1    5.10 Mb of history processed in 0:00.842
    2016.05.10 12:47:53    Core 1    GBPUSD: history synchronization completed [5225 Kb]

MQL5

  1. Correction du comportement de la fonction CopyTicks : elle pouvait retourner moins de ticks que demandé.
  2. Correction de la génération des fonctions template.
  3. Documentation mise à jour.

Correction d'erreurs reportées dans les journaux des crash.

12 mai 2016
Plateforme Web MetaTrader 5 : Maintenant disponible en beta test

La version beta de la Plateforme Web MetaTrader 5 a été publiée. Le nouveau produit combine l'aspect pratique et la nature multi-plateformes du terminal web avec les avantages de la version de bureau de MetaTrader 5 – vitesse, support de plusieurs marchés et fonctions étendues de trading.

La plateforme web MetaTrader 5 est disponible sur la MQL5.community et elle permet aux traders d'effectuer des opérations de trading sur les marchés financiers depuis n'importe quel navigateur et n'importe quel système d'exploitation, incluant Windows, Mac et Linux. Vous n'avez besoin que d'une connexion internet. Aucun logiciel supplémentaire n'est requis.

Les fonctionnalités suivantes sont disponibles dans la version beta :

  • Système de couverture
  • 30 indicateurs techniques
  • 24 objets d'analyse
  • Ensemble complet d'ordres de trading de MetaTrader 5
  • Interface en 41 langues
La publication de la version beta vise à fournir un test public grandeur nature et à permettre aux traders d'évaluer les nouvelles capacités.
22 avril 2016
MetaTrader 5 build 1325 : Option de couverture (hedging) et test sur les ticks réels

Terminal

  1. Nous avons ajouté le second système de comptabilisation - la couverture (hedging) qui étend les possibilités des traders Forex. Il est maintenant possible d'avoir plusieurs positions par symbole, incluant des positions dans des directions opposées. Cela ouvre la voie à l'implémentation des stratégies de trading basées sur le fameux "blocage" - si le prix se déplace contre un trader, il peut ouvrir une position dans la direction opposée.

    Puisque le nouveau système est similaire à celui utilisé dans MetaTrader 4, il sera familier aux traders. En même temps, les traders pourront profiter de tous les avantages de la 5ème version de la plateforme - remplissage des ordres avec des transactions multiples (incluant les remplissages partiels), multi-devises et testeur multi-threads avec le support du réseau MQL5 Cloud Network, et bien plus.

    Vous pouvez maintenant utiliser un compte pour trader les marchés qui adhèrent au système de compensation et permettent de n'avoir qu'une seule position par instrument, et utiliser un autre compte dans la même plateforme pour trader le Forex et appliquer la couverture (hedging).

    Ouverture d'un compte couvert et visualisation du type de comptabilisation des positions
    Un système de comptabilisation des positions est défini au niveau du compte et affiché dans l'en-tête de la fenêtre du terminal et dans le Journal :



    Pour ouvrir un compte de démo avec la couverture, activez l'option correspondante :




    Système de compensation
    Avec ce système, vous ne pouvez avoir qu'une seule position pour un symbole au même moment :

    • Si une position ouverte existe pour un symbole, l'exécution d'une transaction dans la même direction augmente le volume de cette position.
    • Si une transaction est exécutée dans la direction opposée, le volume de la position existante peut être diminué, la position peut être fermée (lorsque le volume de la transaction est égal au volume de la position) ou renversé (si le volume de la transaction opposée est supérieur à celui de la position actuelle).

    Ce qui a causé la transaction opposée n'importe pas - un ordre au marché exécuté ou un ordre en attente déclenché.

    L'exemple ci-dessous montre l'exécution de deux transactions Buy sur l'EURUSD de 0,5 lots chacunes :


    L'exécution des deux transactions a résulté en une seule position d'1 lot.

    Système de couverture
    Avec ce système, vous pouvez avoir plusieurs positions ouvertes d'un seul et même symbole, incluant des positions opposées.

    Si vous avez une position ouverte pour un symbole et que vous exécutez une nouvelle transaction (ou qu'un ordre en attente est déclenché), une nouvelle position est ouverte en supplément. Votre position actuelle ne change pas.

    L'exemple ci-dessous montre l'exécution de deux transactions Buy sur l'EURUSD de 0,5 lots chacunes :


    L'exécution de ces transactions a résulté dans l'ouverture de deux positions séparées.

    Nouveau type d'opération - Close By
    Un nouveau type d'opération de trading a été ajouté pour les comptes de couverture - fermer une position par une position opposée. Cette opération permet de fermer deux positions dans des directions opposées d'un même symbole. Si les positions opposées ont des nombres de lots différents, un seul des deux ordres reste ouvert. Son volume sera égal à la différence des lots des positions fermées, tandis que la direction de la position et le prix d'ouverture correspondront (en volume) à la plus grande des positions fermées.

    Comparée à une fermeture simple des deux positions, la fermeture par une position opposée permet aux traders d'économiser un spread :

    • Dans le cas d'une fermeture simple, les traders doivent payer un spread deux fois : lors de la fermeture d'une position buy à un prix inférieur (Bid) et lors de la fermeture d'une position sell à un prix supérieur (Ask).
    • Lors de l'utilisation d'une position opposée, le prix d'ouverture de la seconde position est utilisé pour fermer la première, tandis que le prix d'ouverture de la première position est utilisé pour fermer la seconde position.


    Dans ce dernier cas, un ordre "close by" est placé. Les tickets des positions fermées sont spécifiés dans leurs commentaires. Une paire de positions opposées est fermée par deux transactions "out by". Le profit/perte résultant de la fermeture des deux positions n'est spécifié que dans une seule transaction.


  2. En plus du support de la couverture, la version de la nouvelle plateforme fournit de plus grandes opportunités pour migrer les comptes depuis MetaTrader 4. Les courtiers peuvent maintenant transférer automatiquement les comptes vers MetaTrader 5, en incluant toutes les opérations : ordres ouverts et ordres en attente, et historique de trading complet.

    Une fenêtre de bienvenue s'affiche lors de la première connexion au compte migré depuis MetaTrader 4. La transmission des données est cryptée de façon sécurisée pendant la migration. Pour commencer, spécifiez le mot de passe de votre compte que vous avez utilisé dans MetaTrader 4, et saisissez un nouveau mot de passe.



    Une fois connecté, vous pourrez continuer à utiliser votre compte, comme s'il avait été ouvert depuis MetaTrader 5. L'historique complet de toutes les positions de MetaTrader 4 est ajouté automatiquement au nouveau compte.

    Les tickets des ordres et des positions (incluant l'historique des ordres) ne sont pas conservés pendant l'import, car un enregistrement de l'historique de MetaTrader 4 peut être importé en 4 opérations d'historique dans MetaTrader 5. Les nouveaux tickets sont assignés à tous les enregistrements de trading.

    Les numéros des comptes peuvent être préservés ou remplacés suivant la façon dont le courtier les importe.

  3. Ajout du Chat (messagerie instantanée). Maintenant, vous pouvez communiquer avec vos amis et collègues de la MQL5.community. Le chat affiche tous les messages personnels de votre compte MQL5. Pour commencer à communiquer, connectez-vous à votre compte directement depuis la fenêtre de chat ou via les paramètres de la plateforme : Outils -> Options -> Communauté.




  4. Fenêtre de création d'un compte de démo simplifiée, ajout de la possibilité de créer des comptes utilisant la couverture (hedging). Vous n'avez plus besoin de remplir le formulaire en entier. Il suffit de spécifier les données de base et de sélectionner les paramètres de trading : type de compte, dépôt, effet de levier, et la capacité de couverture.



  5. Ajout de l'attribution automatique d'un compte de démonstration pour un démarrage rapide. Si la plateforme n'a pas encore de compte, un compte de démonstration sur le premier serveur disponible est alloué lors du lancement. Après l'ouverture, la connexion au compte est immédiatement établie.

  6. Maintenant, chaque position a un ticket - un numéro unique. Il correspond habituellement au ticket d'un ordre utilisé pour l'ouverture de la position, sauf si le ticket a changé comme étant le résultat d'une opération de service sur le serveur, par exemple, lors de la facturation d'un swap pour la réouverture d'une position. Un ticket est attribué automatiquement à toutes les positions disponibles après la mise à jour du terminal.



  7. Correction de la définition des niveaux de Stop Loss et de Take Profit lors du placement d'un ordre au marché menant à un renversement de position. Jusqu'à récemment, aucun des niveaux correspondants n'étaient définis pour une nouvelle position.
  8. Correction des prix affichés avec quatre décimales ou plus sur les éléments du panneau de trading en un clic.
  9. Corrrection de l'affichage des nouvelles dans la fenêtre d'aperçu avant impression.
  10. Correction de l'affichage du graphique des ticks.
  11. Correction de l'ouverture du Market Depth après l'arrêt d'urgence du terminal.
  12. Ajout d'une vérification si les ordres du marché sont autorisés lors de l'affichage des éléments de contrôle du panneau de trading en un clic.
  13. Calculs du profit et de la marge optimisés dans le cas d'un grand nombre d'ordres et de positions ouvertes.
  14. Ajout de la traduction de l'interface utilisateur en malais.
  15. Manuel Utilisateur entièrement révisé. Nouveau design, des captures d'écran interactifs et des vidéos intégrées - apprenez le trading dans MetaTrader 5 avec un maximum de confort :



  16. Correction de l'affichage des objets graphiques dans le mode "Graphique en arrière plan".

Tester

  1. Ajout de la possibilité de tester les robots de trading et les indicateurs techniques avec l'historique réel des ticks.

    Le test et l'optimisation sur les ticks réels est aussi proche que possible des conditions réelles. Au lieu de générer des ticks basés sur les données 1-minute, il est possible d'utiliser les ticks réels accumulés par un courtier. Ce sont les ticks reçus des bourses et des fournisseurs de liquidités.

    Pour commencer le test ou l'optimisation en ticks réels, sélectionnez le mode correspondant dans le testeur de stratégie :



    Les données des ticks sont plus grosses comparées à celles en 1-minute. Les télécharger peut prendre un peu plus de temps lors du premier test. Les données téléchargées des ticks sont stockées par mois dans les fichiers TKC situés dans \bases\[nom du serveur de trading]\ticks\[nom du symbole]\.

    Test sur des ticks réels
    Lors d'un test sur des ticks réels, un spread peut changer pendant une barre d'une minute, tandis qu'en générant les ticks pendant une minute, le spread est fixé si la barre correspondante est utilisée.

    Si le Market of Depth est affiché pour un symbole, les barres sont construites selon le dernier cours de transaction exécuté (Last). Sinon, le tester essaye d'abord de construire les barres sur les prix Last, et s'ils n'existent pas, il utilise les prix Bid. L'évènement OnTick est déclenché sur tous les ticks, indépendamment de la présence ou non du prix Last.

    Veuillez noter que les opérations de trading sont toujours effectuées aux prix Bid et Ask, même si le graphique est construit sur les prix Last. Par exemple, si un Expert Advisor, qui n'utilise que les prix d'ouverture des barres pour le trading (par exemple la Moyenne Mobile intégrée), reçoit un signal au prix Last, il effectue une opération à un autre prix (Bid ou Ask suivant la direction). Si le mode "Chaque tick" est utilisé, les barres sont construites avec les prix Bid, alors que les trades sont effectués aux prix Bid et Ask. Le prix Ask est calculé comme Bid + spread fixe de la barre 1 minute correspondante.

    Si l'historique d'un symbole a une barre 1-minute sans données de ticks, le tester génère les ticks dans le mode "Chaque tick". Cela permet de tester l'EA sur une certaine période dans le cas où les données des ticks d'un courtier sont insuffisantes. Si l'historique d'un symbole n'a pas de barre 1-minute mais que les données des ticks pour la minute sont présentes, ces ticks sont ignorés. Les données en minute sont considérées comme plus fiables.

    Test sur des ticks réels sur le réseau MQL5 Cloud Network
    Le test sur les ticks réels est disponible non seulement sur les agents locaux et distants, mais également sur le réseau MQL5 Cloud Network. L'optimisation d'une stratégie qui pourrait prendre des mois peut être terminée en seulement quelques heures en utilisant la puissance de calcul de milliers d'ordinateurs.

    Pour tester une stratégie en utilisant le réseau MQL5 Cloud Network, activez l'utilisation des agents du cloud :



    Les tests sur des ticks réels en utilisant le réseau MQL5 Cloud Network peuvent consommer beaucoup de données. Ceci peut affecter de manière significative le paiement pour l'utilisation de la puissance du réseau.
  2. Correction d'une erreur qui empêchait le calcul des commissions sur plusieurs types de symboles de trading.
  3. Correction du remplissage du champ Expert pour les ordres de trading résultant de l'activation des SL/TP selon le champ Expert de la position correspondante. Auparavant, il n'était pas rempli.
  4. Correction du basculement entre les onglets de résultats des tests normaux et avancés.
  5. Correction du calcul et de l'affichage de l'indicateur "Enveloppes".
  6. Test visuel optimisé.
  7. Calculs du profit et de la marge optimisés dans le cas d'un grand nombre d'ordres et de positions ouvertes.
  8. Opérations de trading optimisées pendant le trading à haute fréquence.
  9. La synchronisation de l'historique n'est maintenant plus effectuée si une demande pour des propriétés non critiques du symbole (ne nécessitant pas les cotations actuelles) a été faite. Par exemple, SYMBOL_SELECT, SYMBOL_DIGITS, SYMBOL_SPREAD_FLOAT, SYMBOL_TRADE_CALC_MODE, SYMBOL_TRADE_MODE, SYMBOL_TRADE_STOPS_LEVEL, SYMBOL_TRADE_FREEZE_LEVEL, SYMBOL_TRADE_EXEMODE, etc. Auparavant, l'historique était synchronisé à chaque demande d'une propriété du symbole, même non critique.
  10. Correction du calcul des swaps comme pourcentage par an.

MQL5

  1. Le format des fichiers exécutables EX5 a changé pour implémenter les nouvelles fonctionnalités du langage MQL5 et la nouvelle option de couverture dans MetaTrader 5. Toutes les applications EX5 compilées avec les builds précédents de MetaEditor fonctionneront correctement après la mise à jour, c'est à dire que la compatibilité ascendante est complètement préservée.

    Les programmes EX5 compilés avec le build 1325 et supérieur ne fonctionneront pas avec les anciens builds du terminal - la compatibilité descendante n'est pas supportée.

  2. Ajout du support des classes abstraites et des fonctions virtuelles pures.

    Les classes abstraites sont utilisées pour créer des entités génériques que vous prévoyez d'utiliser pour créer des classes dérivées spécifiques. Une classe abstraite ne peut être utilisée que comme classe de base pour d'autres classes, c'est pourquoi il est impossible de créer un objet du type d'une classe abstraite.

    Une classe contenant au moins une fonction virtuelle pure est abstraite. Les classes dérivées d'une classe abstraite doivent donc implémenter toutes ses fonctions virtuelles pures, autrement, elles seront également des classes abstraites.

    Une fonction virtuelle est déclarée "pure" en utilisant la syntaxe du spécificateur pure. Considérons l'exemple de la classe CAnimal, qui n'est créée que pour fournir des fonctions communes - les objets du type CAnimal sont trop généraux pour un usage pratique. La classe CAnimal est donc un bon exemple de classe abstraite :
    class CAnimal
      {
    public:
                          CAnimal();     // Constructeur
       virtual void       Sound() = 0;   // Une fonction virtuelle pure
    private:
       double             m_legs_count;  // Le nombre de pattes de l'animal
      };
    Ici Sound() est une fonction virtuelle pure, car elle est déclarée avec le spécificateur de fonction virtuelle pure (=0).

    Les fonctions virtuelles pures sont les fonctions virtuelles pour lesquelles le spécificateur pure est utilisé : (=NULL) ou (=0). Exemple de déclaration et d'utilisation d'une classe abstraite :
    class CAnimal
      {
    public:
       virtual void       Sound()=NULL;   // méthode PURE, doit être surchargée dans la classe dérivée, CAnimal est maintenant abstraite et ne peut pas être créée
      };
    //--- Dérivée d'une classe abstraite
    class CCat : public CAnimal
     {
    public:
      virtual void        Sound() { Print("Myau"); } // la méthode pure est surchargée, CCat n'est pas abstraite et peut être créée
     };
    
    //--- exemples de mauvaises utilisations
    new CAnimal;         // Erreur de 'CAnimal' - le compilateur retourne l'erreur "ne peut pas instantier une classe abstraite"
    CAnimal some_animal; // Erreur de 'CAnimal' - le compilateur retourne l'erreur "ne peut pas instancier une classe abstraite"
    
    //--- exemples d'utilisations correctes
    new CCat;  // aucune erreur - la classe CCat n'est pas abstraite
    CCat cat;  // aucune erreur - la classe CCat n'est pas abstraite
    Restrictions concernant les classes abstraites
    Si le constructeur d'une classe abstraite appelle une fonction virtuelle pure (directement ou indirectement), le résultat est indéterminé.
    //+------------------------------------------------------------------+
    //| Une classe de base abstraite                                     |
    //+------------------------------------------------------------------+
    class CAnimal
      {
    public:
       //--- une fonction virtuelle pure
       virtual void      Sound(void)=NULL;
       //--- fonction
       void              CallSound(void) { Sound(); }
       //--- constructeur
       CAnimal()
        {
         //--- un appel explicite à la méthode virtuelle
         Sound();
         //--- un appel implicite (en utilisant une troisième fonction)
         CallSound();
         //--- un constructeur et/ou un destructeur appelle toujours ses propres fonctions,
         //--- même si elles sont virtuelles et surchargées par une fonction appellée dans une classe dérivée
         //--- si la fonction appelée est purement virtuelle
         //--- l'appel génère une erreur critique d'exécution "appel à une fonction virtuelle pure"
        }
      };
    Cependant, les constructeurs et les destructeurs des classes abstraites peuvent appeler d'autres fonctions membres.

  3. Ajout du support des pointeurs de fonctions pour simplifier l'organisation des modèles d'événements.

    Pour déclarer un pointeur de fonction, spécifiez le type "pointeur de fonction", par exemple :
    typedef int (*TFunc)(int,int);
    TFunc est maintenant un type, et il est possible de déclarer une variable pointant vers la fonction :
    TFunc func_ptr;
    La variable func_ptr peut stocker l'adresse de la fonction pour la déclarer par la suite :
    int sub(int x,int y) { return(x-y); }
    int add(int x,int y) { return(x+y); }
    int neg(int x)       { return(~x);  }
    
    func_ptr=sub;
    Print(func_ptr(10,5));
    
    func_ptr=add;
    Print(func_ptr(10,5));
    
    func_ptr=neg;           // erreur : neg n'est pas du type  int (int,int)
    Print(func_ptr(10));    // erreur : il devrait y avoir 2 paramètres
    Les pointeurs de fonctions peuvent être stockés et passés comme paramètres. Vous ne pouvez pas avoir un pointeur vers une méthode de classe non statique.

  4. MqlTradeRequest comporte deux nouveaux champs :

    • position - ticket de la position. Remplissez-le lorsque vous changez et fermez une position pour une identification claire lors du trading en mode "couverture" (hedging). Dans le système de compensation, le remplissage de ce champ n'affecte rien puisque les positions sont identifiées par le nom du symbole.
    • position_by - ticket de la position opposée. Il est utilisé lors de la fermeture d'une position par la position opposée (ouverte sur le même symbole mais dans une direction opposée). Le ticket est utilisé uniquement dans le système de couverture (hedging).

  5. Ajout de la valeur TRADE_ACTION_CLOSE_BY dans l'énumération ENUM_TRADE_REQUEST_ACTIONS des types d'opérations de trading - ferme une position par une position opposée. Le ticket est utilisé uniquement dans le système de couverture (hedging).

  6. Ajout des tickets de l'opération de trading dans les énumérations des propriétés des ordres, des transactions et des positions correspondantes :

    • Ajout de la propriété ORDER_TICKET à ENUM_ORDER_PROPERTY_INTEGER - ticket de l'ordre. Un numéro unique attribué à chaque ordre.
    • Ajout de la propriété DEAL_TICKET à ENUM_DEAL_PROPERTY_INTEGER - ticket de la transaction. Un numéro unique attribué à chaque transaction.
    • Ajout de la propriété POSITION_TICKET à ENUM_POSITION_PROPERTY_INTEGER - ticket de la position. Numéro unique attribué à chaque nouvelle ouverture de position. Il correspond habituellement au ticket d'un ordre utilisé pour l'ouverture de la position, sauf si le ticket a changé comme étant le résultat d'une opération de service sur le serveur, par exemple, lors de la facturation d'un swap pour la réouverture d'une position. Pour trouver l'ordre utilisé pour ouvrir une position, appliquez la propriété POSITION_IDENTIFIER. La valeur POSITION_TICKET correspond à MqlTradeRequest::position.

  7. Ajout de la valeur ORDER_TYPE_CLOSE_BY à l'énumération ENUM_ORDER_TYPE des types d'ordres - ordre close by.
  8. Ajout de la valeur ORDER_POSITION_BY_ID à l'énumération ENUM_ORDER_PROPERTY_INTEGER des propriétés de l'ordre - l'identifiant de la position opposée pour les types d'ordres ORDER_TYPE_CLOSE_BY.
  9. Ajout de la valeur DEAL_ENTRY_OUT_BY à l'énumération ENUM_DEAL_ENTRY des directions de transactions - une transaction est exécutée comme le résultat d'une opération close by.
  10. MqlTradeTransaction comporte également deux champs similaires :

    • position - ticket d'une position affectée par une transaction. Il est rempli pour les transactions liées à la manipulation des ordres du marché (TRADE_TRANSACTION_ORDER_* excepté TRADE_TRANSACTION_ORDER_ADD, où le ticket de la position n'est pas encore assigné) et de l'historique de l'ordre (TRADE_TRANSACTION_HISTORY_*).
    • position_by - ticket de la position opposée. Il est utilisé lors de la fermeture d'une position par la position opposée (ouverte sur le même symbole mais dans une direction opposée). Il n'est rempli que pour les ordres fermant une position par une position opposée (close by) et les transactions fermées par une transaction opposée (out by).

  11. Ajout de la fonction PositionGetTicket - retourne le ticket de la position par son index dans la liste des positions ouvertes et la sélectionne automatiquement pour travailler avec par la suite en utilisant les fonctions PositionGetDouble, PositionGetInteger et PositionGetString.
    ulong  PositionGetTicket(
       int  index      // index dans la liste des positions
       );

  12. Ajout de la fonction PositionSelectByTicket - sélectionne une position ouverte pour la poursuite du travail avec un ticket spécifié.
    bool  PositionSelectByTicket(
       ulong   ticket     // ticket de la position
       );

  13. Ajout de la valeur SYMBOL_MARGIN_HEDGED à l'énumération ENUM_SYMBOL_INFO_DOUBLE des propriétés des symboles - taille d'un contrat ou marge pour un lot de positions couvertes (positions opposées pour un même symbole).

    • Si la marge initiale (SYMBOL_MARGIN_INITIAL) est spécifiée pour un symbole, la marge couverte est spécifiée comme une valeur absolue (en termes monétaires).
    • Si la marge initiale n'est pas définie (égale à 0), une taille de contrat à utiliser dans le calcul de la marge est spécifiée dans SYMBOL_MARGIN_HEDGED. La marge est calculée en utilisant l'équation correspondant au type du symbole (SYMBOL_TRADE_CALC_MODE).

    La calcul de la marge pour les positions couvertes est décrit en détails dans l'Aide de la plateforme de trading MetaTrader 5.

  14. Ajout de la valeur ACCOUNT_MARGIN_MODE à l'énumération des propriétés du compte ENUM_ACCOUNT_INFO_INTEGER - mode de calcul de marge pour le compte de trading actuel :

    • ACCOUNT_MARGIN_MODE_RETAIL_NETTING - utilisé pour le marché over-the-counter avec le mode de compensation des positions (une position par symbole). Le calcul de la marge est basé sur le type du symbole (SYMBOL_TRADE_CALC_MODE).
    • ACCOUNT_MARGIN_MODE_EXCHANGE - utilisé sur les marchés des changes. La calcul de la marge est basé sur les remises spécifiées dans les paramètres du symbole. Les remises sont définies par le courtier, elles ne peuvent cependant pas être inférieures aux valeurs définies par la place boursière.
    • ACCOUNT_MARGIN_MODE_RETAIL_HEDGING - utilisé pour le marché over-the-counter avec comptabilisation indépendante des positions (couverture, il peut y avoir plusieurs position pour un même symbole). Le calcul de la marge est basé sur le type du symbole (SYMBOL_TRADE_CALC_MODE). La taille de la marge couverte (SYMBOL_MARGIN_HEDGED) est également prise en compte.

  15. Ajout de la valeur TERMINAL_SCREEN_DPI à l'énumération ENUM_TERMINAL_INFO_INTEGER des propriétés du terminal client - la résolution d'affichage des données est mesurée en points par pouce (PPP ou DPI). La connaissance de ce paramètre permet de spécifier la taille des objets graphiques afin qu'ils apparaissent de façon similaire sur des écrans ayant des résolutions différentes.

  16. Ajout de la valeur TERMINAL_PING_LAST aux propriétés du terminal client - la dernière valeur connue du ping vers le serveur de trading en microsecondes. Une seconde contient un million de microsecondes.

  17. Correction du résultat de retour de l'appel à la fonction SendFTP. Auparavant, FALSE était retourné après un envoi réussi au lieu de TRUE.
  18. MQL5 : Correction d'une erreur dans la fonction StringConcatenate qui provoquait occasionnellement des erreurs d'exécution "Access violation".
  19. Correction d'erreurs pouvant survenir lors de l'utilisation de fonctions templatées.
  20. Ajout de la possibilité d'afficher des lignes dépassant 4.000 caractères pour les fonctions Print, Alert et Comment.
  21. Correction d'une erreur dans la fonction ArrayCompare qui se produisait lors de la comparaison d'un tableau avec lui-même avec des points de départ différents.
  22. Ajout du support de la couverture (hedging) à la Bibliothèque Standard :

    CPosition
    Méthodes ajoutées :

    • SelectByMagic - sélectionne une position par son nombre magique et son symbole pour l'utiliser ensuite.
    • SelectByTicket - sélectionne une position par son ticket pour l'utiliser ensuite.

    CTrade
    Méthodes ajoutées :

    • RequestPosition - retourne le ticket de la position.
    • RequestPositionBy - retourne le ticket de la position opposée.
    • PositionCloseBy - ferme la position avec le ticket spécifié par une position opposée.
    • SetMarginMode - définit le mode de calcul de la marge en fonction des paramètres du compte courant.

    Ajout de la prise en compte de la surcharge des méthodes :

    • PositionClose - ferme la position par son ticket.
    • PositionModify - modifie la position par son ticket.

    CAccountInfo
    Méthodes modifiées :

    • MarginMode - retourne le mode de calcul de la marge. Jusqu'à récemment, la méthode fonctionnait de façon similaire à la nouvelle méthode StopoutMode.
    • MarginDescription - retourne le mode de calcul de la marge sous forme de chaîne de caractères. Jusqu'à récemment, la méthode fonctionnait de façon similaire à la nouvelle méthode StopoutModeDescription.

    Méthodes ajoutées :

    • StopoutMode - retourne le mode de spécification du niveau minimum de marge.
    • StopoutModeDescription - retourne le mode de spécification du niveau minimum de marge sous forme de chaîne de caractères.

    CExpert
    Méthodes ajoutées :

    • SelectPosition - sélectionne une position pour l'utiliser ensuite.

  23. Ajout de quelques améliorations à la Bibliothèque Standard.
  24. Correction du déchargement des DLL.
  25. Ajout du support des constructeurs de classes templatées.

Signaux

  1. Corrections de quelques signaux de trading présentant des erreurs d'affichage.

MetaEditor

  1. Correction de la recherche de mots par fichiers en mode "Mot Entier Uniquement".
  2. Ajout du déplacement vers un fichier en double cliquant sur la ligne correspondante du résultat de la compilation.
  3. Correction de l'affichage de certains éléments de contrôle dans Windows XP.
Documentation mise à jour.
1 avril 2016
MetaTrader 5 Platform Build 1295

Terminal

  1. Pour étendre les possibilités des traders de Forex, nous avons ajouté un second système de comptabilisation - la couverture (hedging). Il est maintenant possible d'avoir plusieurs positions par symbole, incluant des positions dans des directions opposées. Cela ouvre la voie à l'implémentation des stratégies de trading basées sur le fameux "blocage" - si le prix se déplace contre un trader, il peut ouvrir une position dans la direction opposée.

    Puisque le nouveau système est similaire à celui utilisé dans MetaTrader 4, il sera familier aux traders. En même temps, les traders pourront profiter de tous les avantages de la 5ème version de la plateforme - remplissage des ordres avec des transactions multiples (incluant les remplissages partiels), multi-devises et testeur multi-threads avec le support du réseau MQL5 Cloud Network, et bien plus.

    Vous pouvez maintenant utiliser un compte pour trader les marchés qui adhèrent au système de compensation et permettent de n'avoir qu'une seule position par instrument, et utiliser un autre compte dans la même plateforme pour trader le Forex et appliquer la couverture (hedging).

    Ouverture d'un compte couvert et visualisation du type de comptabilisation des positions
    Un système de comptabilisation des positions est défini au niveau du compte et est affiché dans l'en-tête de la fenêtre du terminal et dans le Journal :



    Pour ouvrir un compte de démo avec la couverture, activez l'option correspondante :




    Système de compensation
    Avec ce système, vous pouvez n'avoir qu'une seule position commune pour un symbole à la fois :

    • Si une position ouverte existe pour un symbole, l'exécution d'une transaction dans la même direction augmente le volume de cette position.
    • Si une transaction est exécutée dans la direction opposée, le volume de la position existante peut être diminué, la position peut être fermée (lorsque le volume de la transaction est égal au volume de la position) ou renversé (si le volume de la transaction opposée est supérieur à celui de la position actuelle).


    Ce qui a causé la transaction opposée n'importe pas - un ordre au marché exécuté ou un ordre en attente déclenché.

    L'exemple ci-dessous montre l'exécution de deux transactions Buy sur l'EURUSD de 0.5 lots chacunes :


    L'exécution des deux transactions a résulté en une seule position d'1 lot.

    Système de couverture
    Avec ce système, vous pouvez avoir plusieurs positions ouvertes d'un seul et même symbole, incluant des positions opposées.

    Si vous avez une position ouverte pour un symbole et que vous exécutez une nouvelle transaction (ou qu'un ordre en attente est déclenché), une nouvelle position est ouverte en supplément. Votre position actuelle ne change pas.

    L'exemple ci-dessous montre l'exécution de deux transactions Buy sur l'EURUSD de 0.5 lots chacunes :


    L'exécution de ces transactions a résulté dans l'ouverture de deux positions séparées.

    Nouveau type d'opération - Close By
    Un nouveau type d'opération de trading a été ajouté pour les comptes de couverture - fermer une position par une position opposée. Cette opération permet de fermer deux positions dans des directions opposées d'un même symbole. Si les positions opposées ont des nombres de lots différents, un seul des deux ordres reste ouvert. Son volume sera égal à la différence des lots des positions fermées, tandis que la direction de la position et le prix d'ouverture correspondront (en volume) à la plus grande des positions fermées.

    Comparée à une fermeture simple des deux positions, la fermeture par une position opposée permet aux traders d'économiser un spread :

    • Dans le cas d'une fermeture simple, les traders doivent payer un spread deux fois : lors de la fermeture d'une position buy à un prix inférieur (Bid) et lors de la fermeture d'une position sell à un prix supérieur (Ask).
    • Lors de l'utilisation d'une position opposée, le prix d'ouverture de la seconde position est utilisé pour fermer la première, tandis que le prix d'ouverture de la première position est utilisé pour fermer la seconde position.


    Dans ce dernier cas, un ordre "close by" est placé. Les tickets des positions fermées sont spécifiés dans leurs commentaires. Une paire de positions opposées est fermée par deux transactions "out by". Le profit/perte résultant de la fermeture des deux positions n'est spécifié que dans une seule transaction.



  2. Ajout de la possibilité de tester les robots de trading et les indicateurs techniques avec l'historique réel des ticks.

    Le test et l'optimisation sur les ticks réels est aussi proche que possible des conditions réelles. Au lieu de générer des ticks basés sur les données 1-minute, il est possible d'utiliser les ticks réels accumulés par un courtier. Ce sont les ticks reçus des bourses et des fournisseurs de liquidités.

    Pour commencer le test ou l'optimisation en ticks réels, sélectionnez le mode correspondant dans le testeur de stratégie :



    Les données des ticks sont plus grosses comparées à celles en 1-minute. Les télécharger peut prendre un peu plus de temps lors du premier test. Les données téléchargées des ticks sont stockées par mois dans les fichiers TKC situés dans \bases\[nom du serveur de trading]\ticks\[nom du symbole]\.

    Test sur des ticks réels
    Lors d'un test sur des ticks réels, un spread peut changer pendant une barre d'une minute, tandis qu'en générant les ticks pendant une minute, le spread est fixé si la barre correspondante est utilisée.

    Si le Market of Depth est affiché pour un symbole, les barres sont construites selon le dernier cours de transaction exécuté (Last). Sinon, le tester essaye d'abord de construire les barres sur les prix Last, et s'ils n'existent pas, il utilise les prix Bid. L'évènement OnTick est déclenché sur tous les ticks, indépendamment de la présence ou non du prix Last.

    Veuillez noter que les opérations de trading sont toujours effectuées aux prix Bid et Ask, même si le graphique est construit sur les prix Last. Par exemple, si un Expert Advisor, qui n'utilise que les prix d'ouverture des barres pour le trading (par exemple la Moyenne Mobile intégrée), reçoit un signal au prix Last, il effectue une opération à un autre prix (Bid ou Ask suivant la direction). Si le mode "Chaque tick" est utilisé, les barres sont construites avec les prix Bid, alors que les trades sont effectués aux prix Bid et Ask. Le prix Ask est calculé comme Bid + spread fixe de la barre 1 minute correspondante.

    Si l'historique d'un symbole a une barre 1-minute sans données de ticks, le tester génère les ticks dans le mode "Chaque tick". Cela permet de tester l'EA sur une certaine période dans le cas où les données des ticks d'un courtier sont insuffisantes. Si l'historique d'un symbole n'a pas de barre 1-minute mais que les données des ticks pour la minute sont présentes, ces ticks sont ignorés. Les données en minute sont considérées comme plus fiables.
    Actuellement, les tests et l'optimisation sur de vrais tics ne sont possibles que sur les agents locaux et distants. Le support au MQL5 Cloud Network sera ajouté prochainement.

  3. Ajout du Chat (messagerie instantanée). Maintenant, vous pouvez communiquer avec vos amis et collègues de la MQL5.community. Le chat affiche tous les messages personnels de votre compte MQL5. Pour commencer à communiquer, connectez-vous à votre compte directement depuis la fenêtre de chat ou via les paramètres de la plateforme : Outils -> Options -> Communauté.




  4. Fenêtre de création d'un compte de démo simplifiée, ajout de la possibilité de créer des comptes utilisant la couverture (hedging). Vous n'avez plus besoin de remplir le formulaire en entier. Il suffit de spécifier les données de base et de sélectionner les paramètres de trading : type de compte, dépôt, effet de levier, et la capacité de couverture.



  5. Ajout de l'attribution automatique d'un compte de démonstration pour un démarrage rapide. Si la plateforme n'a pas encore de compte, un compte de démonstration sur le premier serveur disponible est alloué lors du lancement. Après l'ouverture, la connexion au compte est immédiatement établie.

  6. Maintenant, chaque position a un ticket - un numéro unique. Il correspond habituellement au ticket d'un ordre utilisé pour l'ouverture de la position, sauf si le ticket a changé comme étant le résultat d'une opération de service sur le serveur, par exemple, lors de la facturation d'un swap pour la réouverture d'une position. Un ticket est attribué automatiquement à toutes les positions disponibles après la mise à jour du terminal.




  7. Correction de la définition des niveaux de Stop Loss et de Take Profit lors du placement d'un ordre au marché menant à un renversement de position. Jusqu'à récemment, aucun des niveaux correspondants n'étaient définis pour une nouvelle position.
  8. Correction des prix affichés avec quatre décimales ou plus sur les éléments du panneau de trading en un clic.
  9. Corrrection de l'affichage des nouvelles dans la fenêtre d'aperçu avant impression.
  10. Correction de l'affichage du graphique des ticks.
  11. Correction de l'ouverture du Market Depth après l'arrêt d'urgence du terminal.
  12. Ajout d'une vérification si les ordres du marché sont autorisés lors de l'affichage des éléments de contrôle du panneau de trading en un clic.
  13. Calculs du profit et de la marge optimisés dans le cas d'un grand nombre d'ordres et de positions ouvertes.
  14. Ajout de la traduction de l'interface utilisateur en malais.
  15. Manuel Utilisateur entièrement révisé. Nouveau design, des captures d'écran interactifs et des vidéos intégrées - apprenez le trading dans MetaTrader 5 avec un maximum de confort :




MQL5

  1. Ajout du support des classes abstraites et des fonctions virtuelles pures.

    Les classes abstraites sont utilisées pour créer des entités génériques que vous prévoyez d'utiliser pour créer des classes dérivées spécifiques. Une classe abstraite ne peut être utilisée que comme classe de base pour d'autres classes, c'est pourquoi il est impossible de créer un objet du type d'une classe abstraite.

    Une classe contenant au moins une fonction virtuelle pure est abstraite. Les classes dérivées d'une classe abstraite doivent donc implémenter toutes ses fonctions virtuelles pures, autrement, elles seront également des classes abstraites.

    Une fonction virtuelle est déclarée "pure" en utilisant la syntaxe du spécificateur pure. Considérons l'exemple de la classe CAnimal, qui n'est créée que pour fournir des fonctions communes - les objets du type CAnimal sont trop généraux pour un usage pratique. La classe CAnimal est donc un bon exemple de classe abstraite :
    class CAnimal
      {
    public:
                          CAnimal();     // constructeur
       virtual void       Sound() = 0;   // fonction virtuelle pure
    private:
       double             m_legs_count;  // nombre de pattes de l'animal
      };
    Ici Sound() est une fonction virtuelle pure car elle est déclarée avec le spécificateur de fonction virtuelle pure (=0).

    Les fonctions virtuelles pures sont les fonctions virtuelles pour lesquelles le spécificateur pure est utilisé : (=NULL) ou (=0). Exemple de déclaration et d'utilisation d'une classe abstraite :
    class CAnimal
      {
    public:
       virtual void       Sound()=NULL;   // méthode pure, doit être surchargée dans la classe dérivée, CAnimal est maintenant abstraite et ne peut pas être créée
      };
    //--- descendant de la classe abstraite
    class CCat : public CAnimal
     {
    public:
      virtual void        Sound() { Print("Myau"); } // la méthode pure est surchargée, CCat n'est pas abstraite et peut être créée
     };
    
    //--- exemples de mauvaises utilisations
    new CAnimal;         // Erreur de 'CAnimal' - le compilateur retourne l'erreur "ne peut pas instantier une classe abstraite"
    CAnimal some_animal; // Erreur de 'CAnimal' - le compilateur retourne l'erreur "ne peut pas instancier une classe abstraite"
    
    //--- exemples d'utilisations correctes
    new CCat;  // aucune erreur - la classe CCat n'est pas abstraite
    CCat cat;  // aucune erreur - la classe CCat n'est pas abstraite
    Restrictions concernant les classes abstraites
    Si le constructeur d'une classe abstraite appelle une fonction virtuelle pure (directement ou indirectement), le résultat est indéterminé.
    //+------------------------------------------------------------------+
    //| Une classe de base abstraite                                     |
    //+------------------------------------------------------------------+
    class CAnimal
      {
    public:
       //--- une fonction virtuelle pure
       virtual void      Sound(void)=NULL;
       //--- fonction
       void              CallSound(void) { Sound(); }
       //--- constructeur
       CAnimal()
        {
         //--- un appel explicite à la méthode virtuelle
         Sound();
         //--- un appel implicite (en utilisant une troisième fonction)
         CallSound();
         //--- un constructeur et/ou un destructeur appelle toujours ses propres fonctions,
         //--- même si elles sont virtuelles et surchargées par une fonction appellée dans une classe dérivée
         //--- si la fonction appelée est purement virtuelle
         //--- l'appel génère une erreur critique d'exécution "appel à une fonction virtuelle pure"
        }
      };
    Cependant, les constructeurs et les destructeurs des classes abstraites peuvent appeler d'autres fonctions membres.

  2. Ajout du support des pointeurs de fonctions pour simplifier l'organisation des modèles d'événements.

    Pour déclarer un pointeur de fonction, spécifiez le type "pointeur de fonction", par exemple :
    typedef int (*TFunc)(int,int);
    TFunc est maintenant un type, et il est possible de déclarer une variable pointant vers la fonction :
    TFunc func_ptr;
    La variable func_ptr peut stocker l'adresse de la fonction pour la déclarer par la suite :
    int sub(int x,int y) { return(x-y); }
    int add(int x,int y) { return(x+y); }
    int neg(int x)       { return(~x);  }
    
    func_ptr=sub;
    Print(func_ptr(10,5));
    
    func_ptr=add;
    Print(func_ptr(10,5));
    
    func_ptr=neg;           // erreur : neg n'est pas du type  int (int,int)
    Print(func_ptr(10));    // erreur : il devrait y avoir 2 paramètres
    Les pointeurs de fonctions peuvent être stockés et passés comme paramètres. Vous ne pouvez pas avoir un pointeur vers une méthode de classe non statique.

  3. MqlTradeRequest comporte deux nouveaux champs :

    • position - ticket de la position. Remplissez-le lorsque vous changez et fermez une position pour une identification claire lors du trading en mode "couverture" (hedging). Dans le système de compensation, le remplissage de ce champ n'affecte rien puisque les positions sont identifiées par le nom du symbole.
    • position_by - ticket de la position opposée. Il est utilisé lors de la fermeture d'une position par la position opposée (ouverte sur le même symbole mais dans une direction opposée). Le ticket est utilisé uniquement dans le système de couverture (hedging).

  4. Ajout de la valeur TRADE_ACTION_CLOSE_BY dans l'énumération ENUM_TRADE_REQUEST_ACTIONS des types d'opérations de trading - ferme une position par une position opposée. Le ticket est utilisé uniquement dans le système de couverture (hedging).

  5. Ajout des tickets de l'opération de trading dans les énumérations des propriétés des ordres, des transactions et des positions correspondantes :

    • Ajout de la propriété ORDER_TICKET à ENUM_ORDER_PROPERTY_INTEGER - ticket de l'ordre. Un numéro unique attribué à chaque ordre.
    • Ajout de la propriété DEAL_TICKET à ENUM_DEAL_PROPERTY_INTEGER - ticket de la transaction. Un numéro unique attribué à chaque transaction.
    • Ajout de la propriété POSITION_TICKET à ENUM_POSITION_PROPERTY_INTEGER - ticket de la position. Numéro unique attribué à chaque nouvelle ouverture de position. Il correspond habituellement au ticket d'un ordre utilisé pour l'ouverture de la position, sauf si le ticket a changé comme étant le résultat d'une opération de service sur le serveur, par exemple, lors de la facturation d'un swap pour la réouverture d'une position. Pour trouver l'ordre utilisé pour ouvrir une position, appliquez la propriété POSITION_IDENTIFIER. La valeur POSITION_TICKET correspond à MqlTradeRequest::position.

  6. Ajout de la valeur ORDER_TYPE_CLOSE_BY à l'énumération ENUM_ORDER_TYPE des types d'ordres - ordre close by.
  7. Ajout de la valeur ORDER_POSITION_BY_ID à l'énumération ENUM_ORDER_PROPERTY_INTEGER des propriétés de l'ordre - l'identifiant de la position opposée pour les types d'ordres ORDER_TYPE_CLOSE_BY.
  8. Ajout de la valeur DEAL_ENTRY_OUT_BY à l'énumération ENUM_DEAL_ENTRY des directions de transactions - une transaction est exécutée comme le résultat d'une opération close by.
  9. MqlTradeTransaction comporte également deux champs similaires :

    • position - ticket d'une position affectée par une transaction. Il est rempli pour les transactions liées à la manipulation des ordres du marché (TRADE_TRANSACTION_ORDER_* excepté TRADE_TRANSACTION_ORDER_ADD, où le ticket de la position n'est pas encore assigné) et de l'historique de l'ordre (TRADE_TRANSACTION_HISTORY_*).
    • position_by - ticket de la position opposée. Il est utilisé lors de la fermeture d'une position par la position opposée (ouverte sur le même symbole mais dans une direction opposée). Il n'est rempli que pour les ordres fermant une position par une position opposée (close by) et les transactions fermées par une transaction opposée (out by).

  10. Ajout de la fonction PositionGetTicket - retourne le ticket de la position par son index dans la liste des positions ouvertes et la sélectionne automatiquement pour travailler avec par la suite en utilisant les fonctions PositionGetDouble, PositionGetInteger et PositionGetString.
    ulong  PositionGetTicket(
       int  index      // index dans la liste des positions
       );

  11. Ajout de la fonction PositionSelectByTicket - sélectionne une position ouverte pour la poursuite du travail avec un ticket spécifié.
    bool  PositionSelectByTicket(
       ulong   ticket     // ticket de la position
       );

  12. Ajout de la valeur SYMBOL_MARGIN_HEDGED à l'énumération ENUM_SYMBOL_INFO_DOUBLE des propriétés des symboles - taille d'un contrat ou marge pour un lot de positions couvertes (positions opposées pour un même symbole).

    • Si la marge initiale (SYMBOL_MARGIN_INITIAL) est spécifiée pour un symbole, la marge couverte est spécifiée comme une valeur absolue (en termes monétaires).
    • Si la marge initiale n'est pas définie (égale à 0), une taille de contrat à utiliser dans le calcul de la marge est spécifiée dans SYMBOL_MARGIN_HEDGED. La marge est calculée en utilisant l'équation correspondant au type du symbole (SYMBOL_TRADE_CALC_MODE).

    La calcul de la marge pour les positions couvertes est décrit en détails dans l'Aide de la plateforme de trading MetaTrader 5.

  13. Ajout de la valeur ACCOUNT_MARGIN_MODE à l'énumération des propriétés du compte ENUM_ACCOUNT_INFO_INTEGER - mode de calcul de marge pour le compte de trading actuel :

    • ACCOUNT_MARGIN_MODE_RETAIL_NETTING - utilisé pour le marché over-the-counter avec le mode de compensation des positions (une position par symbole). Le calcul de la marge est basé sur le type du symbole (SYMBOL_TRADE_CALC_MODE).
    • ACCOUNT_MARGIN_MODE_EXCHANGE - utilisé sur les marchés des changes. La calcul de la marge est basé sur les remises spécifiées dans les paramètres du symbole. Les remises sont définies par le courtier, elles ne peuvent cependant pas être inférieures aux valeurs définies par la place boursière.
    • ACCOUNT_MARGIN_MODE_RETAIL_HEDGING - utilisé pour le marché over-the-counter avec comptabilisation indépendante des positions (couverture, il peut y avoir plusieurs position pour un même symbole). Le calcul de la marge est basé sur le type du symbole (SYMBOL_TRADE_CALC_MODE). La taille de la marge couverte (SYMBOL_MARGIN_HEDGED) est également prise en compte.

  14. Ajout de la valeur TERMINAL_SCREEN_DPI à l'énumération ENUM_TERMINAL_INFO_INTEGER des propriétés du terminal client - la résolution d'affichage des données est mesurée en points par pouce (PPP ou DPI). La connaissance de ce paramètre permet de spécifier la taille des objets graphiques afin qu'ils apparaissent de façon similaire sur des écrans ayant des résolutions différentes.

  15. Ajout de la valeur TERMINAL_PING_LAST aux propriétés du terminal client - la dernière valeur connue du ping vers le serveur de trading en microsecondes. Une seconde contient un million de microsecondes.

  16. Correction du résultat de retour de l'appel à la fonction SendFTP. Auparavant, FALSE était retourné après un envoi réussi au lieu de TRUE.
  17. Correction d'une erreur dans la fonction StringConcatenate qui provoquait occasionnellement des erreurs d'exécution "Access violation".
  18. Correction d'erreurs pouvant survenir lors de l'utilisation de fonctions templatées.
  19. Ajout de la possibilité d'afficher des lignes dépassant 4.000 caractères pour les fonctions Print, Alert et Comment.
  20. Correction d'une erreur dans la fonction ArrayCompare qui se produisait lors de la comparaison d'un tableau avec lui-même avec des points de départ différents.
  21. Ajout du support de la couverture (hedging) à la Bibliothèque Standard :

    CPosition
    Méthodes ajoutées :

    • SelectByMagic - sélectionne une position par son nombre magique et son symbole pour l'utiliser ensuite.
    • SelectByTicket - sélectionne une position par son ticket pour l'utiliser ensuite.

    CTrade
    Méthodes ajoutées :

    • RequestPosition - retourne le ticket de la position.
    • RequestPositionBy - retourne le ticket de la position opposée.
    • PositionCloseBy - ferme la position avec le ticket spécifié par une position opposée.
    • SetMarginMode - définit le mode de calcul de la marge en fonction des paramètres du compte courant.

    Ajout de la prise en compte de la surcharge des méthodes :

    • PositionClose - ferme la position par son ticket.
    • PositionModify - modifie la position par son ticket.

    CAccountInfo
    Méthodes modifiées :

    • MarginMode - retourne le mode de calcul de la marge. Jusqu'à récemment, la méthode fonctionnait de façon similaire à la nouvelle méthode StopoutMode.
    • MarginDescription - retourne le mode de calcul de la marge sous forme de chaîne de caractères. Jusqu'à récemment, la méthode fonctionnait de façon similaire à la nouvelle méthode StopoutModeDescription.

    Méthodes ajoutées :

    • StopoutMode - retourne le mode de spécification du niveau minimum de marge.
    • StopoutModeDescription - retourne le mode de spécification du niveau minimum de marge sous forme de chaîne de caractères.

    CExpert
    Méthodes ajoutées :

    • SelectPosition - sélectionne une position pour l'utiliser ensuite.

  22. Ajout de quelques améliorations à la Bibliothèque Standard.


Signaux

  1. Corrections de quelques signaux de trading présentant des erreurs d'affichage.


Tester

  1. Correction d'une erreur qui empêchait le calcul des commissions sur plusieurs types de symboles de trading.
  2. Correction du remplissage du champ Expert pour les ordres de trading résultant de l'activation des SL/TP selon le champ Expert de la position correspondante. Auparavant, il n'était pas rempli.
  3. Correction du basculement entre les onglets de résultats des tests normaux et avancés.
  4. Correction du calcul et de l'affichage de l'indicateur "Enveloppes".
  5. Test visuel optimisé.
  6. Calculs du profit et de la marge optimisés dans le cas d'un grand nombre d'ordres et de positions ouvertes.
  7. Opérations de trading optimisées pendant le trading à haute fréquence.
  8. La synchronisation de l'historique n'est maintenant plus effectuée si une demande pour des propriétés non critiques du symbole (ne nécessitant pas les cotations actuelles) a été faite. Par exemple, SYMBOL_SELECT, SYMBOL_DIGITS, SYMBOL_SPREAD_FLOAT, SYMBOL_TRADE_CALC_MODE, SYMBOL_TRADE_MODE, SYMBOL_TRADE_STOPS_LEVEL, SYMBOL_TRADE_FREEZE_LEVEL, SYMBOL_TRADE_EXEMODE, etc. Auparavant, l'historique était synchronisé à chaque demande d'une propriété du symbole, même non critique.

MetaEditor

  1. Correction de la recherche de mots par fichiers en mode "Mot Entier Uniquement".
  2. Ajout du déplacement vers un fichier en double cliquant sur la ligne correspondante du résultat de la compilation.
  3. Correction de l'affichage de certains éléments de contrôle dans Windows XP.


  1. Documentation mise à jour.
17 décembre 2015
Plateforme MetaTrader 5 Build 1240: Opération plus rapide et vidéos intégrées

Hébergement Virtuel

  1. Ajout d'un lien vers le tutoriel vidéo "Comment louer une plateforme virtuelle" dans la boîte de dialogue de l'assistant d'Hébergement Virtuel. Regardez cette viédo de deux minutes pour apprendre comment lancer facilement le robot de trading ou copier des signaux 24/7.


    Cette vidéo, ainsi que de nombreuses autres, est disponible sur la chaîne Youtube officielle de MetaQuotes Software Corp..
  2. Correction de la migration pour l'hébergement lorsqu'un indicateur personnalisé est appelé ou une bibliothèque EX5 dans un indicateur personnalisé est appelé à partir d'un Expert Advisor.

Terminal

  1. Mise à jour accélérée de la liste des ordres et des positions ouvertes au cours du trading à haute fréquence (50 opérations et plus par seconde).
  2. Synchronisation initiale du terminal avec un serveur de trading optimisée et grandement accélérée en cas d'une grande quantité de symboles (des dizaines de milliers). Maintenant, vous pouvez commencer à travailler plus rapidement dés que la connection est établie.
  3. Consommation de la mémoire du terminal optimisée et réduite significativement.
  4. Ajout d'une sauvegarde et d'une restauration des paramètres du depth of market lors de la fermeture/ouverture du terminal.
  5. Correction des erreurs qui survenaient sous Windows 10 lors du déplacement des fenêtres du terminal.
  6. Correction de l'aide contextuelle pour un certain nombre de commandes et de boîtes de dialogue. Pour activer l'aide concernant un élément, déplacez le curseur sur l'élement et appuyez sur F1.
  7. Les travaux sur l'adaptation de l'interface pour les écrans en haute résolution (4K) sont en cours.

MQL5

  1. Ajout des nouvelles propriétés pour les fonctions OrderGetString, HistoryOrderGetString et HistoryDealGetString responsables de la réception des données des ordres et des transactions :

    • ORDER_EXTERNAL_ID - identifiant de l'ordre dans un système de trading extérieur (sur la place boursière).
    • DEAL_EXTERNAL_ID - identifiant de la transaction dans un système de trading extérieur.

  2. Correction de la fonction ZeroMemory lors du travail avec des structures et des classes. L'effaçage de la mémoire n'était pas été effectué dans certains cas.
  3. Ajout de codes d'erreur pendant l'utilisation de la fonction SendFTP. La fonction envoie le fichier à l'adresse spécifiée dans l'onglet FTP de la fenêtre Options.

    • ERR_FTP_NOSERVER - le serveur FTP n'est pas spécifié dans les paramètres
    • ERR_FTP_NOLOGIN - Le login FTP n'est pas spécifié dans les paramètres
    • ERR_FTP_FILE_ERROR - le fichier n'existe pas
    • ERR_FTP_CONNECT_FAILED - n'arrive pas à se connecter au serveur FTP
    • ERR_FTP_CHANGEDIR - le répertoire de téléchargement du fichier ne se trouve pas sur le serveur FTP
    • ERR_FTP_CLOSED - la connexion au serveur FTP est fermée

  4. Correction de l'accès par casting de type par héritage entre les objets des classes filles et leurs parents.
  5. Correction de quelques erreurs dans les modèles de classe.
  6. Correction de la demande de ticks en utilisant la fonction CopyTicks. Lors de la spécification du paramètre COPY_TICKS_TRADE (ne copie que les ticks des trades) pour des ticks identiques consécutifs (volumes et prix last identiques), seul le premier tick est passé.
  7. Correction de la définition de la taille d'une variable de type personnalisé.
  8. Correction d'une erreur lors de l'utilisation de ZLib dans la fonction CryptDecode qui menait à une boucle infinie avec unzip.

Tester

  1. Correction de la synchronisation de l'historique des prix pour un symbole différent du test principal.
  2. Correction du doublement de la transaction TRADE_TRANSACTION_DEAL_ADD (ajout de la transaction dans l'historique) dans le gestionnaire d'évènements OnTradeTransaction.
  3. Changement du comportement du test avancé pendant l'optimisation génétique. Tous les résultats uniques obtenus après l'optimisation génétique participent maintenant aux passes avancées. Auparavant, seulement 1/4 des résultats étaient utilisés.

MetaEditor

  1. MetaEditor : Ajout d'un lien vers le tutoriel vidéo "Comment Créer un Robot de Trading dans l'Assistant MQL5" pour l'Assistant MQL5. Regardez cette vidéo de trois minutes et développez un robot de trading sans écrire une seule ligne de code.


    Cette vidéo, ainsi que de nombreuses autres, est disponible sur la chaîne Youtube officielle de MetaQuotes Software Corp..
  2. Correction des commandes d'arrangement des fenêtres si l'une des fenêtres est maximisée. Le menu Fenêtre vous permet d'ouvrir des fichiers en mosaique, verticalement, horizontalement et en cascade.
  3. Les travaux sur l'adaptation de l'interface pour les écrans en haute résolution (4K) sont en cours.
Documentation mise à jour.
30 octobre 2015
MetaTrader 5 Build 1210: Depth of Market Etendu et Améliorations Générales

Terminal

  1. Terminal : Ajout de la possibilité de placer des ordres limit à un prix inférieur à celui du marché dans le Depth of Market. Cela vous permet de garantir l'exécution de l'ordre à un prix spécifié sur le marché.

    Si un ordre limit est déplacé au travers des bordures ask/bid, il sera changé en ordre stop (Buy Limit sera remplacé par Buy Stop, Sell Limit par Sell Stop). Maintenez la touche Crtl lors du déplacement pour que l'ordre limit ne soit pas remplacé par un ordre stop.




  2. Terminal : Ajout de l'option "Afficher les boutons de trading rapide" dans les paramètres du graphique. Elle vous permet de cacher le panneau de Trading En Un Clic, activant les boutons et le Depth of Market du graphique.




  3. Terminal : Correction des conflits occasionnels entre les info-bulles et d'autres applications.

MQL5

  1. MQL5 : Correction du comportement des fonctions Copy* pour copier les données historiques avec des tableaux dynamiques ayant le flag AS_SERIES. Le flag est défini par la fonction ArraySetAsSeries et indique que l'indexation des éléments du tableau est faite comme dans les séries temporelles (timeseries).
  2. MQL5 : Changement de la propriété CHART_SHOW_ONE_CLICK gérée via ChartSetInteger et ChartGetInteger. Auparavant, la propriété permettait d'afficher/cacher le panneau Trading En Un Clic du graphique. Elle permet maintenant également d'afficher/cacher les boutons pour afficher le panneau de Trading En Un Clic et le Depth of Market sur un graphique (de façon similaire à l'option "Afficher les boutons de trading rapide" dans les paramètres du graphique).
  3. MQL5 : Correction de l'utilisation des templates.
Documentation mise à jour.

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

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.


3 juin 2015
MetaTrader 5 build 622: Achat Rapide et plus Simple des Robots sur le Market

Maintenant, vous pouvez acheter n'importe quelle application du Market en une seule étape directement à partir de votre terminal MetaTrader 4/5 sans inscription. Il suffit de cliquer sur Acheter et de sélectionner le mode de paiement.


Vous serez, ensuite, redirigé vers la page du système de paiement Web pour finaliser votre achat. PayPal, WebMoney, Neteller ou carte bancaire - vous pouvez choisir comment payer vos achats dans la boutique de robots et d'indicateurs prêts à l'emploi.


Après avoir effectué un achat, nous vous recommandons toujours de vous créer un compte MQL5.community, afin que votre produit acheté soit automatiquement lié à votre compte. Un compte MQL5 vous permet de mettre à jour le produit et de l'installer sur plusieurs ordinateurs. En outre, un compte MQL5.community vous donne accès un ensemble de services pour les plateformes MetaTrader tels que les signaux de trading pour copier les transactions de traders à succès, l'hébergement virtuel pour une utilisation continue de vos applications et le service Freelance pour commander des robots uniques auprès des développeurs.

Maintenant, vous connaissez la façon la plus rapide et la plus facile d'obtenir un robot de trading. Plus de 5.000 applications de MetaTrader sont déjà disponibles dans le Market - choisissez et achetez tout simplement !


22 mai 2015
Mise à Jour de la Plateforme MetaTrader 5 Build 1150 : Achat Facile sur le Market, Deboguage sur l'Historique, Heures&Ventes des Transactions

Market

  1. Nous mettons en place un nouveau mécanisme d'achat "direct". L'achat d'un robot de tradng ou d'un indicateur à partir du Market est maintenant encore plus facile, et vous n'avez même pas besoin d'un compte MQL5.community.

    Achat En Une Seule Etape
    L'utilisateur n'a pas besoin de se connecter à un compte MQL5.community et d'y ajouter de l'argent. Le paiement pour un produit peut maintenant être fait directement à partir de la plateforme en utilisant l'un des systèmes de paiement disponibles. Pour maintenir un historique clair et unifié des achats sur le Market, le montant requis sera d'abord transféré sur votre compte MQL5.community, à partir duquel le paiement pour le produit sera effectué.

    Vous pouvez facilement accéder et examiner tous vos paiements à partir de votre profil de MQL5.community.




    Achat sans Inscription
    Un produit du Market peut être acheté sans avoir de compte MQL5.community. Cliquez sur "Acheter" et payez le produit en utilisant l'un des systèmes de paiement disponibles.



    Vous serez, ensuite, redirigé vers la page du système de paiement Web pour finaliser votre achat.



    Nous vous recommandons ensuite fortement de vous créer un compte MQL5.community, ainsi votre achat y sera automatiquement ajouté. Cela vous permet de mettre à jour le produit et de l'installer sur plusieurs ordinateurs.

MetaEditor

  1. Les nouvelles fonctionnalités permettent de déboguer des Expert Advisors et des indicateurs sur l'historique des prix. Dans les anciennes versions, le déboguage nécessitait les graphiques en temps reél.

    Maintenant, tout programme peut être testé sur les données historiques. Le débogage fonctionne dans le mode de test visuel dans le Strategy Tester. Un application est exécutée sur un graphique avec une séquence émulée de ticks dans le tester.

    Configurez les paramètres de déboguage dans les paramètres de MetaEditor : symbole, période, intervalle, mode d'exécution, mode de générations des ticks, dépôt initial et levier. Ces paramètres seront appliqués pour les tests visuels.



    Définissez les points d'arrêt dans le code, puis démarrez le déboguage en utilisant l'historique des prix.



    Cela va lancer le test visuel et le processus de déboguage.



Hébergement Virtuel

  1. Des améliorations et des corrections multiples ont été mises en oeuvre dans le service d'Hébergement Virtuel.

    Les principaux changements s'appliquent à l'utilisation de Wine sur les ordinateurs fonctionnant sous Linux et Mac OS. Toutes les fonctions sont disponibles pour les serveurs virtuels alloués dans Wine, y compris la migration, le contrôle des performances et les journaux.


    Le fonctionnement du journal a également changé. Si un utilisateur demande trop d'enregistrements, seulement les premières lignes du journal pour la période spécifiée seront téléchargées. Cela empêche la dégradation des performances résultant de gros journaux. Si vous avez besoin de télécharger d'autres journaux, vous n'avez plus à modifier la période demandée. Il suffit de sélectionner la dernière ligne dans la fenêtre de la visionneuse de journaux et d'appuyer sur la touche Page Suivante.




Terminal

  1. Ajout du support pour un type particulier d'actifs non négociables, qui peut être utilisé comme actifs du client pour fournir la marge requise pour les positions ouvertes d'autres instruments. Par exemple, une certaine quantité d'or sous forme physique peut être disponible sur le compte d'un trader, et peut être utilisé comme une marge (garantie) pour des positions ouvertes.

    Ces actifs sont affichés sous forme de positions ouvertes. Leur valeur est calculée par la formule : Taille du Contrat * Lots * Prix du Marché * Taux de Liquidité.

    Taux de Liquidité signifie ici le partage de l'actif qu'un courtier permet d'utiliser pour la marge.


    Les Actifs sont ajoutés aux Fonds du client et augmentent la Marge Libre, augmentant donc les volumes des opérations de trading admises sur le compte.

    Ainsi, il est maintenant possible d'ouvrir des comptes avec différents types de marge.


    Dans l'exemple ci-dessus, un trader a 1 once d'or ayant la valeur de marché actuelle de 1.210,56 USD. Cette valeur est ajoutée aux fonds et à la marge libre permettant au trader de continuer le trading même si sa balance est à 0.

  2. Un nouveau Depth of Market avec le graphique des ticks et les données Heures&Ventes des transactions.

    Un graphique des ticks des instruments échangés avec les prix réels des transactions est maintenant affiché dans le Depth of Market. Toutes les transactions effectuées en Bourse sont reportées sur ce graphique :

    • Cercles rouges - Transactions Sell
    • Cercles bleus - Transactions Buy
    • Cercles verts - la direction de la transaction est indéfinie. Il est utilisé lorsque la place boursière ne transmet pas la direction d'une transaction. Dans ce cas, la direction est déterminée en fonction du prix de la transaction par rapport aux prix bid et ask. Une transaction Buy est exécutée au prix Ask ou au-dessus, une transaction Sell est exécutée au prix Bid ou en-dessous. La direction est indéfinie si le prix de la transaction se situe entre le bid et le ask.

    Plus le cercle est grand, plus le volume de la transaction est important. Les volumes de transactions sont également présentés sous forme d'histogramme sous le graphique des ticks.



    En haut et en bas de l'histogramme, les volumes totaux des offres Buy et Sell actuelles sont affichés.

  3. La boîte de dialogue de sélection du symbole contient désormais une seule colonne indiquant la date d'expiration du symbole. En outre, les instruments expirés peuvent être cachés de la liste. Les contrats expirés sont automatiquement remplacés par des contrats actifs.



    Tous les symboles expirés sont cachés pour préserver un affichage plus compact. Ceci est particulièrement utile lorsque vous travaillez sur le marché des futures. Un symbole non pertinent est un symbole expiré, ce qui est déterminé par le paramètre "Dernière transaction". Cette date est indiquée dans la colonne "Expiration". Pour voir tous les symboles, cliquez sur "Afficher contrats expirés".
    La liste des symboles est automatiquement triée pour un affichage plus pratique :

    • les premiers répertoriés sont les symboles sans date d'expiration
    • ils sont suivis par les symboles avec une date d'expiration à partir de la date la plus proche
    • puis les symboles expirés sont affichés en commençant par le dernier expiré
    • les autres symboles sont triés par ordre alphabétique

    L'option "Suppression auto des expirés" dans le menu contextuel permet de remplacer les symboles expirés avec les symboles actifs dans la fenêtre "Market Watch".



    Après le redémarrage du terminal, les symboles expirés sont cachés, et les actifs sont ajoutés à la place. Par exemple, le contrat expiré de futures LKOH 3.15 sera remplacé par le prochain contrat ayant le même actif sous-jacent LKOH 6.15.

    Les symboles dans les graphiques correspondants ouverts sont également remplacés, pourvu qu'aucun Expert Advisor n'est en cours d'exécution sur eux.

  4. Correction de la mise à jour de l'état du bouton de trading dans la fenêtre du Depth Of Market suivant l'existence de positions et la restriction de n'ouvrir que des positions longues. S'il n'y a pas de position, le bouton Fermer est inactif. Si l'ouverture des positions courtes n'est pas autorisée, le bouton Vendre est inactif.
  5. L'interface du terminal a été adaptée pour des écrans en haute résolution (4K).
  6. Correction de la vérification du volume d'une position fermée dans le mode Exécution à la Demande, dans le cas où le volume de la transaction est inférieur à la valeur minimum permise.
  7. Correction d'une erreur qui pouvait parfois conduire au lancement de plusieurs terminaux à partir d'un seul répertoire.
  8. Ajout du support et du filtrage automatique du calendrier économique dans différentes langues. Le filtrage est réalisé conformément à la langue de l'interface du terminal.
  9. La Visionneuse de Journaux permet maintenant la recherche dans les journaux affichés.



    Elle recherche un mot/une phrase dans la liste affichée des journaux.
  10. Ajout de la traduction en thai du terminal client.
  11. Mise à jour de la traduction du terminal client en hindi.

MQL5

  1. La nouvelle fonction GetMicrosecondCount retourne le nombre de microsecondes passées depuis le démarrage du programme MQL5 :
    ulong  GetMicrosecondCount();
    Cette fonction peut être utilisée pour profiler l'exécution du programme et identifier des "étranglements".

  2. Nouvelle propriété CL_BUFFER_SIZE du graphique dans l'énumération ENUM_OPENCL_PROPERTY_INTEGER - elle retourne la taille actuelle du buffer OpenCL en octets. La propriété peut être reçue via la CLGetInfoInteger function.
  3. Une erreur de notification dans la WebRequest function a été modifiée. Si une erreur survient, le tableau 'résultat' contiendra la description de l'erreur.
  4. Les fonctions de tri et de recherche ArraySort, ArrayBsearch, ArrayMinimum et ArrayMaximum peuvent maintenant être utilisées sur des tableaux à plusieurs dimensions. Le tri et la recherche sont effectuées uniquement à partir du premier index de tableau (zéro). Auparavant, ces fonctions travaillaient uniquement avec des tableaux à une seule dimension.
  5. Correction de quelques bugs dans la compilation des macros.

Tester

  1. Quelques améliorations et corrections de bugs dans le fonctionnement du test visuel. Le tester fournit maintenant un contrôle plus précis de la vitesse de test en utilisant la barre d'outile.

Correction d'erreurs rapportées dans les journaux.

Documentation mise à jour.

La mise à jour est disponible via le système LiveUpdate.

20 mars 2015
MetaTrader 5 Platform Update Build 1100: Faster Testing and Optimization of Expert Advisors

Tester

  1. A status of connection to MQL5 Cloud Network is now displayed in the Agents Manager. This allows users to easily check if they can receive tasks from the cloud computing network after they install agents.


    A status of connection to MQL5 Cloud Network


  2. Some improvements and bug fixes have been made in the operation of the Strategy Tester. Time spent on intermediate preparatory operations and network latency has been significantly reduced. Testing and optimization are now faster in all operating modes: working with local testing agents, with a farm of agents in the local network and using MQL5 Cloud Network.

Trading Terminal

  1. Added display of the number of unread emails in the "Mailbox" tab of the Toolbox window.


    Added display of the number of unread emails


  2. The Navigator window now contains the list of Expert Advisors running on the active trading account. In addition to the Expert Advisor name, a chart on which the EA is running is specified in the list. An icon indicates whether the EA is allowed to trade.


    The Navigator window now contains the list of Expert Advisors running on the active trading account


    The context menu contains commands for enabling or disabling automated trading for any of the Expert Advisors, as well as for viewing its properties or removing it from the chart.
  3. Improved accuracy of the algorithm for determining access points available for connection to a trading server.
  4. Fixed an error that could occasionally clean the database of client accounts when a terminal was reinstalled over an existing one.
  5. The terminal interface has been further adapted for high resolution screens (4K).

Market

  1. Fixed updating of the MQL5 account balance after purchasing or renting a product.

Virtual Hosting

  1. Fixed migration of custom indicators to the virtual hosting environment.
  2. Fixed updating of the virtual hosting status in the Navigator window.

MQL5

  1. Fixed errors which could occasionally interfere with the optimization of Expert Advisors in MQL5 Cloud Network.
  2. Fixed call of OnDeinit when deleting an Expert Advisor using the ExpertRemove function during testing. Previously, under the conditions described the OnDeinit event was not called.
  3. Fixed errors in use of resources in EX5 libraries.
  4. Fixed errors in the analysis of macros.

Fixed errors reported in crash logs.

Updated documentation.

The update is available through the LiveUpdate system.

16 février 2015
MetaTrader 5 Build 1085

Une nouvelle mise à jour de la plateforme MetaTrader 5 a été publiée. Elle contient les changements suivants :

  1. Terminal : Le nouveau service d'Hébergement Virtuel est maintenant disponible. Un serveur virtuel pour un compte de trading peut maintenant être loué directement depuis le terminal client. Il est maintenant encore plus facile de fournir une connexion constante au serveur de trading et une opération ininterrompue de l'ordinateur pour les Expert Advisors et le trading par copie.

    Les serveurs virtuels sont hébergés par des sociétés partenaires de MetaQuotes Software Corp.

    Allouer un Serveur Virtuel
    Pour obtenir un terminal virtuel sur un serveur virtuel, connectez-vous au compte de trading désiré et exécutez la commande "Enregistrer un Serveur Virtuel" du menu contextuel.




    La fenêtre de l'Assistant d'Hébergement Virtuel apparaît. Elle montre la façon dont le réseau d'hébergement virtuel travaille. Le processus d'obtention d'un serveur virtuel consiste en trois étapes. Premièrement, vous devez savoir comment préparer la migration. Ensuite, vous sélectionnerez le serveur virtuel le plus proche avec la latence réseau minimale vers le serveur de trading de votre courtier.



    Vous pouvez choisir 1 jour gratuit d'hébergement fournis à chaque utilisateur enregistré de la MQL5.community ou sélectionner l'in des plan proposé. Finalement, vous sélectionnerez le mode de migration des données suivant vos objectifs :

    • la migration complète est nécessaire si vous souhaitez lancer simultanément des Expert Advisors/indicateurs et la copie de trades ;
    • seulement les Expert Advisors et les indicateurs, si l'abonnement au service Signaux n'est pas nécessaire ;
    • seulement la copie de trades - seuls les paramètres de copie des Signaux (aucun graphique ou programme) sont déplacés.

    Après avoir sélectionné le mode de migration, vous pouvez lancer le serveur virtuel immédiatement en cliquant sur "Migrer maintenant" ou le faire plus tard n'importe quand.

    Préparation de la Migration
    Avant de lancer le terminal virtuel, vous devez lui préparer un environnement actif - graphiques, indicateurs et Expert Advisors lancés, paramètres de copie des Signaux et paramètres du terminal.

    • Graphiques et Market Watch - cachez tous les instruments de trading non nécessaires du Market Watch pour réduire le trafic. Fermez les graphiques non nécesaires. Dans les paramètres du terminal, spécifier la valeur requises à "Max. barres dans la fenêtre" - le terminal doit ensuite être redémarré.
    • Indicateurs et Expert Advisors - attachez les EAs et les indicateurs désirés à vos graphiques. Les produits achetés sur le Market et lancés sur le graphique sont également déplacés pendnat la migration. Ils restents complétement fonctionnels, et le nombre d'activations n'est pas diminué. Tous les paramètres externes des indicateurs et des Expert Advisors doivent être définis correctement.
    • Email, FTP et Signaux - si un Expert Advisor est prévu pour envoyer des emails, uploader des données en FTP ou copier des trades de Signaux, assurez-vous de spécifier tous les paramètres nécessaires. Définissez le login et le mot de passe corrects de votre compte de la MQL5.community dans l'onglet Communauté. Ceci est nécessaire pour la copie des Signaux.
    • Permission de trading et de copie des signaux - le trading automatique est toujours autorisé dans le terminal virtuel. Pour utiliser les signaux, définissez les paramètres de copie dans la section Signaux.
    • WebRequest - si un programme devant être utilisé dans le terminal virtuel utilise la fonction WebReqest() pour envoyer des requêtes HTTP, vous devez définir la permission et lister toutes les URLs de confiance dans l'onglet Expert Advisors.


    Migration
    La migration est le transfert de l'environnement actif courant du terminal client vers le terminal virtuel.

    La migration est effectuée à chaque synchronisation du terminal client. La synchronization est toujours un processus dans une seule direction - l'environnement du terminal client est déplacé vers le terminal virtuel mais jamais l'inverse. Le statut du terminal virtuel peut être surveillé en récupérant les journaux du terminal et des Expert Advisors ainsi que les données de surveillance du serveur virtuel.

    Pour effectuer la synchronisation, ouvrez le menu contextuel du compte et sélectionnez le type de migration.




    Vous devez donc toujours changer le nombre de graphiques et la liste des symboles, l'ensemble des programmes lancés et leurs paramètres d'entrée, les paramètres du terminal et les abonnements aux Signaux.

    Lors de la migration, toutes les données sont enregistrées dans le journal du terminal client.


    Après la synchronisation, ouvrez le journal principal du terminal virtuel pour examiner les actions qui y ont été effectuées.




    Travailler avec le Terminal Virtuel
    Le statut du serveur virtuel loué peut également être surveillé facilement depuis le terminal client. Exécutez la commande "Détails" dans le menu contextuel.



    L'information est présentée dans quatre onglets :

    • Détails - données sur le serveur virtuel lui-même et sur l'environnement actif du terminal.
    • Utilisation CPU - graphique d'utilisation de la CPU, %.
    • Utilisation mémoire - graphique d'utilisation de la mémoire, Mo.
    • Utilisation Disque Dur - graphique d'utilisation du disque dur, Mo.

  2. Market : Il est maintenant possible de louer des produits du MetaTrader Market pour 1, 3, 6 ou 12 mois. Ceci fournit des avantages indéniables à la fois pour les développeurs et pour les acheteurs. Les auteurs peuvent augmenter significativement la confiance des utilisateurs en permettant aux acheteurs potentiels de vérifier leurs produits à un coût moindre. Pour les acheteurs, la location est une autre opportunité pour vérifier un produit avant de l'acheter. Contrairement aux versions de démo, les produits loués n'ont aucune limitation à part la période de validité.

    Tout développeur du Market peut choisir ou non si leur produit est disponible en location et définir le prix de location.




    Les développeurs peuvent choisir de ne pas offrir leurs produits en location, et de ne vendre que des licences complètes pour une utilisation illimitée.

    Si la location est activée pour un produit, sa page web montre les options possibles : périodes et prix de location. Cliquez sur Louer et sélectionnez la période de location.



    Lorsque la période expire, les utilisateurs peuvent renouveler la location ou acheter la licence complète.

  3. Terminal : Suppression du copyright "MetaTrader 5, @ 2001-2015 MetaQuotes-Software Corp." lors de la sauvegarde d'une copie d'écran d'un graphique avec la commande "Sauver comme Image" du terminal ou via la fonction MQL5 Screenshot(). Ceci simplifie la distribution des copies d'écrans.




  4. Terminal : Correction du calcul et de la gestion des paramètres de l'indicateur technique Gator Oscillator.
  5. Terminal : Amélioration du scan des points de connexion au serveur de trading.
  6. Terminal : Correction d'erreurs occasionnelles de LiveUpdate.
  7. MQL5 : Ajout de la propriété de signaux SIGNAL_BASE_CURRENCY - la devise de dépôt du fournisseur du signal - à l'énumération ENUM_SIGNAL_BASE_STRING. La propriété peut être récupérée avec la fonction SignalBaseGetString.
  8. MQL5 : Correction d'erreurs de compilation déterminant les droits d'accès aux membres de la classe parente pendant l'héritage.
  9. MQL5 : Correction d'une erreur de compilation lors de la surcharge des méthodes de classe par un paramètre constant.
  10. Tester : Optimisation de l'utilisation des agents du MQL5 Cloud Network. Les agents ne passent maintenant plus de temps dans la phase bien connue "warming-up" - la connexion aux serveurs du réseau cloud qui distribue les tâches. Au lieu de cela, les agents sont toujours prêts pour recevoir et exécuter une tâche. Ceci accélére l'optimisation via le MQL5 Cloud Network.
  11. Tester : Amélioration de la présentation des agents locaux, distants et du cloud dans le strategy tester.
  12. Correction d'erreurs reportées dans les journaux de crash.
  13. Mise à jour de la documentation.


MetaTrader 5 Android build 1052

La nouvelle version de MetaTrader 5 pour Android est maintenant disponible dans Google Play. Elle contient des corrections et une stabilité amliorée. Les objets d'analyse et le système de messagerie seront bientôt ajoutés.

L'application peut être téléchargée ici : https://download.mql5.com/cdn/mobile/mt5/android?hl=en&utm_source=www.metatrader5.com


La mise à jour est disponible via le système LiveUpdate.

16 janvier 2015
MetaTrader 5 Build 1045 : Nouveau WebRequest

Terminal de Trading

  1. Travaux préparatoires pour le support de l'hébergement virtuel dans la plateforme MetaTrader 5. Le service d'hébergement virtuel vous permet de louer un terminal qui opère en continu sans aucune interruption directement depuis votre MetaTrader 5. L'une des caractéristiques principales est la sélection du serveur situé le plus près du serveur du courtier pour minimiser la latence du réseau.





  2. Les agents du testeur ne fonctionne maintenant que sur les systèmes 64 bits. Cette décision est conduite par le besoin de suivre le développement de l'industrie IT. Basculer vers de nouvelles technologies augmente les performances de calcul et autorise de futurs développements du MQL5 Cloud Network.



    Changements dans les composants de la plateforme :

    • Les agents distants et les agents du MQL5 Cloud Network ne sont plus disponibles sur les terminaux 32 bits. Au lieu de la liste des agents, le message "Disponible uniquement dans la version 64 bits" est affiché.
    • Le Gestionnaire d'Agents MetaTester 5 n'est disponible que dans le version 64 bits. Il n'est donc possible d'installer les agents que sur des systèmes 64 bits.


  3. Correction du filtrage des nouvelles par langues lorsque la liste des langues est spécifiée manuellement dans les paramètres du terminal.
  4. Optimisatio du travail avec un grand nombre d'ordres ouverts.
  5. Accélération de l'envoi des demandes de trades.
  6. L'interface a été adaptée pour les écrans haute résolution - Full HD et supérieurs.

Langage MQL5

  1. Ajout d'une nouvelle signature pour la fonction WebRequest :
    int WebRequest (string method, string url,string headers,int timeout, const char &data[], int data_size,char &result[], string &result_headers)
    Cette fonction vous permet de former explicitement les contenus des en-têtes des requêtes HTTP fournissant une mécanisme plus flexible pour intéragir avec différents services Web.

  2. Ajout de nouvelles propriétés du compte de trading. Les propriétés sont disponibles via la fonction AccountInfoDouble.

    • ACCOUNT_MARGIN_INITIAL - marge initiale actuelle d'un compte.
    • ACCOUNT_MARGIN_MAINTENANCE - marge de maintien actuelle d'un compte.
    • ACCOUNT_ASSETS - actifs courants du compte.
    • ACCOUNT_LIABILITIES - passifs courants du compte.
    • ACCOUNT_COMMISSION_BLOCKED - commissions bloquées courantes du compte.

  3. Ajout de nouvelles propriétés du symbole de trading :

    • SYMBOL_OPTION_STRIKE - prix d'exercice du contrat d'option. La propriété est récupérée avec la fonction SymbolInfoDouble.
    • SYMBOL_BASIS - nom de l'actif sous-jacent du symbole de trading. La propriété est récupérée avec la fonction SymbolInfoString.
    • SYMBOL_OPTION_MODE - mode d'option, la valeur est définie avec l'énumération ENUM_SYMBOL_OPTION_MODE. 
    • SYMBOL_OPTION_RIGHT - droit d'option, la valeur est définie avec l'énumération ENUM_SYMBOL_OPTION_RIGHT. La propriété est récupérée avec la fonction SymbolInfoInteger.

  4. Ajout de la fonction SymbolInfoMarginRate - récupérant la valeur du rapport de charge entre la marge initiale et la marge de maintien suivant le type et la direction de l'ordre du trade.
  5. Correction de l'utilisation de la fonction ChartIndicatorName dans le strategy tester.
  6. Correction de la compilation des macros contenant une substitution de noms utilisant ##.
  7. Correction de l'erreur de réinitialisation de l'indicateur de fin de fichier lors de l'ouverture d'un nouveau fichier.

Correction d'erreurs reportées dans les journaux de crash.

Mise à jour de la documentation.

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

12 décembre 2014
MetaTrader 5 Platform Update Build 1035: Option Strategy Builder and Access to Ticks

Trading Terminal

  1. Implementation of functions for trading options is currently underway. The Option Strategy Builder has been added. It helps users combine different options in one investment portfolio, and to assess the possibilities and potential risks.



    The Builder is easy to use: a trader chooses the option based on the expiration date and the underlying asset, and then selects one of the more than 30 available strategies. The Builder displays the appropriate combination of options and calculates evaluation parameters - the so-called Greeks. The profit/loss chart and the Greeks based chart appear at the bottom of the window.

    In addition to a large number of built-in strategies, traders can create and save their own strategies for later use.

  2. Added display of the number of newsletters received in the last 24 hours.




  3. Optimized and accelerated synchronization of large history of trading orders and deals.
  4. Fixed launch of several custom indicators in one chart subwindow.
  5. Fixed recalculation of Bill Williams Market Facilitation Index for a changed chart period.
  6. Fixed minimization of the "Toolbox window".
  7. Fixed generation of the account state report published over FTP.
  8. Updated translation of user interface into German.
  9. Added translation of user interface into Greek and Uzbek.

MQL5 Language

  1. New function for working with the tick history CopyTicks. The function is used for receiving an array of ticks accumulated by the terminal for the current session. The depth is limited to the last 2000 ticks.

    The new function expands the possibilities for developing scalping trading robots. The OnTick function does not handle every tick, it notifies the Expert Advisor of market changes. It can be a batch of changes: the terminal can simultaneously make a few ticks, but OnTick will be called only once to notify the EA of the latest market state. The CopyTicks function allows you to receive and analyze all the ticks.
    int  CopyTicks(
       const string      symbol_name,           // Symbol name
       MqlTick           &ticks_array[],        // the array where ticks will be placed
       uint              flags=COPY_TICKS_ALL,  // the flag that defines the type of received ticks
       ulong             from=0,                // the date starting from which ticks will be received, specified in milliseconds since 01.01.1970
       uint              count=0                // the number of latest ticks that should be received
       );
    Ticks can be requested by the date if the 'from' value is specified, or based on their number using the 'count' value. If none of the parameters are specified, all available ticks are received, but not more than 2000. Ticks can also be requested based on their type using the 'flags' parameter. Available values:

    • COPY_TICKS_ALL - all ticks.
    • COPY_TICKS_INFO - only information ticks (Bid and Ask).
    • COPY_TICKS_TRADE - only trade ticks (Last and Volume).

  2. Added an option for overloading template functions using array parameters.
  3. Added an option for overloading a method based on its constancy.
  4. Added generation of the CHARTEVENT_MOUSE_MOVE event (in the OnChartEvent entry point) at the right mouse button click on the chart.
  5. Fixed the functioning of the Switch operator if the case condition contains a negative value.
  6. Improved calculation accuracy in functions ObjectGetValueByTime() and ObjectGetTimeByValue(), used for receiving the price value for the specified object time and vice versa - time value for a price.

Strategy Tester

  1. MQL5 programs purchased in MetaTrader AppStore can now be tested and optimized on the MQL5 Cloud Network agents and on remote agents.
  2. Fixed calculation of swaps in points for positions with less than 1 lot.
  3. Fixed check and normalization of Stop Loss and Take Profit levels when opening a position for the trading instrument with "Market Execution" type.
  4. Fixed behavior of the ObjectGetValueByTime function. In some cases, the behavior of the function in the tester could be different from its behavior in the terminal.

MetaEditor

  1. Fixed MetaEditor crash when debugging and profiling looped programs.
  2. Added translation of user interface into Greek and Uzbek.

Fixed errors reported in crash logs.

Documentation has been updated.

The update is available through the LiveUpdate system.

31 octobre 2014
MetaTrader 5 Trading Terminal build 1010: New Signals, Market and Options
Trading Signals
  1. The showcase of signals has been completely redesigned. New features have been added, the Signals service design and usability have been improved.



    The new features in the list of signals:

    • The list of signals now contains growth charts similar to those displayed on the MQL5.community site. A green icon in the lower left corner of the chart indicates that this is a real account based signal.
    • Now subscription to a signal is available directly from the list. To subscribe, press the button with the price indication (or the word 'Free', if the signal is free). This will open a subscription confirmation dialog.
    • Now signals can be added to Favorites. Click the star icon at the end of the signal line. After that, the signal can be easily found in the "Favorites" tab.
    • The context menu has been removed. Now to find a signal to which you have subscribed, go to any signal. The top panel shows the signal you are subscribed to and a link to it.

    A signal view page has been updated. A new option allows to add signals to Favorites. The status of the signal account is displayed when hovering the mouse pointer at "Growth".

    Signals statistics have expanded:

    • The total amount of subscribers' funds.
    • Trading account lifetime since its first trading operation.
    • The average position holding time.



    New tabs:

    • Risks - information about the best and worst trading operations and series of operations, and information on drawdowns.
    • Reviews - reviews of signal subscribers.
    • News - through this tab the signal provider can inform subscribers of any change in the signal and post other useful information.

Market

  1. Revised display of products in MetaTrader AppStore. Applications, magazines and books feature the new design. A new option allows to add products to Favorites. Click the star icon in the product view mode. After that, the product can be easily found in the "Favorites" tab.




Trading terminal

  1. The terminal now features an options board and a volatility chart. Implementation of tools for trading options is currently underway. Tools for analyzing option strategies will be added in the next version.




    Options Board
    The options board displays a series of options based on the expiration date for an underlying asset (a class of options) selected in the "Underlying" field. The following parameters are displayed for the options:

    • Bid CALL - the bid price of a call option.
    • Ask CALL - the ask price of a call option.
    • Theo CALL - the theoretical (fair) price of a call option calculated for the specified strike based on historical data.
    • Strike - an option execution price.
    • Volatility - an implied volatility. It is specified as a percentage, and characterizes the expectations of market participants about the value of the underlying asset of the option.
    • Theo PUT - the theoretical price of a put option calculated for the specified strike based on historical data.
    • Bid PUT - the bid price of a put option.
    • Ask PUT - the ask price of a put option.

    Volatility Chart
    Option strikes are shown along the horizontal axis of the chart, and the implied volatility is shown along its vertical axis.




  2. Added display of ping values ​​in the list of access points.




  3. The terminal interface has been adapted for high resolution screens - Full HD and higher. Menus, toolbars, window titles and the status bar are now large enough for easy viewing and working on touch screen of Windows-tablets.

  4. Added a command for managing trading symbols in the "View" menu and on the toolbar. Accessing symbol settings is now as easy as never before:



MQL5 Language

  1. Added conversion of a macro parameter to a string and concatenation of the macro parameter. Below is an example, in which the concatenation of macros allows to organize the automatic removal of the class instances.
    //+------------------------------------------------------------------+
    //|                                                     MacroExample |
    //|                        Copyright 2014, MetaQuotes Software Corp. |
    //|                                       https://www.metaquotes.net  |
    //+------------------------------------------------------------------+
    #property script_show_inputs
    input bool InpSecond=true;
    
    #define DEFCLASS(class_name) class class_name:public CBase{public:class_name(string name):CBase(name){}};
    #define TOSTR(x) #x
    #define AUTODEL(obj) CAutoDelete auto_##obj(obj)
    #define NEWOBJ(type,ptr) do { ptr=new type(TOSTR(ptr)); \
                             Print("Create object '",TOSTR(type)," ",TOSTR(ptr),"' by macro NEWOBJ"); } \
                             while(0)
    //+------------------------------------------------------------------+
    //| The basic class required for automatic deletion of objects       |
    //+------------------------------------------------------------------+
    class CBase
      {
    protected:
       string            m_name;
    
    public:
                         CBase(string name):m_name(name) { }
       string            Name(void) const{ return(m_name); }
    
      };
    //+------------------------------------------------------------------+
    //| The object auto-delete class makes watching of created           |
    //| objects unnecessary. It deletes them in its destructor           |
    //+------------------------------------------------------------------+
    class CAutoDelete
      {
       CBase            *m_obj;
    
    public:
                         CAutoDelete(CBase *obj):m_obj(obj) { }
                        ~CAutoDelete()
         {
          if(CheckPointer(m_obj)==POINTER_DYNAMIC)
            {
             Print("Delete object '",m_obj.Name(),"' by CAutoDelete class");
             delete m_obj;
            }
         }
      };
    //+------------------------------------------------------------------+
    //| Declaring two new classes CFoo and CBar                          |
    //+------------------------------------------------------------------+
    DEFCLASS(CFoo);
    DEFCLASS(CBar);
    //+------------------------------------------------------------------+
    //| The main script function                                         |
    //+------------------------------------------------------------------+
    void OnStart()
      {
       CFoo *foo;
    //--- Creating an object of the CFoo class
       NEWOBJ(CFoo,foo);
    //--- Creating an instance of the CFoo foo object auto-deletion class
       AUTODEL(foo);
    //---
       if(InpSecond)
         {
          CBar *bar;
          //---
          NEWOBJ(CBar,bar);
          AUTODEL(bar);
         }
    //--- No need to delete foo, it will be deleted automatically
      }
    //+------------------------------------------------------------------+
    
  2. Added the OBJPROP_ANCHOR property for the "Bitmap" and "Bitmap Label" objects. The property defines the anchor point of the graphical object on the chart: the upper left corner, center left, lower left corner, bottom center, etc.
  3. Added reading of the CHART_BRING_TO_TOP chart property (the chart is on top of all the others) in the ChartGetInteger function.
  4. Fixed the compilation and generation of the ternary operator "?".
  5. Fixed passing of a class member static array.
  6. Fixed applying of a template to the list of initialization of the template constructor class members.

Trading signals

  1. Restrictions on signal subscriptions became milder:

    If the trading history of the signal contains symbols that are not available in the subscriber's terminal, the subscription is now allowed (was prohibited in previous versions). The actions with the positions for which the subscriber does not have symbols are ignored. The following log appears in the Journal:
    2014.08.26 16:44:29.036    '2620818': Signal - symbol GBPNZD not found
    If the subscriber has positions and/or pending orders, a warning dialog suggesting to close/delete them appears (as before). Now, however, it is not an obligatory condition to continue working with signals.



    Synchronization with the signal provider will be performed. Positions and orders that were opened not based on the subscription signal are left unchanged. The user can perform any operations with them.

    Users can now perform trade operations manually (or using an Expert Advisor), being signed to a signal. The Signals service will ignore the positions and orders opened by the trader.
    Keep in mind that placing orders manually affects the amount of available margin on the trading account. Opening positions manually increases the overall load on the account as compared with the signal provider's account.
  2. Added support for a copied percent for the volumes with a floating point. The minimum percentage of copied volumes for signals has been reduced from 1% to 0.001%.

Strategy tester

  1. Fixed freezing of testing agents when working with the MQL5 Cloud Network.
  2. Fixed calculation of swaps in points for the minimal volumes of trading positions.

MetaEditor

  1. Fixed hotkeys for commands "Navigate Forward" and "Navigate Backward".

MetaViewer

  1. Fixed page navigation on the toolbar.
  2. Fixed text search based on the current interface language.

Fixed errors reported in crash logs.

Documentation has been updated.

The update is available through the LiveUpdate system.
1 août 2014
MetaTrader 5 Trading Terminal build 975: Displaying Expert ID

Trading Terminal

  1. Added display of a trade ID (magic number) set by an Expert Advisor. The ID is displayed as a tooltip in the list of open positions and orders, as well as in the trading history.


    Displaying Expert ID


  2. Optimized work with a large number of trading symbols (thousands and tens of thousands).
  3. Fixed display of alerts on the price chart. The alert's price level was sometimes displayed in the indicator's subwindow.
  4. Updated interface translations into Chinese, Turkish and Japanese.
  5. Fixed displaying the list of chart templates in the application's main menu.
  6. Fixed displaying the list of trade symbol sets in the context menu of Market Watch window.

MQL5 Language

  1. Fixed errors in working with built-in structures that could occasionally disrupt the operation of IndicatorParameters and MarketBookGet methods.
  2. Fixed type conversion from bool to string.
  3. Fixed working with virtual functions.
  4. Fixed an error in the operation of FileReadStruct and FileWriteStruct functions within EX5 libraries.
  5. Fixed a compiler error that occurred in case a key word was present in a comment.

Strategy Tester

  1. Fixed calculation of swaps in points when testing.
  2. Fixed passing the file defined in #property tester_file. An error occurred if the file was in the common folder of the client terminals.
  3. Greatly improved selection of the nearest cloud server by the tester agents working within MQL5 Cloud Network of distributed computing. Thus, their operation speed is increased significantly.

MetaEditor

  1. Fixed text replacement when the list of MetaAssist tips is collapsed.

Fixed errors reported in crash logs.

Updated documentation.

The update is available through the LiveUpdate system.

27 juin 2014
MetaTrader 5 trading terminal build 965: Smart Search, OTP and Money Transfer between Accounts

Trading terminal

  1. Completely revised built-in search. The new search is a smart and powerful system. Search results are now conveniently arranged by categories.

    As you type in search query, the system instantly offers possible options:



    In order to search by one of the previous queries, place the cursor to the box and click Down Arrow key to open the query history. Selection of a search area is not available in the search bar any more, as the system automatically selects the most relevant results arranging them by categories conveniently:



    For better representation, search results now contain not only texts but also avatars of articles, books and applications. Use the top panel to view the search results by MetaTrader Appstore Products, Code Base, Signals, MQL5.community Forum and Documentation. If a category has no results, it is highlighted in gray.

  2. Added the OTP authentication feature. Use of OTP (one-time password) provides an additional level of security when working with trading accounts. The user is required to enter a unique one-time password every time to connect to an account.

    One-time passwords are generated in the MetaTrader 5 mobile terminal for iPhone . The same one-time password generation option will be added in the mobile terminal for Android soon.

    How to enable OTP
    To start using one-time passwords, a trading account should be bound to a password generator, which is the MetaTrader mobile terminal 5 for iPhone.
    The use of the OTP option should be enabled on a trade server.
    Go to the Settings of the mobile terminal and select OTP. For security reasons, when the section is opened for the first time, a four-digit password should be set. The password must be entered every time to access the password generator.



    In the window that opens, select "Bind to account".



    Next, specify the name of the server on which the trading account was opened, the account number and the master password to it. The "Bind" should be kept enabled. It must be disabled, if the specified account should be unbound from the generator and one-time passwords should no longer be used.

    After the "Bind" button located in the upper part of the window is tapped, a trading will be bound to the generator, and an appropriate message will appear.



    Likewise, an unlimited number of accounts can be bound to the generator.

    The one-time password is displayed at the top of the OTP section. Underneath, a blue bar visualizes the password lifetime. Once the password expires, it is no longer valid, and a new password will be generated.

    Additional Commands:

    • Change Password - change the generator password.
    • Synchronize Time - synchronize the time of the mobile device with the reference server. Accuracy requirement is connected with the fact that the one-time password is bound with the current time interval, and this time should be the same on the client terminal and the server side.

    How to use OTP in the desktop terminal
    After binding a trading account to the generator, a one-time password will be additionally requested when connecting to it from the desktop terminal:




  3. Added an option for transferring money between accounts within the same trade server. Money can be transferred only from the currently connected account. Select it in the "Navigator" window and click "Transfer funds" in the context menu.



    In the dialog box, select the account to which funds need to be transferred. The transfer amount is specified in the deposit currency of the current account. It cannot exceed the current balance and the current amount of free margin of the account.

    To transfer funds, a master password must be specified for both accounts. If OTP authentication is used for the account, from which funds are transferred, the one-time password should be additionally specified.

    Transfer of funds is provided in the form of balance operations: a withdrawal operation on the current account and depositing operation on the recipient account.
    • The money transfer option should be enabled on the trade server. Depending on the settings, there are some restrictions on the accounts, between which transfer is allowed. In particular, money transfer can be allowed only for accounts with identical names and emails.

    • Funds can be transferred only within the same trading server and only between the accounts of the same type. From a real account funds can be transferred only to another real account, from a demo one - only to demo.
    • The accounts, between which funds are transferred, should use the same deposit currency.
  4. Added an option for changing the password of any trading account in the "Navigator" window. Previously, it was possible to change the password only for the currently connected account.

    Now any account can be selected in the "Navigator" window and its passwords can be changed by clicking the appropriate command in the context menu:




  5. Added the possibility to set SL and TP levels on the chart by dragging the trade level of the corresponding position (using drag'n'drop). Hover the mouse over the level of the position on the chart. Click the left mouse button and hold it to move the level up or down.



    For long positions dragging down allows to set stop loss, up - take profit. And vice versa for short positions. When a level is dragged, the possible profit/loss in pips and currency, which may occur when this level triggers, is shown.

  6. Changed the location of commands in the "Window" menu. Now the "Tile window" option is displayed first, hotkeys Alt+R have been assigned for this command. This command has also been added to the standard toolbar.




  7. In the "Navigator" categories "Indicators" and "Custom Indicators" have been combined into one category "Indicators".



    All custom indicators, examples, and indicators purchased from the MetaTrader AppStore are now shown together with the built-in technical indicators. Four categories of built-in indicators are always displayed first.

  8. Revised the Navigator's context menu.

    Login has been renamed to "Login to Trade Account". Authentication in MQL5.community is available not only via the terminal settings but also via the context menus of the "Accounts" section and its subsections.



    The following changes have been implemented to the account's context menu:
    • Moved "Open an Account" command to the first position.
    • Added "Change Password" feature.
    • Added "Register a Virtual Server" command.

  9. Fixed display of the Label and Bitmap Label graphical objects with the anchor point located in one of the bottom corners of a chart.

MQL5 Language

  1. Added WebRequest() function for working with HTTP requests allowing MQL5 programs to interact with different websites and web services.

    The new function allows any EA to exchange data with third-party websites, perform trades based on the latest news and economic calendar entries, implement analytics, generate and publish automatic reports, read the latest quotes and do many other things that could previously be achieved only by using third-party DLLs of questionable reliability. The new feature is absolutely safe for traders, as they are able to manage the list of trusted websites the programs have access to.

    WebRequest function sends and receives data from websites using GET and POST requests. The new feature is absolutely safe for traders, as they are able to manage the list of trusted websites the programs have access to.




    This option is disabled by default for security reasons.

  2. Added access to signals database and managing signals subscription from MQL5 applications.

    Now, a user can receive the list of signals, evaluate them according to user-defined criteria, select the best one and subscribe to it automatically from a MQL5 program. In fact, it means the advent of the new class of trading robots that periodically look through available signals and subscribe to the one that is most suitable at the moment.

    For this purpose new signal management functions have been added to the MQL5 language:

    • SignalBase*() — functions for accessing the signals database.
    • SignalInfo*() — functions for receiving signal settings.
    • SignalSubscribe() and SignalUnsubscribe() — subscription management functions.

    Thus, a user can not only copy trades, but also to select signals for copying. Both processes are automated.

    By default, a trading robot is not allowed to change signal settings for security reasons. To enable this function, tick the "Allow modification of Signals settings" option in Expert Advisor settings.




  3. Added new properties of the client terminal that are available through the TerminalInfo* functions:
    • TERMINAL_MQID - the property shows that MetaQuotes ID is specified in terminal settings.
    • TERMINAL_COMMUNITY_ACCOUNT - this property shows that MQL5.community account is specified in the settings.
    • TERMINAL_COMMUNITY_ACCOUNT - this property shows that MQL5.community account is specified in the settings.
    • TERMINAL_COMMUNITY_BALANCE - value of balance on the MQL5.community account.
    • TERMINAL_NOTIFICATIONS_ENABLED - shows whether sending notifications through MetaQuotes ID is allowed.

  4. Added functions for working with cryptographic algorithms: CryptEncode() and CryptDecode(). These functions allow you to encrypt and decrypt the data, for example, when sending data over the network using the WebRequest() function. They also allow you to calculate checksums and make data archiving.

    Function signatures:
    int CryptEncode(ENUM_CRYPT_METHOD method,const uchar &data[],const uchar &key[],uchar &result[]);
    int CryptDecode(ENUM_CRYPT_METHOD method,const uchar &data[],const uchar &key[],uchar &result[]);
    A new enumeration ENUM_CRYPT_METHOD has been added for working with the functions:
    CRYPT_BASE64,      // BASE64 encryption (re-encoding)
    CRYPT_AES128,      // AES encryption with 128-bit key
    CRYPT_AES256,      // AES encryption with 256-bit key
    CRYPT_DES,         // DES encryption (key length is 56 bits - 7 bytes)
    CRYPT_HASH_SHA1,   // calculation of HASH SHA1
    CRYPT_HASH_SHA256, // calculation of HASH SHA256
    CRYPT_HASH_MD5,    // calculation of HASH MD5
    CRYPT_ARCH_ZIP,    // ZIP archive

  5. Added an option for changing the size of the properties dialog of MQL5 programs.




  6. Added ability to debug the template functions.
  7. Added definition of the custom indicators that are executed too slowly. If the indicator is slow, "indicator is too slow" entry appears in the Journal.
  8. Fixed the value returned by the IsStopped() function. This function is used for determining the forced stopping of MQL5 programs in custom indicators. Previously, this function always returns FALSE.
  9. Fixed verification of input parameters of MQL5 programs by data type. In particular, for the parameter type uchar, one could specify a value greater than 255.
  10. Fixed an error in StringConcatenate() function.
  11. Fixed FileSize() function for files that are available for writing. Previously, the function returned the file size without considering the latest write operations.
  12. File operations have been revised. Now work with files has become faster.

Trading Signals

  1. Fixed copying of SL and TP values of trade positions in case the number of decimal places in the symbol price of the signal source differs from that of the subscriber.
  2. Fixed copying of trade positions from signal providers with incorrect settings of trade instruments on the side of the trade server.
  3. Fixed closing of positions opened by a trading signal when account Equity value falls below the value specified in the signal copying parameters. In some cases, closing of positions could lead to terminal crash.

MetaEditor

  1. Optimized work with large source text files (tens of megabytes). Increased operation speed and reduced memory consumption.
  2. Fixed navigating through a source code using "Ctrl + -" and "Ctrl + Shift + -" shortcuts.

Fixed errors reported in crash logs.

Updated documentation.

The update will be available through the LiveUpdate system.

11 avril 2014
MetaTrader 5 Build 930

Market

  1. Another new product category has been added to MetaTrader AppStore following trading and financial magazines - Books. Now, you can purchase the works of well-known traders and analysts along with trading robots and indicators. The range of books is increasing daily.


    Books in MetaTrader Market

    Just like MetaTrader 5 applications, books can be purchased at MQL5.community Market as well as directly via MetaTrader 5 terminal. All books are accompanied by descriptions and screenshots:




    Before making a purchase, you can download a preview - the first few pages of a book. The exact number of available pages is defined by a seller.

    To buy a book, you should have an MQL5.com account and the necessary amount of funds on it. The account data should be specified at the Community tab of the terminal settings:



    Click Buy on the book's page to purchase it. Purchase confirmation dialog appears:



    To continue, agree to the rules of using the Market service and enter your MQL5.community password. After that, the specified amount of funds will be withdrawn from your account and the book will be downloaded. Buy button will be replaced by Open one.

    Book files are downloaded to My Documents\MQL5 Market\Books\. The download may be performed in two formats:

    • MQB - this protected format is used for paid books. When purchasing and downloading a book file, it is encoded so that it can be opened only on the PC it has been downloaded to. Generation of an encoded copy is called activation. Each book can be activated at least 5 times on different hardware. Book sellers can increase the number of activations at their sole discretion.
    • PDF - this format is used for free books and previews. After downloading, such file can be moved and viewed on other devices.

    The special component called MetaViewer has been added to MetaTrader 5 terminal allowing users to view book files. MetaViewer is a convenient application for viewing books and magazines in MQB and PDF formats. Keyboard arrows are used to turn over the pages: left and right arrows - for page-by-page navigation, while up and down arrows - for scrolling.


    MetaViewer


Trading terminal

  1. Fixed display of Fibonacci Fan graphical object's levels when zooming. A layout could be displaced in earlier builds.
  2. Fixed an error that in some cases prevented graphical objects from being drawn on the chart.
  3. Fixed errors and terminal crashes when working in Wine (for Linux and Mac OS), including crashes that occurred while opening the user guide.
  4. Updated translation of the interface into Arabic.

Market

  1. Revised display of products in MetaTrader AppStore. Applications, magazines and books feature new design:


    Revised Display of Products in Market

  2. Market: Fixed resumed download of large files (primarily, magazines and books) from the Market.

MQL5 Language

  1. Changed StringSplit function operation. Previously, ";A;" string was split into NULL and "A" substrings using ';' separator. Now, it is split into "","A" and "" substrings.
  2. Fixed checking and tracking parameter and operand constancy.

Trading Signals

  1. Added additional checks for the allowed trading modes at a symbol when copying signals. If a signal arrives at a subscriber's account but only closing of positions is allowed at that symbol, this will no longer cause complete termination of signals copying and forced closing of all positions. Now, if a signal for position opening arrives at a subscriber's account, the platform perceives that as the command to synchronize subscriber's and provider's accounts. A signal for position closing is handled as usual.

Strategy Tester

  1. Added interface translations into French, Japanese and Arabic. Updated translations into German, Italian, Polish, Portuguese, Russian, Spanish, Turkish and Chinese.

MetaEditor

  1. Fixed highlighting and navigation through a hieroglyphic text.
  2. Fixed selecting a default trading symbol during an MQL5 application profiling. The default symbol is specified in Debug tab of MetaEditor options.
  3. Fixed display of the tab characters in search results. Previously, the tab characters were ignored and string content was displayed with no spaces.

Fixed errors reported in crash logs.

Updated documentation.

The update will be available through the LiveUpdate system.

7 mars 2014
MetaTrader 5 build 910

Trading terminal

  1. Fixed errors and crashes when working in Wine (for Linux, Mac).
  2. Fixed display of Gann Grid graphical object's central line when zooming.

MQL5 Language

  1. Fixed an occasional error when downloading .ex5 files.
  2. Fixed operation of StringToCharArray and StringToTime functions.
Fixed errors reported in crash logs.
Updated documentation.
28 février 2014
MetaTrader 5 Build 900
  1. Market: Added new product category in MetaTrader AppStore — Magazines. Now, users can buy not only trading applications but also trading and financial magazines quickly and easily.

    Just like MetaTrader 5 applications, magazines can be purchased at MQL5.community Market as well as directly via MetaTrader 5 terminal. All magazines are accompanied by detailed descriptions and screenshot galleries:

    The latest magazine issues are always displayed in the showcase, while the previous ones can be found on the Archive tab.

    To buy a magazine, you should have an MQL5.com account and the necessary amount of funds on it. The account data should be specified at the Community tab of the terminal settings:

    Click Buy on the magazine's page to purchase it. Purchase confirmation dialog appears:

    To continue, agree to the rules of using the Market service and enter your MQL5.community password. After that, the specified amount of funds will be withdrawn from your account and the magazine will be downloaded. Buy button will be replaced by Open one.

    Magazine files are downloaded to My Documents\MQL5 Market\Magazines\[Magazine name]\[Issue name]. The download may be performed in two formats:

    • MQB - this protected format is used for paid magazines. When purchasing and downloading a magazine file, it is encoded so that it can be opened only on the PC it has been downloaded to. Generation of an encoded copy is called activation. Each magazine can be activated at least 5 times on different hardware. Magazine sellers can increase the number of activations at their sole discretion.

    • PDF - this format is used for free magazines. After downloading, such file can be moved and viewed on other devices.

    The special component called MetaViewer has been added to MetaTrader 5 terminal allowing users to view MQB files. This application is launched when you click Open at the downloaded magazine page. If User Account Control system is enabled on the user's PC, the user will be prompted to allow the terminal to associate MQB files with MetaViewer during the first launch. After the association, MQB files are automatically opened in MetaViewer when launched from Windows file explorer.

    If you click ÎÊ, the files are associated and the selected magazine issue is opened in MetaViewer immediately. If you click Cancel, only the magazine issue is opened.

    MetaViewer is a convenient application for viewing books and magazines in MQB and PDF formats. Keyboard arrows are used to turn over the pages: left and right arrows - for page-by-page navigation, while up and down arrows - for scrolling. MetaViewer menu and control panel contain additional commands for setting the journal's view and navigation:

    • File - commands for opening the files and exiting the program.
    • View - display settings: interface language, page look, enabling control panel and status bar, as well as page rotation.
    • Navigation - navigation commands: switching between the pages, moving to the first, last or selected page.
    • Zoom - page scale management commands: zooming in and out, fitting height, width and actual page size.
    • Help - information about the program and useful links.
  2. Terminal: Added MQL tab to EX5 file properties. The tab contains the program's icon as well as its name and description specified in the application's source code via the appropriate #property parameters.

    The tab appears only after MetaViewer is registered in the system. If a current user has sufficient rights and User Account Control system is disabled, MetaViewer is registered automatically during the terminal's first launch after the update. Otherwise, the user will see the dialog window requesting a one-time elevation of rights for MetaViewer during the first attempt to open a magazine.

  3. Terminal: Added MQL5.community fast registration dialog in case a user has no account. Now, an MQL5.community account can be created without the need to leave the terminal.

    Specify login and email address in the registration window. After clicking Register, an email for MQL5.community account activation is sent to the specified address.

    MQL5.community account allows traders to use additional powerful services:

    • MetaTrader 5 AppStore - users can buy MetaTrader 5 apps or download them for free directly from the terminal. MetaTrader 5 AppStore offers hundreds of various applications and their number is constantly increasing.
    • Signals - users can subscribe to trading signals provided by professional traders and make profit. Trading operations are automatically copied from provider's account to subscriber's one. The service also allows selling your own trading signals. A trading account can be connected to the monitoring system in a few clicks.
    • Jobs - a freelance service allowing customers to securely order the development of MetaTrader 4 and 5 applications. The orders are executed by experienced programmers. The service also allows you to make profit by developing programs ordered by customers.

  4. Terminal: Added information about margin charging rates for various order types, as well as the list of spreads that may include orders and positions for the symbol, to the trading symbol data dialog.

    Margin Rates:

    A multiplier for calculating margin requirements relative to the margin's main amount is specified for each order type. The main amount of margin is calculated depending on the specified calculation method (Forex, Futures, etc.).

    • Long positions rate
    • Short positions rate
    • Limit orders rate
    • Stop orders rate
    • Stop-Limit orders rate

    Calculation of margin requirements is described in details in the client terminal user guide.

    Spreads:

    The margin can be charged on preferential basis in case trading positions are in spread relative to each other. The spread is defined as the presence of the oppositely directed positions at related symbols. Reduced margin requirements provide traders with more trading opportunities.

    The spread has two legs - A and B. The legs are the oppositely directed positions in a spread - buy or sell. The leg type is not connected with some definite position direction (buy or sell). It is important that trader's positions at all leg's symbols are either long or short.

    Several symbols with their own volume rates can be set for each spread leg. These rates are shown in parentheses, for example, LKOH-3.13 (1).

    Take a look at the following example:

    • leg À consists of GAZR-9.12 and GAZR-3.13 symbols having the ratios of 1 and 2 respectively;
    • leg  consists of GAZR-6.13 symbol having the ratio of 1.

    To keep positions in the spread, a trader should open positions of 1 and 2 lots for GAZR-9.12 and GAZR-3.13 respectively in one direction and a position of 1 lot for GAZR-6.13 in another.

    Margin column displays margin charging type at this spread:

    • Specific values mean charging a fixed margin for a spread in a specified volume. The first value specifies the volume of the initial margin, while the second one specifies the volume of the maintenance one.

    • Maximal - initial and maintenance margin values are calculated for each spread leg. The calculation is performed by summing up the margin requirements for all leg symbols. The margin requirements of the leg having a greater value will be used for the spread.

    • CME Inter Spread - the rates (in percentage value) for margin are specified: the first one is for the initial margin, while the second is for the maintenance one. The total margin value will be defined by summing up the margin requirements for all symbols of the spread and multiplying the total value by the specified rate.

    • CME Intra Spread - two values for margin increase are specified: the first value is for the initial margin, while the second is for the maintenance one. During the calculation, the difference between the total margin of A leg symbols and the total margin of B leg symbols is calculated (the difference in absolute magnitude is used, so that it does not matter what leg is a deductible one). According to the type of the calculated margin, the first (for the initial margin) or the second (for the maintenance one) value is added to the obtained difference.

    The specified margin is charged per spread unit - for the specified combination of positions. If any part of the position does not fit the spread, it will be charged by an additional margin according to the symbol settings. If the client's current positions have the volume the specified combination fits in several times, the charged margin is increased appropriately. For example, suppose that A and B symbols with the ratios of 1 and 2 are in spread. If a client has positions for these symbols with the volumes of 3 and 4 respectively, the total margin size is equal to the doubled value from the spread settings (two spreads: 1 lot of A and 2 lots of B, 1 lot of A and 2 lots of B) plus the margin for the single remaining A symbol lot.

    Spreads are described in details in the client terminal user guide.

  5. Terminal: Fixed the depth of market freezing when the best bid price is higher than the best ask one.
  6. Terminal: Fixed setting the fill policy type for market trade requests depending on the trade symbol's execution type and allowed filling modes.
  7. Terminal: Fixed display of incorrect SL and TP values in the position open dialog in case there is a position with placed SL and TP levels and the levels are placed "In Points". Incorrect SL and TP level values in points have previously been inserted to these fields. Beginning with the new build, the values in the above mentioned case are displayed in prices regardless of the level placing mode.
  8. Terminal: Fixed occasional incomplete display of the trading history for the current day.
  9. Terminal: Reduced memory consumption during MQL5 Code Base and MQL5 Market operation.
  10. Terminal: Fixed working with context menus when using touch screen devices powered by Microsoft Windows 8 or higher.
  11. Market: Added product activation confirmation dialog displaying the number of remaining activations.

    Each application purchased in MetaTrader AppStore is additionally protected, so that it can be launched only on the PC it has been downloaded to during the purchase. Generation of an encoded copy is called activation. Each product can be activated at least 5 times on different hardware. Sellers can increase the number of activations at their sole discretion.

    The new dialog protects users from wasting activations by informing that their number is limited.

  12. MQL5: Fixed crash when initializing primitive type arrays by a sequence.
  13. MQL5: Fixed errors when working with #ifdef/#else/#endif conditional compilation macros.
  14. MQL5: MQL5 language compiler moved to MetaEditor. The compiler will be available for download as a separate .exe file.
  15. Signals: Added information about a signal, to which an account is subscribed, to the Navigator window:

    If the account is subscribed to the signal, the appropriate icon with the signal's name is shown for it. When hovering the mouse cursor over the name, the subscription's expiration date is displayed. The context menu contains commands for viewing the signal and unsubscribing from it. The latter one is displayed only if the appropriate trading account is currently active in the terminal.

    The subscription icon makes working with signals more convenient.

  16. Signals: Added legend for equity, growth, balance and distribution graphs. Also, marks displaying funds depositing and withdrawal have been added to the equity graph. When hovering the mouse cursor over the balance operation triangle, a tooltip with the operation sum is displayed:

  17. MetaEditor: Fixed the loss of focus in the code editing window that occurred after the first compilation.
  18. MetaEditor: Fixed automatic scrolling of the compilation window to the first warning if there are no errors.
  19. MetaEditor: Fixed highlighting predefined _DEBUG and _RELEASE macros in the source code.
  20. MetaEditor: Fixed operation of snippets if the automatic entering of line indentations is disabled.
  21. Fixed errors reported in crash logs.
  22. Updated documentation.
12345678910111213