Nouvelle version de la Plateforme MetaTrader 5 Build 5100 : Passage à Git et au hub de développement MQL5 Algo Forge, thème sombre et améliorations de l'interface

Dans cette version, nous avons considérablement remanié l'éditeur de code source MetaEditor. Le système de contrôle de version intégré, MQL5 Storage, a été migré de Subversion à Git. Avec le passage à Git, nous introduisons MQL5 Algo Forge, un nouveau portail en ligne pour la gestion de projets

5 juin 2025

MetaEditor

  • Nous avons entièrement revu le stockage MQL5 Storage, en remplaçant Subversion par Git comme système de contrôle de version. Git est la norme mondiale pour les développeurs, offrant une fiabilité et une flexibilité accrues dans la gestion du code.

    • Branchements et merge flexibles – créez des branches distinctes pour les nouvelles fonctionnalités ou les expériences et fusionnez-les facilement avec la version principale du projet.
    • Opérations de dépôt plus rapides – contrairement à Subversion, Git stocke toutes les données localement, ce qui rend les validations, les changements de version et les comparaisons de modifications beaucoup plus rapides.
    • Possibilité de travailler hors ligne – pas besoin d'une connexion constante au serveur : validez les modifications localement et transférez-les dans un référentiel en ligne quand cela vous convient.
    • Suivi avancé des modifications – consultez facilement l'historique des versions, suivez les modifications à l'aide des timestamps et des auteurs, et revenez aux versions précédentes sans complications.
    • Fonctionnalité de fusion (merge) supérieure – des outils de comparaison et de fusion avancés permettent de minimiser les conflits et de rationaliser le développement collaboratif.

    Un nouveau niveau de développement collaboratif
    Avec la transition vers Git, nous introduisons MQL5 Algo Forge, un nouveau portail en ligne pour la gestion de projets. Plus qu'une simple liste de projets, il s'agit d'un véritable réseau social pour les développeurs – essentiellement GitHub pour les traders algorithmiques. Suivez des développeurs intéressants, créez des équipes et collaborez à des projets sans effort.




    Affichez les détails du projet : structure, fichiers, commits, branches, etc. Suivez les contributions individuelles, créez de la documentation et partagez les projets en ligne.




    Surveillez tous les changements de code : détecter les lignes nouvelles, modifiées et supprimées. En cas de problème, confiez les tâches aux développeurs directement au sein du projet.




    Pour améliorer la convivialité de Git, nous avons redessiné le Navigateur et la fenêtre active d'édition du code. Nous avons également introduit un menu Git dédié dans la barre d'outils de MetaEditor :




    Une documentation complète sur Git sera bientôt disponible.

Terminal

  1. Ajout de la prise en charge d'un schéma de couleurs sombres pour tous les composants, y compris le terminal de trading, MetaEditor et le testeur visuel. Le thème sombre offre une expérience de développement plus confortable la nuit. Utilisez le menu Affichage pour passer d'un mode à l'autre :




    Tout en adaptant l'interface à différents thèmes, nous avons apporté de nombreuses améliorations à l'affichage des boîtes de dialogue, des menus, des panneaux et des boutons pour une expérience utilisateur plus confortable. Dans MetaEditor, les informations sur la position du curseur et l'indicateur du mode de saisie du texte (INS/OVR) sont désormais affichés dans le coin supérieur droit. La barre d'état inférieure a été supprimée pour économiser l'espace de travail.

  2. Ajout d'une option de location de VPS pour 12 mois. En achetant d'emblée un hébergement à long terme, vous économisez un tiers du coût total.


    Ajout d'une option de location de VPS pour 12 mois.


  3. Utilisation optimisée de la mémoire. Le terminal consomme désormais moins de ressources système, ce qui améliore ses performances.
  4. Affichage optimisé de l'historique des transactions du compte. La plateforme peut désormais afficher correctement des millions d'enregistrements.
  5. Ajout de la commande "Rétablir les paramètres par défaut" dans le menu Fenêtres. Il réinitialise tous les éléments de l'interface, y compris les graphiques, le Navigateur, le Testeur de Stratégie et d'autres, à leur position d'origine.
  6. Correction d'une erreur provoquant le blocage de la boîte de dialogue de modification de la position dans certaines conditions.
  7. Calcul de la valeur fixe pour les positions ouvertes avec des prix négatifs.
  8. Calculs de taux de marge fixes dans les spécifications de symboles de trading avec des prix négatifs.
  9. Correction du calcul des valeurs MFE et MAE actuelles et de l'affichage de leurs graphiques dans les rapports de trading.
  10. Correction de l'échelle des oscillateurs dans les sous-fenêtres graphiques. L'échelle verticale des oscillateurs est désormais affichée correctement.
  11. Correction de la visibilité des carnets d’ordres et des tableaux d'options lors du passage en mode plein écran.
  12. Ajout de l'affichage des tickets de position dans l'historique des transactions du compte. Utilisez le menu contextuel pour activer la colonne concernée.
  13. Correction du calcul de la valeur de liquidation dans l'onglet Exposition pour les contrats à terme et les options.
  14. Correction d'un problème lié à la copie dans le presse-papiers des données d'un compte nouvellement créé. Lors de la dernière étape de l'enregistrement d'un compte de démonstration ou préliminaire, l'utilisateur reçoit les détails de son compte : login, mots de passe, etc. Ils peuvent être copiés dans le presse-papiers pour être enregistrés dans un fichier séparé. La commande correspondante fonctionne désormais correctement sur macOS.
  15. Correction de l'affichage de la section "Journal VPS". La page pouvait afficher une erreur dans certaines conditions.
  16. Correction de la prise en charge des moniteurs HiDPI sous Linux.
  17. Mise à jour des traductions de l'interface utilisateur.

MQL5

  1. Ajout de l'opérateur de multiplication de matrice @. Il suit les règles de l'algèbre linéaire et permet la multiplication des matrices et des vecteurs, ainsi que les produits scalaires (point) des vecteurs.

    Multiplication matricielle (matrice × matrice)
    matrix A(2, 3);
    matrix B(3, 2);
    matrix C = A @ B; // Result: Matrix C of size [2,2]
    Multiplication matricielle (matrice × vecteur)
    matrix M(2, 3);
    vector V(3);
    vector R = M @ V; // Result: Vector R of 2 elements
    Multiplication matricielle (vecteur x matrice)
    matrix M(2, 3);
    vector V(1, 2);
    vector R = V @ M; // Result: Vector R of 3 elements
    Multiplication scalaire (vecteur × vecteur)
    vector V1(1, 3), V2(1, 3);
    double r = V1 @ V2; // Result: Scalar
  2. Ajout du paramètre 'ddof' dans les méthodes Std, Var et Cov. Ce paramètre définit le nombre de degrés de liberté soustrait du dénominateur lors du calcul de l'écart-type. Pour Std et Var, le paramètre par défaut est 0, pour Cov il est 1.

    Comment ddof affecte le calcul :

    • Par défaut, ddof=0, ce qui signifie que l'écart-type de la population est calculé.
    • Si ddof=1, la fonction calcule l'écart type de l'échantillon, qui tient compte des tailles d'échantillon finies, couramment utilisé en statistique lors de l'analyse d'un sous-ensemble de données.

  3. Ajout de nouvelles méthodes OpenBLAS :

    Valeurs propres et vecteurs propres

    • EigenTridiagonalDC – calcule les valeurs propres et les vecteurs propres d'une matrice tri-diagonale symétrique à l'aide de l'algorithme de division et de conquête (fonction LAPACK STEVD).
    • EigenTridiagonalQR – calcule les valeurs propres et les vecteurs propres d'une matrice tri-diagonale symétrique à l'aide de l'algorithme QR (fonction LAPACK STEV).
    • EigenTridiagonalRobust – calcule les valeurs propres et les vecteurs propres d'une matrice tri-diagonale symétrique en utilisant l'algorithme MRRR (Multiple Relatively Robust Representations) (fonction LAPACK STEVR).
    • EigenTridiagonalBisect – calcule les valeurs propres et les vecteurs propres d'une matrice tri-diagonale symétrique à l'aide de l'algorithme de bissection (fonction LAPACK STEVX).
    • ReduceToBidiagonal – réduit une matrice générale réelle ou complexe m-par-n A à la forme bi-diagonale supérieure ou inférieure B par une transformation orthogonale : Q**T * A * P = B. Si m≥n, B est une matrice bi-diagonale supérieure ; sinon, B est bi-diagonale inférieure. (fonction LAPACK GEBRD).
    • ReflectBidiagonalToQP – génère les matrices orthogonales Q et P**T (ou P**H pour les types complexes) déterminées par la méthode ReduceToBidiagonal lors de la réduction d'une matrice réelle ou complexe A à la forme bi-diagonale : A = Q * B * P**T. Q et P**T sont définis comme des produits de réflecteurs élémentaires H(i) ou G(i) respectivement (fonctions LAPACK ORGBR, UNGBR).
    • ReduceSymmetricToTridiagonal – réduit une matrice symétrique réelle ou hermitienne complexe A à la forme tri-diagonale B par une transformation de similarité orthogonale : Q**T * A * Q = B (fonctions Lapack SYTRD, HETRD).
    • ReflectTridiagonalToQ – génère une matrice orthogonale Q définie comme le produit de n-1 réflecteurs élémentaires d'ordre n, tel que renvoyé par ReduceSymmetricToTridiagonal.

    • LinearEquationsSolution – calcule la solution du système d'équations linéaires avec une matrice à coefficients carrés A et plusieurs côtés droits.
    • LinearEquationsSolutionTriangular – calcule la solution du système d'équations linéaires avec une matrice de coefficient triangulaire carrée A et plusieurs côtés droits.
    • LinearEquationsSolutionSy – calcule la solution du système d'équations linéaires avec une matrice A conjuguée symétrique ou hermitienne et plusieurs côtés droits.
    • LinearEquationsSolutionComplexSy – calcule la solution du système d'équations linéaires avec une matrice symétrique complexe A et plusieurs côtés droits.
    • LinearEquationsSolutionGeTrid – calcule la solution du système d'équations linéaires avec une matrice A symétrique ou hermitienne conjuguée à définition positive et plusieurs côtés droits.
    • LinearEquationsSolutionSyPD – calcule la solution du système d'équations linéaires avec une matrice tri-diagonale générale (non symétrique) à coefficients A et plusieurs côtés droits.
    • LinearEquationsSolutionSyTridPD – calcule la solution du système d'équations linéaires avec une matrice symétrique tri-diagonale à coefficients définis positifs A et plusieurs côtés droits.
    • FactorizationQR – calcule la factorisation QR d'une matrice générale m par n : A = Q * R (fonction LAPACK GEQRF).
    • FactorizationQRNonNeg – calcule la factorisation QR d'une matrice générale m par n : A = Q * R, où R est une matrice triangulaire supérieure avec des entrées diagonales non négatives (fonction LAPACK GEQRFP).
    • FactorizationQRPivot – calcule la factorisation QR d'une matrice générale m par n avec pivotement des colonnes : A * P = Q * R (fonction LAPACK GEQP3).
    • FactorizationLQ – calcule la factorisation LQ d'une matrice générale m par n : A = L * Q (fonction LAPACK GELQF).
    • FactorisationQL – calcule la factorisation QL d'une matrice générale m par n : A = Q * L (fonction LAPACK GEQLF).
    • FactorizationRQ – calcule la factorisation RQ d'une matrice générale m par n : A = R * Q (fonction LAPACK GERQF).
    • FactorizationPLU – calcule une factorisation LU d'une matrice générale M par N A en utilisant le pivotement partiel avec des changements de ligne (fonction LAPACK GETRF).
    • FactorizationPLUGeTrid – calcule une factorisation LU d'une matrice tri-diagonale générale (non symétrique) N par N A en utilisant l'élimination avec pivotement partiel et les changements de ligne (fonction LAPACK GTTRF).
    • FactorizationLDL – calcule la factorisation d'une matrice réelle symétrique ou complexe hermitienne A en utilisant la méthode de pivotement diagonal de Bunch-Kaufman (fonctions LAPACK SYTRF et HETRF).
    • FactorisationLDLSyTridPD – calcule la factorisation d'une matrice tri-diagonale symétrique à définition positive ou, pour les données complexes, hermitienne à définition positive A (fonction LAPACK PTTRF).
    • FactorisationCholesky – calcule la factorisation d'une matrice réelle symétrique ou complexe hermitienne à définition positive A (fonction LAPACK POTRF).
    • FactorizationCholeskySyPS – calcule la factorisation de Cholesky avec pivotement complet d'une matrice réelle symétrique (hermitienne complexe) semi-définie positive n-par-n (fonction LAPACK PSTRF).

  4. Ajout de la fonction Random et de la méthode pour remplir les vecteurs et les matrices avec des valeurs aléatoires. Des valeurs aléatoires sont générées uniformément dans la plage spécifiée.
    static vector vector::Random(
      const ulong   size,       // vector length
      const double  min=0.0,    // min value
      const double  max=1.0     // max value
       );
    
    static matrix matrix::Random(
      const ulong   rows,       // number of rows
      const ulong   cols        // number of columns
      const float   min=0.0,    // min value
      const float   max=1.0     // max value
       );
  5. Ajout de la prise en charge d'alias supplémentaires pour les types entiers. Cela simplifiera le portage du code à partir d'autres langages tels que C et C++.

    Ces alias n'introduisent pas de nouveaux types mais fournissent des noms alternatifs pour les types existants dans MQL5. Ils peuvent être utilisés dans tous les contextes où les types de base sont applicables.

    • int8_t
    • uint8_t
    • int16_t
    • uint16_t
    • int32_t
    • uint32_t
    • int64_t
    • uint64_t

  6. Ajout de nouvelles fonctions pour détecter le schéma de couleurs du terminal :

    • Une nouvelle propriété TERMINAL_COLORTHEME_NAME a été ajoutée à l'énumération ENUM_TERMINAL_INFO_STRING. Utilisez cette propriété avec la fonction TerminalInfoString pour demander le schéma de couleurs du terminal. Valeurs possibles : Clair et Sombre.
    • De nouvelles propriétés THEME_COLOR_* ont été ajoutées à l'énumération ENUM_TERMINAL_INFO_INTEGER. Utilisez-les avec la fonction TerminalInfoInteger pour récupérer les couleurs d'éléments spécifiques de l'interface utilisateur.

    Pour détecter un changement de schéma de couleurs, utilisez le gestionnaire OnChartEvent. Lorsque le thème change, l'événement CHARTEVENT_CHART_CHANGE est déclenché 2 fois.

  7. Correction d'un bug qui provoquait le plantage de MetaEditor lors de la compilation de code contenant la méthode Array::Reserve. La méthode "Reserve" ne modifie pas la taille du tableau mais réserve de l'espace pour le nombre d'éléments spécifié afin d'éviter une réallocation de la mémoire lors de l'ajout de nouveaux éléments.
  8. Correction du comportement de la méthode Array::Push, qui ajoute de nouveaux éléments à la fin d'un tableau. Le problème s'est produit dans les tableaux dont l'espace tampon est pré-alloué.
  9. Résolution de problèmes dans les fonctions pour travailler avec OpenCL.

MetaTester

  1. Accélération de l'optimisation des stratégies de trading.
  2. Correction d'un bug qui, dans certains cas, entraînait une utilisation excessive de la mémoire par les agents de test lors de l'exécution de tâches à partir du réseau MQL5 Cloud Network.

Terminal Web

  1. Correction de l'option de sauvegarde du mot de passe dans la boîte de dialogue de connexion au compte.
  2. Correction des boutons de déplacement des graphiques. Dans certains cas, l'utilisation de ces boutons a fait disparaître le graphique.
  3. Correction de la validation du champ "Second prénom" dans le formulaire d'enregistrement d'un compte réel. Elle est désormais facultative.
  4. Correction de l'ouverture des comptes de démo. Dans certains cas, les utilisateurs ont été redirigés à tort vers le site web du courtier.
  5. Correction de la visibilité des boutons d'ouverture des comptes de démo et des comptes réels. Ces boutons sont désormais masqués si la fonction correspondante est désactivée par le courtier.
  6. Correction du comportement du champ "Dépôt" dans le formulaire d'ouverture de compte de démo.
  7. Correction de l'affichage du champ "Trading" dans la spécification du contrat.
  8. Correction du champ de recherche de symboles dans la fenêtre du "Market Watch". Le bouton "X" apparaît maintenant correctement pour quitter le mode de recherche.
  9. Correction de l'affichage d'une info-bulle pour le champ du code de confirmation de l'email dans le formulaire d'ouverture de compte.