funzionalità. In che modo la creazione o la modifica di una variabile globale avrà un impatto sull'ambiente di trading?
Sei in grado di spiegare cosa rappresenta il valore numerico delle variabili globali?
Da un po' di tempo sto facendo ricerche e cercando di capire le variabili globali del terminale, anche se per ora non ne ho compreso l'uso e l'effetto. Se possibile, potreste fornirmi un semplice esempio di come la creazione di una variabile globale possa avere un risultato positivo sul saldo del mio conto di trading?
Grazie.
Distinti saluti,
Dale.
Articolo pubblicato Fondamenti della programmazione MQL5 - Variabili globali del terminale:
Autore: Dennis Kirichenko
① Assegnazione:
Si desidera scrivere e leggere variabili globali (comunemente chiamate variabili globali) per file txt esterni in MT4 / MT5, che è uno strumento di trading di valuta fornito da MetaQuotes.
Stato ②:
Vorrei implementare questa funzione utilizzando le classi CGlobalVar.mqh e CGlobalVarList.mqh descritte nella pagina di riferimento qui sotto.
(In particolare, esegue una scrittura/lettura di una variabile globale utilizzando il metodo Save () / Load () della classe CGLobalVarList).
In pratica non utilizza le API di Windows (HANDLE CeateFile W (), ecc.). Д.).
③ Posizione di memorizzazione del file operativo:
La posizione predefinita del file di destinazione segue le specifiche di questa classe
/ File
o
Viene memorizzato quando FILE_COMMON è specificato come argomento di FileOpen ()
C: \ { Utente \ Nome utente \ AppData \ Roaming \ MetaQuote \ Terminale \ Comune \ File \ File
E uno di.
④ File creati:
Due semplici file di script come esempi sperimentali
ScriviParametriGlobali.mq4
и
ReadGlobalParameters.mq4.
È stato creato da.
※ osservazioni
① Se lo scopo è solo quello di condividere una variabile globale con un altro terminale, si può pensare al metodo di utilizzo della memoria condivisa, ecc. ecc. Tuttavia, questa volta pensate solo al metodo che utilizza il file txt esterno.
② Per quanto riguarda il file (WriteGlobalParamaeters.mq 4) dal lato dell'esportazione, utilizzando le funzioni MQL integrate GlobalVariablesTotal (), GlobalVariableName (), GlobalVariableName (), GlobalVariableGet (), GlobalVariableTime (), non utilizzando Save (HANDLE) Write utilizzando la funzione WriteFile () (↓)
For (int i = GlobalVariablesTotal () - 1; i> = 0; i -) {
string gName = GlobalVariableName (i);
se (this.CheckGlobalVar (gName)) continua;
double gValue = GlobalVariableGet (gName);
datetime gTime = GlobalVariableTime (gName);
WriteFile (hFile, gName, gValue, gTime);
Era possibile scrivere l'elenco delle variabili in un file txt nella directory specificata.
Tuttavia, nel caso del gruppo di funzioni GlobalVariable di cui sopra, anche se è possibile scriverlo, non è possibile aggiungerlo all'elenco delle variabili globali di lettura e di terminale, quindi viene lasciato fuori.
#### Problemi riscontrati - Messaggio di errore
WriteGlobalParameters.mq 4 Side:
2018.05.26 22: 34: 45.283 WriteGlobalParameters EURUSD, M1: uninit reason 0
2018.05.26 22: 34: 45.283 WriteGlobalParameters EURUSD, M1: errore salvataggio file
2018.05.26 22: 34: 45.282 WriteGlobalParameters EURUSD, M1: errore di creazione del puntatore
ReadGlobalParameters.mq 4 Side:
2018.05.26 22: 43: 08.397 ReadGlobalParameters EURUSD, M1: motivo non chiaro 0
2018.05.26 22: 43: 08.397 ReadGlobalParameters EURUSD, M1: errore di creazione del puntatore
* Dal messaggio di errore sopra riportato
È chiaro che l'operazione prevista non riesce a causa di difetti nella specifica del puntatore e di un funzionamento inadeguato del file,
Poiché non è noto dove si trovi il problema nel codice seguente, vorrei parlare di questo punto (così come del poco chiaro motivo 0)
``MQL4/MQL5.
WriteGlobalParameters.mq4>
//+------------------------------------------------------------------+
//| WriteGlobalParameters.mq4 |
//| Copyright 2018, MetaQuotes Software Corp. | |
//| https://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>
#includere <CGlobalVarList.mqh>
//+------------------------------------------------------------------+
//| Funzione di avvio del programma di script |
//+------------------------------------------------------------------+
void OnStart(){
//Il vostro nome di file
string FileName="Write";
string FileType="txt";
string file=NomeFile+". "+FileType;
//Pointer
CGlobalVarList *list = new CGlobalVarList;
if(list!=NULL){
Print("Errore di creazione del puntatore");
}
//Manipolo
int hFile;
hFile=FileOpen(file,FILE_WRITE|FILE_COMMON); //FILE_CSV|FILE_UNICODE
se(hFile>=0){
if(!list.Save(hFile)){
Print("Errore di salvataggio del file");
eliminare l'elenco;
FileClose(hFile);
}
//Chiudere
FileClose(hFile);
}
//Rilasciare il puntatore
eliminare l'elenco;
}
==========================================================================
LeggereParametriGlobali.mq4>
//+------------------------------------------------------------------+
//| ReadGlobalParameters.mq4 |
//| Copyright 2018, MetaQuotes Software Corp. | |
//| https://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>
#includere <CGlobalVarList.mqh>
//+------------------------------------------------------------------+
//| Funzione di avvio del programma di script |
//+------------------------------------------------------------------+
void OnStart(){
//Il vostro nome di file
string FileName="Read";
string FileType="txt";
string file=NomeFile+". "+FileType;
//Pointer
CGlobalVarList *list = new CGlobalVarList;
if(list!=NULL){
Print("Errore di creazione del puntatore");
}
//Manipolo
int hFile;
hFile=FileOpen(file,FILE_READ|FILE_COMMON); //FILE_CSV|FILE_UNICODE
se(hFile>=0){
if(!list.Load(hFile)){
Print("Errore di caricamento del file");
eliminare l'elenco;
FileClose(hFile);
}
//Chiudere
FileClose(hFile);
}
//Rilasciare il puntatore
eliminare l'elenco;
}
### Ho provato
Abilitare MT 4 e registrare nomi arbitrari e valori numerici (0,0 o 1,0 facilmente in Coco) nell'elenco delle variabili globali sul terminale.
(L'ora non viene impostata perché viene impostata automaticamente al momento della registrazione).
================================================== ===============
Prima dal lato Write GlobalParameters.mq4 ---
① WriteGlobalParameters.mq4 viene applicato al grafico con l'impostazione ⓪.
→ Se funziona correttamente, il file viene creato nella directory specificata in precedenza e le informazioni sulle variabili globali devono essere inserite.
Se si controlla la directory (C: \ User \ User - Name \ AppData \ Roaming \ MetaQuotes \ Terminal \ Common \ Files \),
Il file specificato "Write.txt" è stato creato, ma la sua dimensione è di 0 kilobyte.
→ Quando l'ho aperto, ovviamente, il nome e il valore della variabile globale non sono stati inseriti.
================================================== ================
Successivamente su ReadGlobalParameters.mq 4 lato ---
③ Ho creato un file "Read.txt" per leggere una variabile globale con un nome arbitrario e un valore numerico nella stessa directory di 2
(Abbiamo creato e testato due tipi di nomi/numeri/tempi, split (non specificato) e split tab (specificando "\ t" in FileOpen ()))))).
④ Analogamente a ①, anche applicando ReadGlobalParameters.mq4 al grafico, il messaggio di errore precedente e l'apertura dell'elenco delle variabili globali sul terminale risultavano vuoti.
================================================== ================
Osservazioni
Per precauzione, abbiamo fatto lo stesso esperimento con FILE_CSV, FILE_UNICODE, FILE_BIN e FILE_ANSI, che sono impostati di default per la funzione FileOpen (), ma il risultato non è cambiato.

- www.mql5.com
Ora le variabili globali sono solo doppie.
Si può usare l'oggetto CMap con elementi come la coppia chiave:valore.
Oppure utilizzare array o elenchi ..... Oppure utilizzare Array o liste come variabili globali.
Oppure utilizzare un puntatore a una memoria come variabile globale.

- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
Il nuovo articolo Fondamenti di programmazione MQL5: Variabili Globali del Terminale è stato pubblicato:
Questo articolo evidenzia le capacità orientate agli oggetti del linguaggio MQL5 per la creazione di oggetti che facilitano il lavoro con le variabili globali del terminale. Come esempio pratico considero un caso in cui le variabili globali vengono utilizzate come punti di controllo per l'implementazione delle fasi del programma.
Il risultato di un test simile per le variabili globali complete è presentato in Fig.3. La loro creazione non richiede molto più tempo.
Il motivo è che queste variabili vengono salvate sul disco nel file gvariables.dat situato nella cartella Profili.
Fig.3. Tempo speso per creare variabili globali complete
Non credo che sia necessario creare così tante variabili globali. Ho condotto questa valutazione semplicemente per curiosità.
Nel prossimo passaggio lavoreremo con un insieme di variabili globali.
Autore: Denis Kirichenko