ChartScreenShot

Fonksiyon, çizelgenin mevcut durumunun ekran görüntüsünü GIF, PNG veya BMP formatında alır.

bool  ChartScreenShot(
   long             chart_id,                   // Çizelge tanımlayıcı
   string           filename,                   // Sembol ismi
   int              width,                      // Genişlik
   int              height,                     // Yükseklik
   ENUM_ALIGN_MODE  align_mode=ALIGN_RIGHT      // Hizalama tipi
   );

Parametreler

chart_id

[in]  Çizelge tanımlayıcısı. 0, mevcut çizelge anlamına gelir.

filename

[in]  Ekran görüntüsü dosyası ismi. 63 Karakteri geçemez. Ekran görüntüsü dosyaları \Files konumunda yer alır.

genişlik

[in]  Piksel olarak ekran görüntüsü genişliği.

height

[in]  Piksel olarak ekran görüntüsü yüksekliği.

align_mode=ALIGN_RIGHT

[in]  Dar ekran görüntüsü çıktı modu. ENUM_ALIGN_MODE sayımının değerlerinden biri. ALIGN_RIGHT, sağa hizala anlamına gelir (sondan çıktı). ALIGN_LEFT sola yaslama demektir.

Dönüş değeri

Başarılı ise 'true' değerine, aksi durumda 'false' değerine dönüş yapar.

Not

Eğer çizelgeden belirli bir konumundan bir ekran görüntüsü almanız gerekiyorsa, öncelikle ChartNavigate() fonksiyonunu kullanarak grafiği konumlandırın. Eğer ekran görüntüsünün yatay büyüklüğü çizelge penceresinden büyükse, align_mode ayarlarına bağlı olarak, çizelgenin ya sağı yada solu çıktılanır.

Örnek:

#property description "Bu Uzman Danışman, ChartScreenShot() fonksiyonu kullanılarak, mevcut çizelgenin ekran görüntüsü"
#property description "serilerinin nasıl oluşturulabileceğini göstermektedir. Uygunluk için dosya ismi çizelgede gösterilir."
#property description "Görüntülerin genişlik ve yükseklikleri makrolarla belirlenir"
 
#define        WIDTH  800     // ChartScreenShot() çağrısı için görüntü genişliği
#define        HEIGHT 600     // ChartScreenShot() çağrısı için görüntü yüksekliği
 
//--- giriş parametreleri
input int      pictures=5;    // Serilerdeki resim sayısı
int            mode=-1;       // -1 çizelgenin sağ sınırına , 1 - ise sola kaydırmayı belirtir
int            bars_shift=300;// ChartNavigate()kullanarak çizelgenin kaydırılması için çubuk sayısı
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
void OnInit()
  {
//--- Otomatik kaydırılmayı devre dışı bırak
   ChartSetInteger(0,CHART_AUTOSCROLL,false);
//--- Çizelgenin sağ kıyısının kaydırılmasını ayarla
   ChartSetInteger(0,CHART_SHIFT,true);
//--- Mum çizelgesini göster
   ChartSetInteger(0,CHART_MODE,CHART_CANDLES);
//---
   Print("Uzman Danışmanın hazırlanması tamamlandı");
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
 
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//--- Fonksiyonun ismini, çağrı zamanını ve olay işleyiciyi göster
   Print(__FUNCTION__,TimeCurrent(),"   id=",id,"   mode=",mode);
//--- CHARTEVENT_CLICK olayının işleyicisi ("Çizelge üstünde fare tıklaması")
   if(id==CHARTEVENT_CLICK)
     {
      //--- Çizelge kıyısından başlangıç kaydırması
      int pos=0;
      //--- Sol çizelge kenarının işlemi
      if(mode>0)
        {
         //--- Çizelgeyi sol yana kaydır
         ChartNavigate(0,CHART_BEGIN,pos);
         for(int i=0;i<pictures;i++)
           {
            //--- Dosya ismi olarak ve çizelgede göstermek için bir metin ayarla
            string name="ChartScreenShot"+"CHART_BEGIN"+string(pos)+".gif";
            //--- İsmi, çizelge üzerinde yorum olarak göster
            Comment(name);
            //--- Çizelge görüntüsünü terminal_dizini\MQL5\Files\ konumuna kaydet
            if(ChartScreenShot(0,name,WIDTH,HEIGHT,ALIGN_LEFT))
               Print("Ekran görüntüsünü kaydettik ",name);
            //---
            pos+=bars_shift;
            //--- Kullanıcıya çizelgenin yeni kısmına bakması için zaman tanı
            Sleep(3000);
            //--- Çizelgeyi mevcut konumdan bars_shift çubuk sağa kaydır
            ChartNavigate(0,CHART_CURRENT_POS,bars_shift);
           }
         //--- Modu tersine çevir
         mode*=-1;
        }
      else // Çizelgenin sağ kıyısının işlemi
        {
         //--- Çizelgeyi sağ tarafa kaydır
         ChartNavigate(0,CHART_END,pos);
         for(int i=0;i<pictures;i++)
           {
            //--- Dosya ismi olarak ve çizelgede göstermek için bir metin ayarla
            string name="ChartScreenShot"+"CHART_END"+string(pos)+".gif";
            //--- İsmi, çizelge üzerinde yorum olarak göster
            Comment(name);
            //--- Çizelge görüntüsünü terminal_dizini\MQL5\Files\ konumuna kaydet
            if(ChartScreenShot(0,name,WIDTH,HEIGHT,ALIGN_RIGHT))
               Print("Ekran görüntüsünü kaydettik ",name);
            //---
            pos+=bars_shift;
            //--- Kullanıcıya çizelgenin yeni kısmına bakması için zaman tanı
            Sleep(3000);
            //--- Çizelgeyi mevcut konumdan bars_shift çubuk sağa kaydır
            ChartNavigate(0,CHART_CURRENT_POS,-bars_shift);
           }
         //--- Modu tersine çevir
         mode*=-1;
        }
     }  // CHARTEVENT_CLICK olay işlemesinin sonu
//--- OnChartEvent() olay işleyicisinin sonu  
  }

Ayrıca Bakınız

ChartNavigate(), Kaynaklar