ChartScreenShot

La funzione fornisce uno screenshot del grafico nel suo stato corrente nel formato GIF, PNG o BMP a seconda estensione specificata.

bool  ChartScreenShot(
   long             chart_id,                   // ID del Grafico
   string           filename,                   // Nome del Simbol
   int              width,                      // Larghezza
   int              height,                     // Altezza
   ENUM_ALIGN_MODE  align_mode=ALIGN_RIGHT      // Tipo di Allineamento
   );

Parametri

chart_id

[in] ID del Grafico. 0 significa il grafico corrente.

filename

[in] Il nome del file Screenshot. Non può superare i 63 caratteri. I files di Screenshot si trovano nella directory \Files.

width

[in]  Larghezza Screenshot in pixels.

height

[in]  Altezza Screenshot in pixels.

align_mode=ALIGN_RIGHT

[in]  Output mode di uno screenshot sottile. Valore dell'enumerazione ENUM_ALIGN_MODE . ALIGN_RIGHT significa allinea al margine destro (l'output dalla fine). ALIGN_LEFT significa justifica a Sinistra.

Valore restituito

Restituisce true se ha successo, altrimenti false.

Nota

Se avete bisogno di prendere uno screenshot da un grafico a partire da una certa posizione, in primo luogo è necessario posizionare il grafico utilizzando la funzione ChartNavigate(). Se la dimensione orizzontale della schermata è più piccola della finestra del grafico, sia la parte destra della finestra del grafico, che la sua parte sinistra, vengono date in output a seconda delle impostazioni align_mode.

Esempio:

#property description "L'Expert Advisor dimostra come creare una serie di immagini del corrente"
#property description "grafico usando la funzione ChartScreenShot(). Per comodità, il nome del file è "
#property descrizione "mostrata sul grafico. L'altezza e la larghezza delle immagini è definita tramite macro. "
 
#define        WIDTH  800     // Larghezza immagine per chiamare ChartScreenShot()
#define        HEIGHT 600     // Altezza immagine per chiamare ChartScreenShot()
 
//--- parametri di input
input int      pictures=5;    // Il numero di immagini nella serie
int            mode=-1;       // -1 denota uno slittamento al lato destro del grafico, 1 - alla sinistra
int            bars_shift=300;// In numero di barre quando si slitta il grafico usando ChartNavigate()
//+--------------------------------------------------------------------------------+
//| Funzione di inizializzazione dell' Expert                                      |
//+--------------------------------------------------------------------------------+
void OnInit()
  {
//--- Disattiva auto-scorrimento del grafico
   ChartSetInteger(0,CHART_AUTOSCROLL,false);
//--- Imposta lo slittamento del bordo destro del grafico
   ChartSetInteger(0,CHART_SHIFT,true);
//--- Mostra un grafico a candela
   ChartSetInteger(0,CHART_MODE,CHART_CANDLES);
//---
   Print("La preparazione dell'Expert Advisor è completa");
  }
//+--------------------------------------------------------------------------------+
//| Funzione tick dell'Expert                                                      |
//+--------------------------------------------------------------------------------+
void OnTick()
  {
//---
 
  }
//+--------------------------------------------------------------------------------+
//| Funzione ChartEvent                                                            |
//+--------------------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//---Mostra il nome della funzione, orario di chiamata ed identificatore vento
   Print(__FUNCTION__,TimeCurrent(),"   id=",id,"   mode=",mode);
//--- Maneggia l'evento CHARTEVENT_CLICK ("Un click del mouse sul grafico")
   if(id==CHARTEVENT_CLICK)
     {
      //--- Slittamento iniziale dal lato del grafico
      int pos=0;
      //--- Operazione con il lato sinistro del grafico
      if(mode>0)
        {
         //--- Slitam il grafico al lato sinistro
         ChartNavigate(0,CHART_BEGIN,pos);
         for(int i=0;i<pictures;i++)
           {
            //--- Prepara il testo da mostrare sul grafico ed il nome file
            string name="ChartScreenShot"+"CHART_BEGIN"+string(pos)+".gif";
            //--- Mostra il nome sul grafico come un commento
            Comment(name);
            //--- Salva lo screenshot del grafico in un file interminal_directory\MQL5\Files\
            if(ChartScreenShot(0,name,WIDTH,HEIGHT,ALIGN_LEFT))
               Print("Abbiamo salvato lo screenshot ",name);
            //---
            pos+=bars_shift;
            //--- Da all'utente il tempo di guardare alla nuova parte del grafico
            Sleep(3000);
            //--- Scorre il grafico dalla posizione corrente barre bars_shift a destra
            ChartNavigate(0,CHART_CURRENT_POS,bars_shift);
           }
         //--- Cambia la modalità nell'opposto
         mode*=-1;
        }
      else // Operazione con il lato destro del grafico
        {
         //--- Scorre il grafico al lato destro
         ChartNavigate(0,CHART_END,pos);
         for(int i=0;i<pictures;i++)
           {
            //--- Prepara il testo da mostrare sul grafico ed il nome file
            string name="ChartScreenShot"+"CHART_END"+string(pos)+".gif";
            //--- Mostra il nome sul grafico come un commento
            Comment(name);
            //--- Salva lo screenshot del grafico in un file interminal_directory\MQL5\Files\
            if(ChartScreenShot(0,name,WIDTH,HEIGHT,ALIGN_RIGHT))
               Print("Abbiamo salvato lo screenshot ",name);
            //---
            pos+=bars_shift;
            //--- Da all'utente il tempo di guardare alla nuova parte del grafico
            Sleep(3000);
            //--- Scorre il grafico dalla posizione corrente barre bars_shift a destra
            ChartNavigate(0,CHART_CURRENT_POS,-bars_shift);
           }
         //--- Cambia la modalità nell'opposto
         mode*=-1;
        }
     }  // Cerca l'event handling CHARTEVENT_CLICK
//--- Fine dell' handler OnChartEvent()  
  }

Vedi anche

ChartNavigate(), Risorse