- Funciones para obtener las propiedades básicas del gráfico actual
- Identificación de gráficos
- Obtener la lista de gráficos
- Obtener el símbolo y el marco temporal de un gráfico arbitrario
- Visión general de funciones para trabajar con el conjunto completo de propiedades
- Propiedades descriptivas de los gráficos
- Comprobar el estado de la ventana principal
- Obtener el número y la visibilidad de las ventanas/subventanas
- Modos de visualización de gráficos
- Gestionar la visibilidad de los elementos del gráfico
- Desplazamientos horizontales
- Escala horizontal (por tiempo)
- Escala vertical (por precio y lecturas del indicador)
- Colores
- Control del ratón y del teclado
- Desacoplar la ventana del gráfico
- Obtener las coordenadas de caída del programa MQL en un gráfico
- Conversión de coordenadas de pantalla a tiempo/precio y viceversa
- Desplazamiento de gráficos por el eje temporal
- Solicitud para volver a dibujar el gráfico
- Cambiar símbolo y marco temporal
- Gestionar indicadores en el gráfico
- Abrir y cerrar gráficos
- Trabajar con plantillas de gráficos tpl
- Guardar la imagen de un gráfico
Guardar la imagen de un gráfico
En los programas MQL, a menudo se hace necesario documentar el estado actual del propio programa y del entorno de trading. Por regla general, para ello se utiliza la salida de diversos indicadores analíticos o financieros al diario, pero algunas cosas se representan más claramente con la imagen del gráfico; por ejemplo, en el momento de la transacción. La API de MQL5 incluye una función que permite guardar la imagen de un gráfico en un archivo.
bool ChartScreenShot(long chartId, string filename, int width, int height,
ENUM_ALIGN_MODE alignment = ALIGN_RIGHT)
La función toma una instantánea del gráfico especificado en formato GIF, PNG o BMP dependiendo de la extensión en la línea con el nombre del archivo filename (máximo 63 caracteres). La captura de pantalla se coloca en el directorio MQL5/Files.
Los parámetros width y height establecen la anchura y la altura de la imagen en píxeles.
El parámetro alignment influye en qué parte del gráfico se incluirá en el archivo. El valor ALIGN_RIGHT (por defecto) significa que la instantánea se toma para los precios más recientes (esto puede concebirse como que el terminal hace una transición silenciosamente al pulsar End antes de la instantánea). El valor ALIGN_LEFT garantiza que las barras aparezcan en la imagen, empezando por la primera barra visible a la izquierda en ese momento. Por lo tanto, si necesita hacer una captura de pantalla de un gráfico desde una posición determinada, primero debe posicionar el gráfico manualmente o con ayuda de la función ChartNavigate.
La función ChartScreenShot devuelve true en caso de éxito.
Vamos a probar la función en el script ChartPanorama.mq5. Su tarea es guardar una copia del gráfico desde la barra visible a la izquierda hasta la hora actual. Desplazando primero el inicio del gráfico hasta la profundidad deseada del historial se puede obtener un panorama bastante extenso. En este caso, no es necesario pensar qué ancho de imagen elegir. No obstante, tenga en cuenta que un historial demasiado largo requerirá una imagen enorme, que podría superar las capacidades del formato gráfico o del software.
La altura de la imagen se determinará automáticamente igual a la altura actual del gráfico.
void OnStart()
|
También podríamos utilizar el modo ALIGN_RIGHT, pero entonces tendríamos que forzar la desactivación del desplazamiento desde el borde derecho, ya que se recalcula para la imagen, dependiendo de su tamaño, y el resultado será completamente diferente a como se ve en la pantalla (la sangría a la derecha se hará demasiado grande, ya que se especifica como un porcentaje de la anchura).
A continuación se muestra un ejemplo del registro después de ejecutar el script en el gráfico XAUUSD,H1.
Gutter=2, total=2
|
Teniendo en cuenta la navegación a un historial no muy lejano, se obtuvo la siguiente captura de pantalla (representada como una copia reducida 4 veces):
Panorama del gráfico