#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()
}
|