funcionalidad. ¿Cómo va a repercutir en el entorno de negociación la creación o modificación de una variable global?
¿Puede explicar qué representa el valor numérico de las variables globales?
Durante bastante tiempo he estado investigando y tratando de entender las variables globales de la terminal, aunque hasta ahora no he entendido su uso y efecto. Si es posible, ¿podría darme un ejemplo sencillo de cómo la creación de una variable global puede tener un resultado positivo en el saldo de mi cuenta de operaciones?
Muchas gracias.
Saludos,
Dale.
Artículo publicado Fundamentos de la programación MQL5 - Variables terminales globales:
Autor: Dennis Kirichenko
① Asignación:
Quieres escribir y leer variables globales (comúnmente llamadas variables globales) para archivos txt externos en MT4 / MT5, que es una herramienta de comercio de divisas proporcionada por MetaQuotes.
② Estado:
Me gustaría implementar esto usando las clases CGlobalVar.mqh y CGlobalVarList.mqh descritas en la página de referencia a continuación.
(En concreto, realiza una escritura / lectura de una variable global utilizando el método Save () / Load () de la clase CGLobalVarList).
Básicamente no utiliza la API de Windows (HANDLE CeateFile W (), etc.). Д.).
③ Ubicación de almacenamiento del archivo de operación:
La posición por defecto del archivo de destino sigue la especificación de esta clase
/ Archivos
o
Se almacena cuando se especifica FILE_COMMON como argumento de FileOpen ()
C: \ { Usuario \ Nombre de usuario \ AppData \ Roaming \ MetaQuotes \ Terminal \ Common \ Archivos \ Archivo
Y uno de.
④ Archivos creados:
Dos archivos de secuencia de comandos simples como muestras experimentales
WriteGlobalParameters.mq4
и
ReadGlobalParameters.mq4.
Fue creado por.
※ observaciones
① Si sólo se trata de compartir una variable global con otro terminal, puedes pensar en el método de usar memoria compartida, etc. etc. Sin embargo, esta vez sólo piensa en el método usando el archivo txt externo.
② En cuanto al archivo (WriteGlobalParamaeters.mq 4) en el lado de exportación, utilizando las funciones incorporadas MQL GlobalVariablesTotal (), GlobalVariableName (), GlobalVariableName (), GlobalVariableGet (), GlobalVariableTime (), no utilizando Guardar (HANDLE) Escribir utilizando la función WriteFile () (↓).
For (int i = GlobalVariablesTotal () - 1; i> = 0; i -) {
cadena gName = GlobalVariableName (i);
if (this.CheckGlobalVar (gName)) continue;
double gValue = GlobalVariableGet (gName);
datetime gTime = GlobalVariableTime (gName);
WriteFile (hFile, gName, gValue, gTime);
}, Era posible escribir la lista de variables en un fichero txt en el directorio especificado.
Sin embargo, en el caso del grupo de funciones GlobalVariable anterior, aunque se podía escribir, no se puede añadir a la lista de variables globales de lectura y terminal, por lo que se deja fuera.
#### Problemas encontrados - Mensaje de error
WriteGlobalParameters.mq 4 Lado:
2018.05.26 22: 34: 45.283 WriteGlobalParameters EURUSD, M1: uninit reason 0
2018.05.26 22: 34: 45.283 WriteGlobalParameters EURUSD, M1: File save error
2018.05.26 22: 34: 45.282 WriteGlobalParameters EURUSD, M1: Error creando puntero
ReadGlobalParameters.mq 4 Lado:
2018.05.26 22: 43: 08.397 ReadGlobalParameters EURUSD, M1: unclear reason 0
2018.05.26 22: 43: 08.397 ReadGlobalParameters EURUSD, M1: Error de creación de puntero
* Del mensaje de error anterior
Está claro que la operación prevista falla debido a defectos en la especificación del puntero y a un funcionamiento inadecuado del archivo,
Dado que no se sabe dónde está el problema en el siguiente código, me gustaría hablar de este punto (así como la razón 0 poco clara)
```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>
//+------------------------------------------------------------------+
//| Función de inicio del programa de script
//+------------------------------------------------------------------+
void OnStart(){
//Nombre de archivo
string FileName="Escribir";
string FileType="txt";
string file=NombreArchivo+". "+TipoArchivo;
//Puntero
CGlobalVarList *list = new CGlobalVarList;
if(lista!=NULL){
Print("Error de creación de puntero");
}
//Handle
int hFile;
hFile=FileOpen(fichero,FILE_WRITE|FILE_COMMON); //FILE_CSV|FILE_UNICODE
if(hFile>=0){
if(!list.Save(hFile)){
Print("Error al guardar el archivo");
borrar lista;
FileClose(hFile);
}
//Cerrar
FileClose(hFichero);
}
//Liberar el puntero
borrar lista;
}
==========================================================================
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>
//+------------------------------------------------------------------+
//| Función de inicio del programa de script
//+------------------------------------------------------------------+
void OnStart(){
//Nombre de archivo
string FileName="Leer";
string FileType="txt";
string file=NombreArchivo+". "+TipoArchivo;
//Puntero
CGlobalVarList *list = new CGlobalVarList;
if(lista!=NULL){
Print("Error de creación de puntero");
}
//Handle
int hFile;
hFile=FileOpen(fichero,FILE_READ|FILE_COMMON); //FILE_CSV|FILE_UNICODE
if(hFile>=0){
if(!list.Load(hFile)){
Print("Error de carga de archivo");
borrar lista;
FileClose(hFile);
}
//Cerrar
FileClose(hFichero);
}
//Liberar el puntero
borrar lista;
}
### He intentado
起動 Habilitar MT 4 y registrar nombres arbitrarios y valores numéricos (0,0 o 1,0 fácilmente en Coco) a la lista de variables globales en el terminal.
(El tiempo no se establece ya que se establece automáticamente al registrar)
================================================== ===============
En primer lugar desde el lado Write GlobalParameters.mq4 ---
① WriteGlobalParameters.mq4 se aplica al gráfico con la configuración ⓪.
→ Si funciona correctamente, el archivo se crea en el directorio especificado anteriormente y se debe introducir la información de la variable global.
② Si se comprueba el directorio (C: \ Usuario \ Usuario - Nombre \ AppData \ Roaming \ MetaQuotes \ Terminal \ Common \ Files \),
El especificado "Write.txt" fue creado, pero el tamaño del archivo es de 0 kilobytes.
→ Cuando lo abrí, por supuesto, el nombre y el valor de la variable global no se introdujeron.
================================================== ================
A continuación en ReadGlobalParameters.mq 4 lado ---
③ Creé un archivo "Read.txt" para leer una variable global con un nombre arbitrario y un valor numérico en el mismo directorio que 2
(Creamos y probamos dos tipos de nombres/números/timestamps, split (sin especificar) y split tab (especificando "\ t" en FileOpen ())))
④ Similar a ①, incluso aplicando ReadGlobalParameters.mq4 al gráfico, el mensaje de error anterior y la apertura de la lista de variables globales en el terminal también estaba vacía.
================================================== ================
※ observaciones
Como medida de precaución, hicimos el mismo experimento con FILE_CSV, FILE_UNICODE, FILE_BIN y FILE_ANSI, que están configurados por defecto para la función FileOpen (), pero el resultado no cambió.
- www.mql5.com
Ahora las variables globales son solo dobles.
Puede usar un objeto CMap con un elemento como key:value pair.
O utilizar Array o lista ..... O usar un Array o una lista como Variable Global.
O utilizar un puntero a una memoria como variable global.
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Artículo publicado Principios de programación en MQL5 - Variables golbales del terminal:
Autor: Dennis Kirichenko