#property description "Le conseiller présente la création de la série des captures d'écran du graphique actuel"
#property description "à l'aide de la fonction ChartScreenShot(). Le nom du fichier"
#property description "est déduit aussi sur le graphique pour la commodité. La hauteur et la largeur des dessins sont spécifiées par les macros."
#define WIDTH 800 // la largeur du dessin pour l'appel de ChartScreenShot()
#define HEIGHT 600 // La hauteur du dessin pour l'appel de ChartScreenShot()
//--- input parameters
input int pictures=5; // la quantité de dessins dans une série
int mode=-1; // -1 signifie le décalage vers le bord droit du graphique, 1 - vers le bord gauche
int bars_shift=300;// le nombre de barres au défilement du graphique par la fonction ChartNavigate()
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
void OnInit()
{
//---désactivons l'autodéfilement du graphique
ChartSetInteger(0,CHART_AUTOSCROLL,false);
//--- établissons l'alinéa du bord droit du graphique
ChartSetInteger(0,CHART_SHIFT,true);
//---établissons l'affichage du graphique en forme des bougies
ChartSetInteger(0,CHART_MODE,CHART_CANDLES);
//---
Print("La préparation du conseiller au travail est terminée");
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
//| ChartEvent function |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
//--- la sortie du nom de la fonction, du temps de l'appel et de l'identificateur de l'événement
Print(__FUNCTION__,TimeCurrent()," id=",id," mode=",mode);
//--- le traitement de l'événement CHARTEVENT_CLICK ("La pression par la souris sur le graphique")
if(id==CHARTEVENT_CLICK)
{
//--- le déplacement initial du bord du graphique
int pos=0;
//--- le mode du travail avec le bord gauche du graphique
if(mode>0)
{
//--- défilons le graphique vers le bord gauche
ChartNavigate(0,CHART_BEGIN,pos);
for(int i=0;i<pictures;i++)
{
//---préparons la signature sur le graphique et le nom pour le fichier
string name="ChartScreenShot"+"CHART_BEGIN"+string(pos)+".gif";
//--- la conclusion du nom sur le graphique en forme du commentaire
Comment(name);
//--- sauvegardons la capture d'écran au dossier le répertoire_du terminal\MQL5\Files\
if(ChartScreenShot(0,name,WIDTH,HEIGHT,ALIGN_LEFT))
Print("Nous avons sauvegardé la capture d'écran ",name);
//---
pos+=bars_shift;
//---donnons le temps à l'utilisateur pour regarder un nouveau secteur du graphique
Sleep(3000);
//--- défilons le graphique de la position courante au bars_shift à droite
ChartNavigate(0,CHART_CURRENT_POS,bars_shift);
}
//--- le changement du mode à l'opposé
mode*=-1;
}
else // le mode du travail avec le bord droit du graphique
{
//--- défilons le graphique vers le bord droit
ChartNavigate(0,CHART_END,pos);
for(int i=0;i<pictures;i++)
{
//---préparons la signature sur le graphique et le nom pour le fichier
string name="ChartScreenShot"+"CHART_END"+string(pos)+".gif";
//--- la conclusion du nom sur le graphique en forme du commentaire
Comment(name);
//--- sauvegardons la capture d'écran au dossier le répertoire_du terminal\MQL5\Files\
if(ChartScreenShot(0,name,WIDTH,HEIGHT,ALIGN_RIGHT))
Print("Nous avons sauvegardé la capture d'écran ",name);
//---
pos+=bars_shift;
//---donnons le temps à l'utilisateur pour regarder un nouveau secteur du graphique
Sleep(3000);
//--- défilons le graphique de la position courante au bars_shift à droite
ChartNavigate(0,CHART_CURRENT_POS,-bars_shift);
}
//--- le changement du mode à l'opposé
mode*=-1;
}
} // la fin du traitement de l'événement CHARTEVENT_CLICK
//--- la fin du gestionnaire OnChartEvent()
}
|