- Concepts de Base du Langage
- Constantes, Enumérations et Structures
- Programmes MQL5
- Variables Prédéfinies
- Fonctions Communes
- Fonctions sur les Tableaux
- Méthodes sur les Matrices et les Vecteurs
- Fonctions de Conversion
- Fonctions Mathématiques
- Fonctions sur les Chaînes de Caractères
- Date et Heure
- Information du Compte
- Vérification
- Gestion d'Evènements
- Information du Marché
- Calendrier Economique
- Accès aux Séries de Données et aux Indicateurs
- Symboles personnalisés
- Opérations sur le Graphique
- Fonctions de Trading
- Signaux de Trading
- Fonctions réseau
- Variables Globales du Terminal
- Fonctions sur les Fichiers
- Indicateurs Personnalisés
- Fonctions sur les Objets
- Indicateurs Techniques
- Utilisation des Résultats d'Optimisation
- Utilisation des Evènements
- Utilisation d'OpenCL
- Utilisation de bases de données
- Utilisation de DirectX
- MetaTrader pour Python
- Modèles ONNX
- Bibliothèque Standard
- Migration depuis MQL4
- Liste des fonctions MQL5
- Liste des constantes MQL5
Le passage de MQL4
Le langage MQL5 est le développement du prédécesseur le langage MQL4, dans laquel de nombreux indicateurs, des scripts et des experts ont été écrits. Malgré que le langage moderne de programmation est au maximum compatible avec le langage de la génération précédente, néanmoins il y a une série de différences entre ces langages. Et il faut connaître ces différences au transfert des programmes.
Dans ce paragraphe on a rassemblé l'information, qui est appelée à faciliter l'adaptation de ses codes à ces programmeurs qui savent bien MQL4, au langage nouveau MQL5.
Tout d'abord il est nécessaire de noter:
- Les fonctions start(), init() et deinit() manquent;
- Le nombre de tampons d'indicateur n'est pas limitée;
- Le chargement dll se passe à la fois après le chargement de l'expert (ou n'importe quel autre programme mql5);
- La vérification raccourcie des conditions logiques;
- À la sortie au-delà du tableau l'exécution courante se cesse (critiquement - avec la sortie de l'erreur);
- La priorité des opérations comme dans C++;
- La réduction implicite des types travaille (même de la chaîne dans le nombre);
- Les variables locales ne sont pas initialisées automatiquement (excepté les chaînes);
- Les tableaux ordinaires locaux sont supprimés automatiquement.
Les fonctions spéciales init, start et deinit
Dans le langage MQL4 était seulement trois fonctions prédéterminées, qui pouvaient être dans le code de l'indicateur, le conseiller ou le script (sans prendre en compte les fichiers inclus *.mqh et les fichiers des bibliothèques). Ces fonctions sont absentes à MQL5, mais il y a leurs analogues. Dans le tableau on présente la conformité approximative des fonctions.
MQL4 |
MQL5 |
---|---|
init |
OnInit |
start |
OnStart |
deinit |
OnDeinit |
Les fonctions OnInit et OnDeinit jouent le même rôle que les fonctions init et deinit dans MQL4 elles se sont destinées au placement du code, qui doit être accompli à l'initialisation et la déinitialisation des programmes mql5. Vous pouvez tout simplement rebaptiser ces fonctions de la bonne façon, ou les laisser comme elles sont, mais ajouter l'appel de ces fonctions dans les espaces correspondants.
Exemple:
void OnInit() |
La fonction start est remplacée sur OnStart seulement dans les scripts, mais pour l'expert et l'indicateur il est nécessaire de la rebaptiser conformément à OnTick et OnCalculate. Notamment dans ces trois fonctions il est nécessaire d'installer le code, qui doit être accompli au temps de travail du programme mql5:
programme mql5 |
fonction principale |
---|---|
OnStart |
|
OnCalculate |
|
OnTick |
Si la fonction principale manque dans le code exécuté de l'indicateur ou le script, ou le nom de cette fonction se distingue de demandé, l'appel d'une telle fonction n'est pas produit. C'est-à-dire, si dans le code source du script il n'y a pas de fonction OnStart, un tel code sera compilé comme le conseiller.
Si dans le code de l'indicateur il n'y a pas de fonction OnCalculate, la compilation d'un tel indicateur est impossible.
Les variables prédéterminées
A MQL5 il n'y a pas de telles variables prédéterminées comme Ask, Bid, Bars. Les variables Digits et Point ont changé un peu dans l'orthographe, comme c'est montré dans le tableau.
MQL4 |
MQL5 |
---|---|
Digits |
_Digits |
Point |
_Point |
|
_LastError |
|
_Period |
|
_Symbol |
|
_StopFlag |
|
_UninitReason |
L'accès aux séries temporelles
A MQL5 il n'y a pas des séries temporelles prédéterminées Open[], High[], Low[], Close[], Volume[] et Time[]. On peut spécifier la profondeur nécessaire de la série temporelle indépendamment à l'aide des fonctions correspondantes pour l'accès aux séries temporelles.
Les conseillers (les experts)
Les experts dans MQL5 doivent avoir pas absolument la fonction-gestionnaire de l'événement de l'entrée du nouveau tick OnTick, comme c'était à MQL4 (la fonction start dans MQL4 est appellée pour l'exécution à l'entrée du nouveau tick), parce que maintenant les experts dans MQL5 peuvent contenir les fonctions-gestionnaire de quelques types des événements:
- OnTick L'entrée du nouveau tick;
- OnTimer l'événement du minuteur;
- OnTrade - l'événement commercial;
- OnChartEvent Les événements de l'entrée du clavier et de la souris, les événements de la navigation de l'objet graphique, l'événement de la fin de l'édition du texte dans la zone de l'entréé de l'objet LabelEdit;
- OnBookEvent l'événement du changement de l'état du profondeur de marché (Depth of Market).
Les indicateurs d'utilisateur
A MQL4 le nombre de tampons d'indicateur est limitée et ne peut pas être plus que 8. Il n'y a pas de tel bornage dans MQL5, mais il faut se rappeler que chaque tampon d'indicateur demande la sélection du volume défini de la mémoire vive sous son placement dans le terminal, c'est pourquoi il ne faut pas abuser d'une nouvelle possibilité ouverte quand même.
En outre, dans MQL4 il y avait seulement 6 types du dessin de l'indicateur d'utilisateur, dans MQL5 maintenant il y a 18 styles du dessin. Et bien que les noms des aspects du dessin n'ont pas changé, l'idéologie de l'image graphique des indicateurs a changé beaucoup.
Se distingue également la direction de l'indexation dans les tampons d'indicateur. Dans MQL5 tous les tampons se comportent par défaut comme les tableaux ordinaires, c'est-à-dire l'élément avec l'index 0 est plus vieil à l'histoire, à l'augmentation de l'index nous nous avançons des données les plus vieilles vers les données dernières.
La seule fonction du travail avec les indicateurs d'utilisateur, qui a été préservé de MQL4 c'est SetIndexBuffer. Mais son appel a changé aussi, maintenant il faut indiquer le type de données, qui se trouveront dans le tableau , lié au tampon d'indicateur.
En outre ont changé et se sont élargies les propriétés des indicateurs d'utilisateur, il y avait des fonctions de l'accès aux séries temporelles, c'est pourquoi il est nécessaire entièrement de repenser tout l'algorithme de calcul.
Les objets graphiques
Le nombre d'objets graphiques à MQL5 s'est élargie beaucoup. En outre le positionnement des objets graphiques dans le temps est devenu possible avec l'exactitude d'une seconde dans un graphique de n'importe quelle période maintenant on ne produit pas l'arrondissement des points d'attachement des objets graphiques avec l'exactitude jusqu'au temps de l'ouverture de la barre sur le graphique du prix courant.
Pour les objets Arrow, Text et Label il y avait une possibilité d'indiquer le moyen du rattachement, et pour les objets Label, Button, Chart, Bitmap Label et Edit il y a la possibilité de spécifier l'angle du graphique, auquel l'objet est attaché.