ChartScreenShot

Die Funktion gewaehrleistet Screenshot des angegebenen Charts im laufenden Zustand in Format GIF, PNG oder BMP je nach angegebenen Erweiterung.

bool  ChartScreenShot(
   long             chart_id,                   // Identifikator des Charts
   string           filename,                   // Dateiname
   int              width,                      // Breite
   int              height,                     // Höhe
   ENUM_ALIGN_MODE  align_mode=ALIGN_RIGHT      // Typ der Ausrichtung
   );

Parameter

chart_id

[in]  Identifikator des Charts. 0 bedeutet den laufenden Chart.

filename

[in]  Dateiname des Screenshot. Kann nicht mehr als 63 Symbole sein. Screenshot wird m Verzeichnis \Files aufbewahren.

width

[in]  Breite des Sreenshot in Pixel

height

[in] Hoehe des Screenshot in PixelDateiname des Screenshot

align_mode=ALIGN_RIGHT

[in]  Ausgabemode des engen Screenshot. Wert von Enumeration ENUM_ALIGN_MODE. ALIGN_RIGHT bedeutet Ausrichtung rechtsbündig. (Ausgabe vom Ende). ALIGN_LEFT bedeutet Ausrichtung linksbündig.

Rückgabewert

Bringt true im Erfolgsfall zurück, anderenfalls false.

Hinweis

Wenn es notwendig ist, Screenshot von der bestimmten Position zu nehmen, muss der Chart vor allem durch die Funktion ChartNavigate() positioniert werden. Wenn horizontale Größe des Screenshots kleiner las Fenster des Charts ist, wird entweder der rechte Chartteil oder der linke Chartteil ausgegeben, abhängig vom Parameterwert align_mode.

Beispiel:

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

Sehen Sie auch

ChartNavigate(), Ressourcen