Discusión sobre el artículo "Principios de programación en MQL5: Variables globales del terminal" - página 3
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Se puede solucionar mediante prefijos de variables globales.
Buenos artículos para principiantes.
The GlobalVariableTemp() function creates a temporary global variable (that exists till the terminal is stopped). In a few years that I develop EAs on MQL5, I have never faced the need for such a variable. Moreover, the very concept of a temporary global variable contradicts the basic principle of their application — long-term data storage not affected by the terminal relaunches.
Ese no es el único uso de las Variables Globales del Terminal. También se pueden utilizar para intercambiar información entre diferentes EAs o indicadores. Así que en tal caso podría ser una característica para tener datos sólo en la memoria y no se mantiene de reinicio de la terminal.
La parte del mutex es muy interesante, tengo una pregunta y una observación.
Puede ocurrir que algún EA sea eliminado de un gráfico durante la ejecución de la función OnTick() pero la función Mutex_Release() no se ejecuta.
¿Cómo es posible que se elimine un EA y no se ejecute la función Mutex_Release()? Si elimina un EA de un gráfico de forma normal (cerrar gráfico, eliminar EA o cerrar terminal), nunca se detendrá el flujo de ejecución. ¿Me estoy perdiendo algo?
Así que mi comentario, la única manera de que Mutex_Release() no se ejecute es con una parada "dura", fallo de alimentación o hardware, etc..., así que eso hace que tus variables globales mutex sean un candidato perfecto para ser creadas como temporales usando GlobalVariableTemp().
¿Funcionan las variables globales durante el Probador de Estrategias?
Por ejemplo, cuando un indicador almacena valores en una VG y un EA los lee, ¿obtendrá el Probador de Estrategias los valores durante la simulación a tiempo?
¿Funcionan las variables globales durante las pruebas de estrategia?
Por ejemplo, cuando un indicador almacena valores en una VG y un EA los lee, ¿obtendrá el Probador de Estrategias los valores durante la simulación a tiempo?
Sí
"Es posible que las variables globales desaparezcan cuando se desconecta bruscamente el ordenador".Tengo variables globales desaparecieron después de cerrar mt5 terminal bild 2361. GlobalVariablesFlush() se ejecuta en 2 terminales MT5 diferentes. No tiene sentido. Los terminales se lanzan con la tecla /portable, ¿quizás esta sea la razón?
Intenté crear a mano, abrí y cerré la terminal, parece que se guarda. Hice escribir los resultados de la optimización automática en los globales, y este es un proceso muy largo. Así que no es un almacenamiento tan fiable. Voy a tener que añadir un procedimiento para escribir variables globales en el archivo a través de estructuras.
Tengo variables globales desaparecieron después de cerrar mt5 terminal bild 2361. GlobalVariablesFlush() se ejecuta en 2 terminales MT5 diferentes. No tiene sentido. Los terminales se lanzan con la tecla /portable, ¿quizás esa sea la razón?
Intenté crear a mano, abrí y cerré la terminal, parece que se guarda. Hice escribir los resultados de la optimización automática en los globales, y esto es un proceso muy largo. Así que no es un almacenamiento tan fiable. Voy a tener que añadir un procedimiento para escribir variables globales en el archivo a través de estructuras.
¿En la terminal o en el tester? Hay una diferencia en MT5.
¿En el terminal o en el probador? Hay una diferencia en MT5.
En el terminal.
En general, resolví el problema de la siguiente manera. En la clase que se ocupa de la auto-optimización para el Asesor Experto, además de crear variables globales, también escribí datos idénticos en archivos para cada par de divisas (los archivos preliminares se borran cada vez al iniciar la clase, ya que la clase se llama sólo para el recálculo, por lo que en cualquier caso los datos deben ser actualizados). Los archivos son archivos de texto ordinario, los nombres de los archivos están codificados para una instancia específica del Asesor Experto. Durante la inicialización, el EA llama a la función de lectura de datos de optimización de los archivos y la creación o actualización de variables globales.
También es conveniente porque los archivos pueden ser respaldados y utilizados cuando se ejecuta en el probador de estrategias (los archivos naturalmente se encuentran en una carpeta común de terminales), ya que el probador crea sus propias instancias de variables globales, y la optimización automática en sí es un proceso largo y la carga de datos listos de los archivos reduce significativamente el tiempo de prueba.
Hola Dmitry,
¡Me doy cuenta de que tu artículo es de hace unos años, pero pensé que podría compartir algo y espero que también hacer una pregunta!
Así que usted menciona que usted no ha encontrado el uso de la Temp Global Var. Estoy desarrollando algo que requiere que exactamente. Me estaba rompiendo la cabeza tratando de encontrar una manera de implementar el intercambio de IO Completion Port manejar a través de Variables Globales, en particular, en el accidente, o reinicio normal. Estoy diseñando un sistema de gestión de pedidos utilizando Windows IO Completion Ports. Como podemos crear hilos Win32 desde MQL5, no puedo crear un pool de hilos mientras creo el Servidor IOCP, asi que mi solución usando Servicios es;
En el caso de que el terminal se reinicie, anormalmente o de otra manera, quiero que el IOCP Handle haya desaparecido en el arranque del terminal, así puedo crear un nuevo IOCP Handle para un nuevo arranque. Es una implementación mucho más limpia.
También me preguntaba, ¿cómo de rápidas son las Variables Globales, y cómo de fiables son?
Gracias por el gran artículo, fue una gran lectura,
Shep
Nuevo artículo Fundamentos de programación MQL5: Variables Globales del Terminal ha sido publicado:
Autor: Dmitry Fedoseev