MetaTrader 5 Build 1455 : Biblibothèques de fonctions mathématiques en MQL5

Mises à jour : MetaTrader 5

14 octobre 2016

Terminal

  1. Ajout d'infobulles pour les boutons Buy, Sell et Close dans les boîtes de dialogue de trading. Les infobulles contiennent des informations sur l'instrument sur le point d'être acheté ou vendu, pour aider les débutants à comprendre le processus de trading.




  2. Ajout de nouvelles icones pour les ordres, les transactions et les positions dans les onglets "Trading" et "Historique".




  3. Le terminal mis à jour fournit un affichage et une mise à jour optimisés et bien plus rapides (jusqu'à 4 ou 5 fois) du Market Depth, du graphique des ticks et des données Time & Sales.
  4. Correction de la synchronisation de l'historique des ticks en dehors des heures de trading. Le traitement pouvait consommer une quantité excessive du trafic réseau dans certains cas.

MQL5

  1. Une version MQL5 de la bibliothèque d'analyse numérique ALGLIB a été inclue dans la Bibliothèque Standard.

    Fonctions de la Bibliothèque

    • Algèbre linéaire
    • Systèmes d'équations linéaires et non linéaires
    • Interpolation
    • Optimisation
    • Transformation de Fourier rapide
    • Intégration numérique
    • Moindres carrés linéaires et non linéaires
    • Equations différentielles ordinaires
    • Fonctions spéciales
    • Statistiques descriptives et tests d'hypothèses
    • Analyse des données - classification, régression
    • Implémentation des algorithmes d'algèbre linéaire, interpolation, etc. en arithmétique multi-précisions (utilisant MPFR)

    Comment l'Utiliser

    Les fichiers de ALGLIB sont situés dans \MQL5\Include\Math\Alglib. Pour utiliser les fonctions, incluez le fichier principal de la bibliothèques dans votre programme :

     #include <Math\Alglib\alglib.mqh> 

  2. Des fonctions de statistiques mathématiques ont été inclues dans la Bibliothèque Standard. MQL5 fournit maintenant la fonctionnalité du langage R, qui est l'un des meilleurs outils pour le traitement et l'analyse de données statistiques.

    Fonctions de la Bibliothèque

    La bilbliothèque statistique contient des fonctions de calcul des caractéristiques statistiques des données, mais aussi des fonctions d'opérations avec les distributions statistiques :

    • Fonctions pour le calcul des caractéristiques statistiques des éléments d'un tableau
    • Options pour les opérations avec des distributions statistiques : distribution normale, distribution log-normale, distribution béta, etc.

    Comment l'Utiliser

    Les fichiers de la bilbiothèque statistique sont situés dans \MQL5\Include\Math\Stat. Pour utiliser cette bibliothèque, incluez dans votre programme les fichiers des fonctions désirées, par exemple :

    #include <Math\Stat\Binomal.mqh>
    #include <Math\Stat\Cauchy.mqh> 
    
    

    La description détaillée des fonctions de la bibliothèque est disponible dans l'article Distributions Statistiques en MQL5 - Profiter du Meilleur de R.

  3. La version MQL5 de la bibliothèque Fuzzy a été inclue dans la Bibliothèque Standard. La bibliothèque Fuzzy implémente les systèmes d'inférence floue Mamdani et Sugeno.

    Fonctions de la Bibliothèque

    • 13 fonctions membres
    • Forme flexible de développement de règles du système flou
    • Système d'inférence Mamdani
    • Système d'inférence floue Sugeno
    • 5 méthode de défloutage pour les systèmes de type Mamdani
    • Quantité illimitée de variables d'entrée et de sortie

    Comment l'Utiliser

    Les fichiers de la bibliothèque Fuzzy sont situés dans \MQL5\Include\Math\Fuzzy. Pour utiliser cette bibliothèque, incluez dans votre programme les fichiers des fonctions désirées, par exemple :

    #include <Math\Fuzzy\mamdanifuzzysystem.mqh>
    #include <Math\Fuzzy\sugenofuzzysystem.mqh> 
    
    

    Une description détaillée des fonctions de la bibliothèque est disponible dans Code Base : Fuzzy - bibliothèque de développement des modèles flous


  4. La nouvelle propriété CHART_QUICK_NAVIGATION permet d'activer/désactiver la barre de navigation rapide dans le graphique. Si vous avez besoin de modifier et d'accéder à l'état de la propriété, utilisez les fonctions ChartSetInteger et ChartGetInteger.




    La barre de navigation est ouverte en appuyant sur les touches Entrée ou Espace. Elle vous permet de vous déplacer rapidement à une date spécifiée sur le graphique, mais également de changer de symbole et de période. Si votre programme MQL5 utilise les touches Entrée ou Espace, désactiver la propriété CHART_QUICK_NAVIGATION pour éviter l'interception de ces évènements par le terminal. La barre de navigation rapide peut toujours être ouverte par un double-clic.

  5. De nouvelles fonctions FileLoad et FileSave ont été ajoutées. Elles fournissent une méthode simplifiée de lecture et de sauvegarde des tableaux dans des fichiers. Contrairement ) FileRead* et FileWrite*, ces fonctions ne nécessitent pas le handle de l'indicateur. FileLoad et FileSave opèrent avec des tableaux d'élements de type numérique ou de structures simples qui ne contiennent pas de chaînes de caractères, de tableaux dynamiques ou de classes d'objets.
    long  FileLoad(
       const string filename,      // [in] Nom du fichier
       void         &buffer[],     // [out] Un tableau qui sera rempli par le fichier lu
       uint         common_flag=0  // [in] 0 - recherche du fichier dans le répertoire Files du terminal, FILE_COMMON - recherche dans le répertoire commun des terminaux
       );
    
    bool  FileSave(
       const string filename,      // [in] Nom du fichier
       const void   &buffer[],     // [in] Le tableau à sauvegarder dans un fichier
       uint         common_flag=0  // [in] 0 - crée un fichier dans le répertoire Files du terminal, FILE_COMMON - crée le fichier dans le répertoire commun des terminaux
       );
    
    
    Exemple d'écriture des ticks dans un fichier et de relecture du fichier :
    //--- paramètres d'entrée
    input int      ticks_to_save=1000; // Nombre de ticks
    //+------------------------------------------------------------------+
    //| Fonction de démarrage du programme                               |
    //+------------------------------------------------------------------+
    void OnStart()
      {
       string  filename=_Symbol+"_ticks.bin";
       MqlTick ticks[];
    //---
       int copied=CopyTicks(_Symbol,ticks,COPY_TICKS_ALL,0,ticks_to_save);
       if(copied!=-1)
         {
          PrintFormat(" CopyTicks(%s) a copié %d ticks",_Symbol,copied);
          //--- Si l'historique des ticks est synchronisé, le code d'erreur est égal à zéro
          if(!GetLastError()==0)
             PrintFormat("%s : les ticks ne sont pas synchronisés. Erreur=",_Symbol,copied,_LastError);
          //---  Ecriture des ticks dans un fichier
          if(!FileSave(filename,ticks,FILE_COMMON))
             PrintFormat("FileSave() a échoué, erreur=%d",GetLastError());
         }
       else
          PrintFormat("Echec de CopyTicks(%s), Erreur=",_Symbol,GetLastError());
    //--- Relecture des ticks depuis le fichier
       ArrayFree(ticks);
       long count=FileLoad(filename,ticks,FILE_COMMON);
       if(count!=-1)
         {
          Print("Time\tBid\tAsk\tLast\tVolume\tms\tflags");
          for(int i=0;i<count;i++)
            {
             PrintFormat("%s.%03I64u:\t%G\t%G\t%G\t%I64u\t0x%04x",
             TimeToString(ticks[i].time,TIME_DATE|TIME_SECONDS),ticks[i].time_msc%1000,
             ticks[i].bid,ticks[i].ask,ticks[i].last,ticks[i].volume,ticks[i].flags);
            }
         }
      }
    
    

  6. Modification de l'affichage des indicateurs personnalisés avec le mode de dessin DRAW_CANDLES. Il est maintenant possible de définir de 1 à 3 couleurs pour ce mode. L'affichage des bougies dépends du nombre de couleurs défini.

    Si une couleur est spécifiée, toutes les bougies du graphiques seront intégralement peinte avec cette couleur.
    //--- Bougies dessinées avec la même couleur 
    #property indicator_label1  "Bougies à une couleur"
    #property indicator_type1   DRAW_CANDLES
    //--- Une seule couleur est spécifiée, donc toutes les bougies ont la même couleur
    #property indicator_color1  clrGreen  
    
    
    Si deux couleurs sont spécifiées, une couleur est utilisée pour les contours de la bougie, l'autre pour son corps.
    //--- La couleur des bougies diffère de la couleur des ombres
    #property indicator_label1  "Bougies à deux couleurs"
    #property indicator_type1   DRAW_CANDLES
    //--- Les contours des bougies et les ombres sont verts, le corps est blanc
    #property indicator_color1  clrGreen,clrWhite 
    
    
    Si trois couleurs sont spécifiées, une couleur est utilisée pour les contours de la bougie, les deux autres couleurs sont utilisées pour le corps des bougies montantes et descendantes.
    //--- La couleur des bougies diffère de la couleur des ombres
    #property indicator_label1  "Bougies à une couleur"
    #property indicator_type1   DRAW_CANDLES
    //--- Les contours des bougies et les ombres sont verts, le corps d'une bougie haussière est blanc, celui d'une bougie baissière est rouge
    #property indicator_color1  clrGreen,clrWhite,clrRed
    
    
    Le style DRAW_CANDLES permet de définir des couleurs personnalisées pour la bougie. Toutes les couleurs peuvent également être changées dynamiquement lorsque l'indicateur est en cours d'exécution, en utilisant la fonction PlotIndexSetInteger(drawing_index_DRAW_CANDLES, PLOT_LINE_COLOR, modifier_number, couleur) où modifier_number peut avoir les valeurs suivantes :
    • 0 – la couleur des bordures et des ombres
    • 1 – la couleur du corps d'une bougie haussière
    • 2 – la couleur du corps d'une bougie baissière
    //--- Définition de la couleur des bordures et des ombres
    PlotIndexSetInteger(0,PLOT_LINE_COLOR,0,clrBlue);
    //--- Définition de la couleur du corps d'une bougie haussière
    PlotIndexSetInteger(0,PLOT_LINE_COLOR,1,clrGreen);
    //--- Définition de la couleur du corps d'une bougie baissière
    PlotIndexSetInteger(0,PLOT_LINE_COLOR,2,clrRed);
    
    
  7. Correction de bugs et utilisation améliorée de l'historique des ticks utilisant les fonctions CopyTicks.
  8. Avec le nouveau build, les opérateurs peuvent être utilisés dans les interfaces (ce qui n'était pas permis auparavant).

Market

  1. Correction d'une erreur qui pouvait provoquer une demande répétée de connexion à la MQL5.community lors de l'achat de produits sur le Market.

Tester

  1. Ajout de la traduction de l'interface en grec, malais et hébreux.

Documentation mise à jour.