Terminal
- Correction de l'affichage des
paramètres de marge dans les spécifications des symboles de trading.
Auparavant, en cas d'utilisation d'un effet de levier flottant (par
exemple, calculé sur la base du volume de la position du compte), les
paramètres de marge dans les spécifications du contrat pouvaient être
affichés de manière incorrecte.
- Correction du tri du
carnet d'ordres pour les symboles dont les prix négatifs sont
autorisés. Les ordres avec des prix positifs, négatifs et nuls sont
désormais affichés correctement et dans l'ordre.
- Le guide de l'utilisateur du terminal comprend désormais une nouvelle section Comment le Testeur télécharge les données historiques.
Il résume les points clés nécessaires pour comprendre comment le
Testeur de Stratégie fonctionne avec l'historique de trading. Pour
garantir la stabilité des calculs, le testeur charge toujours une
"mémoire tampon de l'historique avant le démarrage" :
- D1
et moins — à partir du début de l'année civile précédente. Cela permet
de disposer d'un historique d'au moins 1 an. Exemple : si la date de
début du test est le 01/03/2023, le terminal téléchargera depuis le
terminal les données depuis le 01/01/2022. Cela équivaut à 14 mois avant
le début du test.
- W1 — au moins 100 barres hebdomadaires (~2 ans).
- MN1 — au moins 100 barres mensuelles (~8 ans).
Si
l'historique disponible est insuffisant, le testeur avance
automatiquement la date de début réelle au point le plus proche
répondant aux exigences.
Dans ce cas, les tests commencent plus
tard que la date spécifiée par l'utilisateur. Le journal du testeur
affichera un message correspondant, par exemple :
start time changed to 2024.03.15 00:00 to provide data at beginning
- Ajout de 5 nouvelles méthodes OpenBLAS dans la section Matrix Balance, élargissant la fonctionnalité pour les matrices carrées. Le nouvel ensemble de fonctions fournit :
- L’équilibrage des matrices pour une meilleure précision dans les calculs des valeurs propres
- Les transformations arrière des vecteurs propres
- La réduction à la forme de Hessenberg et à la décomposition de Schur, y compris la génération de matrices orthogonales
Ces méthodes offrent aux développeurs un cycle de transformation
complet, de la préparation préliminaire de la matrice au calcul précis
et stable du spectre.
Les méthodes sont basées sur des
algorithmes LAPACK (GEBAL, GEBAK, GEHRD, ORGHR, HSEQR), ce qui garantit
des performances et une fiabilité élevées :
- MatrixBalance
: Équilibre une matrice réelle ou complexe générale en permutant les
lignes et les colonnes et en appliquant des transformations de
similarité diagonale. L'équilibrage peut réduire la norme 1 de la
matrice et améliorer la précision des valeurs propres et/ou des vecteurs
propres calculés (fonction LAPACK GEBAL).
- EigenVectorsBackward
: Forme les vecteurs propres de droite ou de gauche d'une matrice
générale réelle ou complexe par transformation à rebours des vecteurs
propres calculés de la matrice équilibrée (fonction LAPACK GEBAK).
- ReduceToHessenbergBalanced
: Réduit une matrice équilibrée générale réelle ou complexe à la forme
de Hessenberg supérieure par une transformation de similarité
orthogonale (fonction LAPACK GEHRD).
- ReflectHessenbergBalancedToQ
: Génère la matrice orthogonale Q qui est définie comme le produit des
réflecteurs élémentaires d'ordre n générés par la réduction à la forme
de Hessenberg (fonction LAPACK ORGHR).
- EigenHessenbergBalancedSchurQ
: Calcule les valeurs propres d'une matrice de Hessenberg et les
matrices T et Z de la décomposition de Schur ; en option, calcule la
factorisation de Schur d'une matrice d'entrée réduite à la forme de
Hessenberg (fonction LAPACK HSEQR).
- Ajout de 2 nouvelles méthodes dans la section Valeurs propres.
Les deux fonctions calculent efficacement les vecteurs propres après la
décomposition de Schur, complétant ainsi l'ensemble des outils
d'algèbre linéaire de MQL5 :
- EigenVectorsTriangularZ
: Calcule les vecteurs propres d'une matrice réelle quasi-triangulaire
supérieure ou triangulaire supérieure complexe (forme de Schur). Utilise
la décomposition A = Q - T - Qᴴ (fonction LAPACK TREVC). Offre une grande précision.
- EigenVectorsTriangularZBlocked
: Version en bloc pour le calcul des vecteurs propres d'une matrice
réelle quasi-triangulaire supérieure ou triangulaire supérieure complexe
(fonction LAPACK TREVC3). Plus rapide mais moins précis.
- Introduction d'un changement important dans l'héritage avec la nouvelle règle de dissimulation des méthodes
Auparavant, si une classe ou une structure dérivée définissait une méthode portant le même nom que dans la classe de base, la surcharge
était effectuée : toutes les versions (du parent et de l'enfant)
étaient disponibles dans la classe dérivée. Or, les méthodes portant le
même nom dans une classe dérivée cachent les méthodes de la classe de base (method hiding).
Pour appeler une méthode cachée de la classe de base, vous devez spécifier explicitement sa portée lors de l'appel : class Base
{
public:
void Print(int x) { ::Print("Base int: ", x); }
void Print(double y){ ::Print("Base double: ", y); }
};
class Derived : public Base
{
public:
void Print(string s){ ::Print("Derived string: ", s); }
};
void OnStart()
{
Derived d;
d.Print("text");
d.Print(10);
d.Base::Print(10);
}
Depuis un certain temps, le compilateur MQL5 émet un
avertissement si une méthode de base cachée correspond mieux aux
paramètres de l'appel que la méthode dérivée disponible. Exemple pour le
code ci-dessus d.Print(10) : call resolves to 'void Derived::Print(string)' instead of 'void Base::Print(int)' due to new rules of method hiding
see declaration of function 'Derived::Print'
see declaration of function 'Base::Print'
implicit conversion from 'number' to 'string'
- Ajout de l'opérateur using pour restaurer les surcharges des méthodes de la classe de base.
Pour contrôler ce nouveau comportement, MQL5 introduit l'opérateur
'using'. Il permet de "tirer" toutes les surcharges d'une méthode du
type de base dans la portée d'une classe ou d'une structure :
class Base
{
protected:
void Print(int x) { ::Print("Base int: ", x); }
void Print(double y){ ::Print("Base double: ", y); }
};
class Derived : public Base
{
public:
void Print(string s){ ::Print("Derived string: ", s); }
using Base::Print;
};
void OnStart()
{
Derived d;
d.Print("text");
d.Print(42);
d.Print(3.14);
}
Si "using Base::Print ;" est supprimé, les appels à d.Print(42)
et d.Print(3.14) seront indisponibles ; seul Derived::Print(string)
subsistera.
Dans cet exemple, vous pouvez également voir que
les méthodes protégées de la classe de base deviennent accessibles dans
la classe dérivée (leur visibilité passe de protégée à publique).
Les développeurs disposent ainsi d'un contrôle plus souple et plus
prévisible sur les hiérarchies de classes, ce qui leur permet de définir
précisément quelles surcharges de méthodes de la classe de base doivent
rester accessibles dans les types dérivés.
MetaEditor
- Calculs de hachage SHA-1 accélérés pour les opérations Git dans Algo Forge. L'amélioration des performances est supérieure à 40% pour les opérations en masse.
- Correction des vérifications de modification de fichiers pour les
opérations Git. Si seule l'heure de modification change mais que le
contenu du fichier reste le même, le fichier n'est plus considéré comme
modifié. Cela permet d'éliminer les fausses détections et d'éviter les
conflits avec les dépôts distants.
Publication du
Guide de l'Utilisateur MQL5 Algo Forge. Il met en évidence tous les avantages clés de Git sans complexité inutile :
- un stockage fiable de l'historique des versions et des branchements,
- l'expérimentation rapide et la fusion sûre des modifications,
- créer votre propre dépôt ou forker les projets d'autres développeurs en un seul clic,
- une collaboration transparente au sein de l'équipe avec un suivi des contributions,
- un catalogue de projets ouverts offrant la possibilité d'apprendre des autres.
Cloner le projet d'un autre développeur
Ouvrez le projet que vous souhaitez cloner sur forge.mql5.io et cliquez sur Fork. Saisissez un nom et une description pour le fork et enregistrez.

Dans MetaEditor, en utilisant le même compte MQL5, exécutez la commande Rafraîchir dans le Navigateur. Votre fork apparaîtra dans le dossier Projets partagés. Téléchargez-le depuis Algo Forge en utilisant Git Clone.
Vous recevrez non seulement les fichiers du projet, mais aussi
l'historique complet des livraisons et toutes les branches. Cela
signifie que vous pouvez continuer à travailler sur le fork tout en
conservant l'historique complet du projet cloné.

Terminal Web
- Correction de l'affichage des sessions de trading et de cotation dans les spécifications des symboles.
- Correction de l'affichage des titlehttps://www.metatrader5.com/fr/terminal/help/trading/market_watch#specificationtitleparamètres de marge dans les spécifications des symboles.
- Correction de l'affichage des sessions de trading et de cotation dans les spécifications des symboles.
- Ajout de la prise en charge du type de compte Championnat. Ces comptes sont affichés en bleu, alors que les comptes de démonstration apparaissent en vert.
- Correction de l'exactitude des calculs de marge de l'effet de levier dans certaines conditions.
- Correction
d'un problème lors de l'ouverture d'un nouveau compte où le bouton
"Suivant" ne permettait pas toujours de passer à l'étape suivante.
- Correction d'un problème où il n'était pas possible de placer un ordre limité entre les prix Bid et Ask pour une exécution en Bourse.
- Correction
de l'affichage des prix d'exécution des ordres. Une fois l'ordre
envoyé, les résultats de son exécution apparaissent dans la fenêtre :
une opération réussie ou la raison pour laquelle l'ordre n'a pas été
exécuté. Dans certains cas, le prix d'exécution était incorrectement
indiqué comme étant "0".
- Correction d'un problème où le bouton de fermeture de la position rapide ne s'affichait pas.

- Correction de l'affichage des devises des comptes de trading dans la fenêtre de sélection des comptes.
Veuillez vous reporter aux nouvelles précédentes :