fonctionnalité. Comment la création ou la modification d'une variable globale peut-elle avoir un impact sur l'environnement de trading ?
Pouvez-vous expliquer ce que représente la valeur numérique des variables globales ?
Cela fait un certain temps que je fais des recherches et que j'essaie de comprendre les variables globales du terminal, bien que je n'aie pas encore compris leur utilisation et leurs effets. Si possible, pourriez-vous me donner un exemple simple de la façon dont la création d'une variable globale peut avoir un résultat positif sur le solde de mon compte de trading ?
Je vous remercie.
Je vous prie d'agréer, Madame, Monsieur, l'expression de mes salutations distinguées,
Dale.
Article publié Principes de base de la programmation MQL5 - Variables globales du terminal:
Auteur : Dennis Kirichenko
① Assignation :
Vous voulez écrire et lire des variables globales (communément appelées variables globales) pour des fichiers txt externes dans MT4 / MT5, qui est un outil de trading de devises fourni par MetaQuotes.
② État :
J'aimerais implémenter ceci en utilisant les classes CGlobalVar.mqh et CGlobalVarList.mqh décrites dans la page de référence ci-dessous.
(Spécifiquement, il effectue une écriture / lecture d'une variable globale en utilisant la méthode Save () / Load () de la classe CGLobalVarList).
En principe, il ne faut pas utiliser l'API Windows (HANDLE CeateFile W (), etc.). Д.).
③ Emplacement du fichier d'opération :
La position par défaut du fichier de destination suit la spécification de cette classe
/ Fichiers
ou
Il est stocké lorsque FILE_COMMON est spécifié comme argument de FileOpen ()
C : \ {Utilisateur \N-Nom d'utilisateur \NApplication \NRoute \NMétaQuotes \NTerminal \NCommun \NFichiers \NFichier
Et l'un d'entre eux.
④ Fichiers créés :
Deux fichiers scripts simples comme échantillons expérimentaux
WriteGlobalParameters.mq4
и
ReadGlobalParameters.mq4.
Il a été créé par.
※ remarques
① Si le seul but est de partager une variable globale avec un autre terminal, vous pouvez penser à la méthode d'utilisation de la mémoire partagée, etc. etc. Cependant, cette fois-ci, pensez seulement à la méthode utilisant le fichier txt externe.
② En ce qui concerne le fichier (WriteGlobalParamaeters.mq 4) du côté de l'exportation, en utilisant les fonctions MQL intégrées GlobalVariablesTotal (), GlobalVariableName (), GlobalVariableName (), GlobalVariableGet (), GlobalVariableTime (), sans utiliser Save (HANDLE) Write en utilisant la fonction WriteFile () (↓).
For (int i = GlobalVariablesTotal () - 1 ; i> = 0 ; i -) {
string gName = GlobalVariableName (i) ;
if (this.CheckGlobalVar (gName)) continue ;
double gValue = GlobalVariableGet (gName) ;
datetime gTime = GlobalVariableTime (gName) ;
WriteFile (hFile, gName, gValue, gTime) ;
}, Il était possible d'écrire la liste des variables dans un fichier txt dans le répertoire spécifié.
Cependant, dans le cas du groupe de fonctions GlobalVariable ci-dessus, même s'il a pu être écrit, il ne peut pas être ajouté à la liste des variables globales de lecture et de terminal, et il est donc laissé de côté.
#### Problèmes rencontrés - Message d'erreur
WriteGlobalParameters.mq 4 Côté :
2018.05.26 22 : 34 : 45.283 WriteGlobalParameters EURUSD, M1 : uninit reason 0
2018.05.26 22 : 34 : 45.283 WriteGlobalParameters EURUSD, M1 : Erreur d'enregistrement de fichier
2018.05.26 22 : 34 : 45.282 WriteGlobalParameters EURUSD, M1 : Erreur de création du pointeur
ReadGlobalParameters.mq 4 Side :
2018.05.26 22 : 43 : 08.397 ReadGlobalParameters EURUSD, M1 : unclear reason 0
2018.05.26 22 : 43 : 08.397 ReadGlobalParameters EURUSD, M1 : Erreur de création de pointeur
* A partir du message d'erreur ci-dessus
Il est clair que l'opération prévue échoue en raison de défauts dans la spécification du pointeur et d'une opération de fichier inadéquate,
Comme on ne sait pas où se situe le problème dans le code suivant, j'aimerais parler de ce point (ainsi que de la raison 0 qui n'est pas claire)
```MQL4/MQL5.
WriteGlobalParameters.mq4>
//+------------------------------------------------------------------+
//| WriteGlobalParameters.mq4 |
//| Copyright 2018, MetaQuotes Software Corp.
/ /| http s://www.mql5.com
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link"https://www.mql5.com"
#property version "1.00"
#include <Arrays\List.mqh>
#include <CGlobalVar.mqh>
#include <CGlobalVarList.mqh>
//+------------------------------------------------------------------+
//| Fonction de démarrage du programme de script
//+------------------------------------------------------------------+
void OnStart(){
//Votre nom de fichier
string FileName="Write" ;
string FileType="txt" ;
string file=NomFichier+". "+TypeFichier ;
//Pointer
CGlobalVarList *list = new CGlobalVarList ;
if(list!=NULL){
Print("Erreur de création de pointeur") ;
}
//Handle
int hFile ;
hFile=FileOpen(file,FILE_WRITE|FILE_COMMON) ; //FILE_CSV|FILE_UNICODE
if(hFile>=0){
if(!list.Save(hFile)){
Print("Erreur d'enregistrement du fichier") ;
supprimer la liste ;
FileClose(hFile) ;
}
//Fermer
FileClose(hFile) ;
}
/Relâcher le pointeur
supprimer la liste ;
}
==========================================================================
ReadGlobalParameters.mq4>
//+------------------------------------------------------------------+
//| ReadGlobalParameters.mq4 |
//| Copyright 2018, MetaQuotes Software Corp.
/ /| http s://www.mql5.com
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link"https://www.mql5.com"
#property version "1.00"
#include <Arrays\List.mqh>
#include <CGlobalVar.mqh>
#include <CGlobalVarList.mqh>
//+------------------------------------------------------------------+
//| Fonction de démarrage du programme de script
//+------------------------------------------------------------------+
void OnStart(){
//Votre nom de fichier
string FileName="Read" ;
string FileType="txt" ;
string file=NomFichier+". "+TypeFichier ;
//Pointer
CGlobalVarList *list = new CGlobalVarList ;
if(list!=NULL){
Print("Erreur de création de pointeur") ;
}
//Handle
int hFile ;
hFile=FileOpen(file,FILE_READ|FILE_COMMON) ; //FILE_CSV|FILE_UNICODE
if(hFile>=0){
if(!list.Load(hFile)){
Print("Erreur de chargement de fichier") ;
supprimer la liste ;
FileClose(hFile) ;
}
//Fermer
FileClose(hFile) ;
}
/Relâcher le pointeur
supprimer la liste ;
}
### J'ai essayé
起動 Activer MT 4 et enregistrer des noms arbitraires et des valeurs numériques (0.0 ou 1.0 facilement dans Coco) dans la liste des variables globales sur le terminal.
(L'heure n'est pas définie car elle l'est automatiquement lors de l'enregistrement)
================================================== ===============
D'abord du côté de Write GlobalParameters.mq4 ---
① WriteGlobalParameters.mq4 est appliqué au graphique avec le réglage ⓪.
→ Si cela fonctionne correctement, le fichier est créé dans le répertoire spécifié ci-dessus et les informations de la variable globale doivent être saisies.
② Si vous vérifiez le répertoire (C : \NUtilisateur \NNNom de l'utilisateur \NAppData \NImmobilité \NMetaQuotes \NTerminal \NCommun \NFichiers \N), le fichier est créé dans le répertoire spécifié ci-dessus et les informations de la variable globale doivent être saisies,
Le fichier spécifié "Write.txt" a été créé, mais sa taille est de 0 kilo-octet.
→ Lorsque je l'ai ouvert, le nom et la valeur de la variable globale n'ont pas été saisis.
================================================== ================
Suivant sur ReadGlobalParameters.mq 4 side ---
③ J'ai créé un fichier "Read.txt" pour lire une variable globale avec un nom arbitraire et une valeur numérique dans le même répertoire que 2
(Nous avons créé et testé deux types de noms/nombres/horodatages, split (non spécifié) et split tab (en spécifiant "\ t" dans FileOpen ()))))).
④ Comme pour ①, même en appliquant ReadGlobalParameters.mq4 au graphique, le message d'erreur ci-dessus et l'ouverture de la liste des variables globales sur le terminal étaient également vides.
================================================== ================
※ remarques
Par précaution, nous avons fait la même expérience avec FILE_CSV, FILE_UNICODE, FILE_BIN et FILE_ANSI, qui sont définis par défaut pour la fonction FileOpen (), mais le résultat n'a pas changé.
- www.mql5.com
Désormais, les variables globales sont uniquement des doubles.
Vous pouvez utiliser un objet CMap avec un élément comme une paire clé/valeur.
Ou utiliser un tableau ou une liste ..... Ou utiliser un tableau ou une liste comme variable globale.
Ou utiliser un pointeur sur une mémoire comme variable globale.
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
Un nouvel article Les bases de la programmation MQL5 : Variables globales du terminal a été publié :
Cet article met en évidence les capacités orientées objet du langage MQL5 pour créer des objets facilitant le travail avec les variables globales du terminal. Comme exemple pratique, je considère un cas où des variables globales sont utilisées comme points de contrôle pour la mise en œuvre des étapes du programme.
Le résultat d'un test similaire pour les variables globales complètes est présenté sur la Fig.3. Leur création ne prend pas beaucoup plus de temps.
La raison en est que ces variables sont enregistrées sur le disque dans le fichier gvariables.dat situé dans le dossier Profiles.
Fig.3. Temps passé à créer des variables globales complètes
Je ne pense pas qu'il soit nécessaire de créer autant de variables globales. J'ai fait cette évaluation par simple curiosité.
Dans le prochain passage, nous allons travailler avec un ensemble de variables globales.
Auteur : Denis Kirichenko