ChartScreenShot

Esta función proporciona la captura de pantalla del gráfico especificado en su estado actual en formato GIF, PNG o BMP, dependiendo de la extensión especificada.

bool  ChartScreenShot(
   long             chart_id,                   // identificador del gráfico
   string           filename,                   // nombre del archivo
   int              width,                      // ancho
   int              height,                     // alto
   ENUM_ALIGN_MODE  align_mode=ALIGN_RIGHT      // tipo de alineación
   );

Parámetros

chart_id

[in]  Identificador del gráfico. 0 significa el gráfico actual.

filename

[in]  Nombre del archivo de screenshot. No puede ser más de 63 símbolos. El archivo se coloca en el directorio \Files.

width

[in]  Ancho de screenshot en píxeles.

height

[in]  Alto de screenshot en píxeles.

align_mode=ALIGN_RIGHT

[in]  Modo output de un screenshot estrecho. Valor de enumeración ENUM_ALIGN_MODE. ALIGN_RIGHT significa la alineación por el margen derecho (output desde el final). ALIGN_LEFT significa la alineación por la izquierda.

Valor devuelto

Devuelve true en caso de éxito, de lo contrario devuelve false.

Nota

Si hace falta tomar un screenshot del gráfico desde una posición concreta, primero hay que posicionar el gráfico usando la función ChartNavigate(). Si el tamaño horizontal del screenshot es menos que la ventana del gráfico, se toma la parte derecha o izquierda de la ventana del gráfico dependiendo del parámetro align_mode.

Ejemplo:

#property description "El Asesor Experto muestra cómo se crea una serie de screenshots del gráfico actual"
#property description "utilizando la función ChartScreenShot(). Para que sea más cómodo, el nombre del archivo también"
#property description "se visualiza en el gráfico. Las macros determinan el alto y el ancho de las imágenes."
 
#define        WIDTH  800     // ancho de la imagen para llamar a ChartScreenShot()
#define        HEIGHT 600     // alto de la imagen para llamar a ChartScreenShot()
 
//--- input parameters
input int      pictures=5;    // número de imágenes en la serie
int            mode=-1;       // -1 significa el desplazamiento hacia el lado derecho del gráfico, 1 - hacia el lado izquierdo
int            bars_shift=300;// número de barras durante el desplazamiento del gráfico con la función ChartNavigate()
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
void OnInit()
  {
//--- desactivamos el desplazamiento automático del gráfico
   ChartSetInteger(0,CHART_AUTOSCROLL,false);
//--- establecemos la sangría del borde derecho del gráfico
   ChartSetInteger(0,CHART_SHIFT,true);
//--- mostramos el gráfico como una secuencia de velas japonesas
   ChartSetInteger(0,CHART_MODE,CHART_CANDLES);
//---
   Print("La preparación del EA para el trabajo está finalizada");
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
 
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//--- mostrar el nombre de la función, hora de la llamada y el identificador del evento
   Print(__FUNCTION__,TimeCurrent(),"   id=",id,"   mode=",mode);
//--- procesamiento del evento CHARTEVENT_CLICK ("Clic del ratón en el gráfico")
   if(id==CHARTEVENT_CLICK)
     {
      //--- desplazamiento inicial del borde del gráfico
      int pos=0;
      //--- modo de trabajo con el borde izquierdo del gráfico
      if(mode>0)
        {
         //--- desplazamos el gráfico hacia el borde izquierdo
         ChartNavigate(0,CHART_BEGIN,pos);
         for(int i=0;i<pictures;i++)
           {
            //--- preparamos el texto a mostrar en el gráfico y el nombre para el archivo
            string name="ChartScreenShot"+"CHART_BEGIN"+string(pos)+".gif";
            //--- mostramos el nombre en el gráfico en forma del comentario
            Comment(name);
            //--- guardamos el screenshot del gráfico en la carpeta directorio_del_terminal\MQL5\Files\
            if(ChartScreenShot(0,name,WIDTH,HEIGHT,ALIGN_LEFT))
               Print("Hemos guardado el screenshot ",name);
            //---
            pos+=bars_shift;
            //--- dejamos al usuario tiempo para que mire una nueva área del gráfico
            Sleep(3000);
            //--- desplazamos el gráfico a bars_shift a la derecha de su posición actual
            ChartNavigate(0,CHART_CURRENT_POS,bars_shift);
           }
         //--- cambio del modo al opuesto
         mode*=-1;
        }
      else // modo de trabajo con el borde derecho del gráfico
        {
         //--- desplazamos el gráfico hacia el borde derecho
         ChartNavigate(0,CHART_END,pos);
         for(int i=0;i<pictures;i++)
           {
            //--- preparamos el texto a mostrar en el gráfico y el nombre para el archivo
            string name="ChartScreenShot"+"CHART_END"+string(pos)+".gif";
            //--- mostramos el nombre en el gráfico en forma del comentario
            Comment(name);
            //--- guardamos el screenshot del gráfico en la carpeta directorio_del_terminal\MQL5\Files\
            if(ChartScreenShot(0,name,WIDTH,HEIGHT,ALIGN_RIGHT))
               Print("Hemos guardado el screenshot ",name);
            //---
            pos+=bars_shift;
            //--- dejamos al usuario tiempo para que mire una nueva área del gráfico
            Sleep(3000);
            //--- desplazamos el gráfico a bars_shift a la derecha de su posición actual
            ChartNavigate(0,CHART_CURRENT_POS,-bars_shift);
           }
         //--- cambio del modo al opuesto
         mode*=-1;
        }
     }  // fin del procesamiento del evento CHARTEVENT_CLICK
//--- fin del manejador OnChartEvent()  
  }

Véase también

ChartNavigate(), Recursos