#property description "Der Expert Advisor zeigt, wie eine Reihe von Screenshots des aktuellen Charts"
#property description "mit der ChartScreenShot()-Funktion zu erstellen. Für die Bequemlichkeit wird der Dateiname auch"
#property description "auf den Chart angezeigt. Die Höhe und Breite von Bildern wird durch Makros definiert. "
#define WIDTH 800 // Breite des Bildes für Anruf von ChartScreenShot()
#define HEIGHT 600 // Höhe des Bildes für Anruf von ChartScreenShot()
//--- input parameters
input int pictures=5; // Anzahl der Bilder in Serie
int mode=-1; // -1 bedeutet Einrückung an den rechten Rand des Chart, 1 - an den linken Rand
int bars_shift=300;// Anzahl der Balken beim Scroll des Charts mit ChartNavigate()-Funktion
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
void OnInit()
{
//--- Autoscroll des Charts deaktivieren
ChartSetInteger(0,CHART_AUTOSCROLL,false);
//--- Einrückung des rechten Rands des Charts angeben
ChartSetInteger(0,CHART_SHIFT,true);
//--- Darstellung des Charts in Form von Kerzendiagramm
ChartSetInteger(0,CHART_MODE,CHART_CANDLES);
//---
Print("Vorbereitung des Expert Advisors für die Arbeit ist abgeschlossen");
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
//| ChartEvent function |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
//--- Ausgabe der Name der Funktion, der Zeit des Aufrufs und Ereignis-ID
Print(__FUNCTION__,TimeCurrent()," id=",id," mode=",mode);
//--- Verarbeitung von Ereignissen CHARTEVENT_CLICK ("Klick mit der Maus auf dem Chart")
if(id==CHARTEVENT_CLICK)
{
//--- Erste Einrückung vom Rand des Charts
int pos=0;
//--- Arbeit mit dem linken Rand des Charts
if(mode>0)
{
//--- Den Chart nach den linken Rand scrollen
ChartNavigate(0,CHART_BEGIN,pos);
for(int i=0;i<pictures;i++)
{
//--- Die Beschriftung auf dem Chart und den Dateinamen vorbereiten
string name="ChartScreenShot"+"CHART_BEGIN"+string(pos)+".gif";
//--- Ausgabe des Namen auf dem Chart als Kommentar
Comment(name);
//--- Den Screenschot in der Datei in Terminal_Verzeichnis\MQL5\Files\ speichern
if(ChartScreenShot(0,name,WIDTH,HEIGHT,ALIGN_LEFT))
Print("Gespeciherter Screenshot ",name);
//---
pos+=bars_shift;
//--- Gib dem Benutzer Zeit, um auf neuen Abschnitt des Chart zu sehen
Sleep(3000);
//--- Den Chart von der aktuellen Position um bars_shift nach rechts scrollen
ChartNavigate(0,CHART_CURRENT_POS,bars_shift);
}
//--- Regimewechsel auf die gegenüberliegende
mode*=-1;
}
else // Arbeit mit dem rechten Rand des Charts
{
//--- Den Chart nach den rechten Rand scrollen
ChartNavigate(0,CHART_END,pos);
for(int i=0;i<pictures;i++)
{
//--- Die Beschriftung auf dem Chart und den Dateinamen vorbereiten
string name="ChartScreenShot"+"CHART_END"+string(pos)+".gif";
//--- Ausgabe des Namen auf dem Chart als Kommentar
Comment(name);
//--- Den Screenschot in der Datei in Terminal_Verzeichnis\MQL5\Files\ speichern
if(ChartScreenShot(0,name,WIDTH,HEIGHT,ALIGN_RIGHT))
Print("Gespeciherter Screenshot ",name);
//---
pos+=bars_shift;
//--- Gib dem Benutzer Zeit, um auf neuen Abschnitt des Chart zu sehen
Sleep(3000);
//--- Den Chart von der aktuellen Position um bars_shift nach rechts scrollen
ChartNavigate(0,CHART_CURRENT_POS,-bars_shift);
}
//--- Regimewechsel auf die gegenüberliegende
mode*=-1;
}
} // Ende der Erarbeitung von CHARTEVENT_CLICK
//--- Ende von Handler OnChartEvent()
}
|