- Descripción de recursos mediante la directiva #resource
- Uso compartido de recursos de distintos programas MQL
- Variables de recursos
- Conectar indicadores personalizados como recursos
- Creación de recursos dinámicos: ResourceCreate
- Eliminar recursos dinámicos: ResourceFree
- Leer y modificar datos de recursos: RecursoReadImage
- Guardar imágenes en un archivo: ResourceSave
- Fuentes y salida de texto a recursos gráficos
- Aplicación de recursos gráficos en trading
Uso compartido de recursos de distintos programas MQL
El nombre del recurso es único en todo el terminal. Más adelante aprenderemos a crear recursos no en la fase de compilación (mediante la directiva #resource), sino de forma dinámica, utilizando la función ResourceCreate. En cualquier caso, el recurso se declara en el contexto del programa que lo crea, de modo que la unicidad del nombre completo se proporciona automáticamente mediante la vinculación al sistema de archivos (ruta y nombre de un archivo específico ex5).
Además de contener y utilizar recursos, un programa MQL también puede acceder a los recursos de otro programa compilado (archivo ex5). Esto es posible siempre que el programa que utiliza el recurso conozca la ruta de ubicación y el nombre de otro programa que contenga el recurso necesario, así como el nombre de este recurso.
Así, el terminal proporciona una importante propiedad de los recursos que es su uso compartido: los recursos de un archivo ex5 pueden utilizarse en muchos otros programas.
Para utilizar un recurso de un archivo ex5 de terceros, debe especificarse con la forma «ruta_nombre_archivo.ex5::nombre_recurso». Por ejemplo, supongamos que el script DrawingScript.mq5 hace referencia a un recurso de imagen especificado en el archivo triangle.bmp:
#resource "\\Files\\triangle.bmp" |
Entonces su nombre para el uso en el script real se verá como «::Files\\triangle.bmp».
Para utilizar el mismo recurso desde otro programa, por ejemplo, un Asesor Experto, el nombre del recurso debe ir precedido de la ruta del archivo de script ex5 relativa a la carpeta MQL5 en el directorio de datos del terminal, así como el nombre del propio script (en la forma compilada, DrawingScript.ex5). Dejemos que el script esté en la carpeta estándar MQL5/Scripts/. En este caso, se debe acceder a la imagen utilizando la cadena «\\Scripts\DrawingScript.ex5::Files\\triangle.bmp». La extensión «.ex5» es opcional.
Si, al acceder al recurso de otro archivo ex5, no se especifica la ruta a este archivo, se busca dicho archivo en la misma carpeta en la que se encuentra el programa que solicita el recurso. Por ejemplo, si suponemos que el mismo Asesor Experto se encuentra en la carpeta estándar MQL5/Experts/ y consulta un recurso sin especificar la ruta (por ejemplo, «DrawingScript.ex5::Files\\triangle.bmp»), entonces DrawingScript.ex5 se buscará en la carpeta MQL5/Experts/.
Debido al uso compartido de los recursos, su creación y actualización dinámicas pueden utilizarse para intercambiar datos entre programas MQL. Esto ocurre directamente en la memoria y, por lo tanto, es una buena alternativa a los archivos o variables globales.
Tenga en cuenta que, para cargar un recurso desde un programa MQL, no es necesario ejecutarlo: para leer recursos basta con tener un archivo ex5 con recursos.
Una excepción importante en la que no es posible compartir informes es cuando un recurso se describe en forma de variable de recursos.