ChartScreenShot

Providencia uma imagem do gráfico de seu estado atual para um formato GIF, PNG ou BMP dependendo da extensão especificada.

bool  ChartScreenShot(
   long             chart_id,                   // ID Gráfico
   string           filename,                   // Nome do Símbolo
   int              width,                      // Largura
   int              height,                     // Altura
   ENUM_ALIGN_MODE  align_mode=ALIGN_RIGHT      // Tipo de alinhamento
   );

Parâmetros

chart_id

[in]  ID Gráfico. Significa o gráfico atual.

filename

[in]  Nome do arquivo de imagem. Não pode exceder 63 caracteres. Arquivos de captura de tela são colocados no \Files diretório.

width

[in]  Captura de tela com largura em pixels.

height

[in]  Captura de tela com altura em pixels.

align_mode=ALIGN_RIGHT

[in]  Modo de saída de uma Captura de tela estreita. O valor da enumeração ENUM_ALIGN_MODE. ALIGN_RIGHT significa alinhamento para a margem direita (a saída a partir do final). ALIGN_LEFT significa justificar esquerda.

Valor do Retorno

Retorna true se bem sucedido, caso contrário false.

Observação

Se você precisa tomar uma captura de tela de um gráfico a partir de uma determinada posição, em primeiro lugar, é necessário posicionar o gráfico usando a função ChartNavigate(). Se o tamanho horizontal da captura de tela é menor do que a janela do gráfico, ou a parte direita da janela do gráfico, ou a sua parte esquerda está de saída, depende das configurações do align_mode.

Exemplo:

#property description "O Expert Advisor demonstra como criar uma série de captura de tela atualizada" 
#property description  gráfico usando a função ChartScreenShot(). Por conveniência, o nome do arquivo é"
#property description "mostrando sobre o gráfico. A altura e a largura das imagens são definidas por meio de macros."
 
#define        WIDTH  800     // ChartScreenShot() para Chamar a largura da imagem
#define        HEIGHT 600     // ChartScreenShot() para Chamar a altura da imagem
 
//--- parâmetros de entrada
input int      pictures=5;    // O número de imagens em série
int            mode=-1;       // -1 denota uma mudança para a borda direita do gráfico, 1 para a esquerda
int            bars_shift=300;// O número de barras de rolagem quando o gráfico está usando ChartNavigate()
//+------------------------------------------------------------------+
//| Função de inicialização do Expert                                |
//+------------------------------------------------------------------+
void OnInit()
  {
//--- Desabilita gráfico autoscroll
   ChartSetInteger(0,CHART_AUTOSCROLL,false);
//--- Definir o deslocamento da borda direita do gráfico
   ChartSetInteger(0,CHART_SHIFT,true);
//--- Mostra uma castiçal (vela ou barra) do gráfico
   ChartSetInteger(0,CHART_MODE,CHART_CANDLES);
//---
   Print("Preparação do Expert Advisor está completada");
  }
//+------------------------------------------------------------------+
//| Função tick (ponto) de um Expert                                 |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
 
  }
//+------------------------------------------------------------------+
//| Função ChartEvent                                                |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//--- Mostra o nome da função, chamar tempo e identificador de evento
   Print(__FUNCTION__,TimeCurrent(),"   id=",id,"   mode=",mode);
//--- Manipular o evento CHARTEVENT_CLICK ("Um clique do mouse sobre o gráfico")
   if(id==CHARTEVENT_CLICK)
     {
      //--- Deslocamento inicial para a borda do gráfico
      int pos=0;
      //--- Operação com a borda esquerda do gráfico
      if(mode>0)
        {
         //--- Rolar o gráfico para a borda esquerda
         ChartNavigate(0,CHART_BEGIN,pos);
         for(int i=0;i<pictures;i++)
           {
            //--- Preparar o texto para mostrar no gráfico e um nome de arquivo
            string name="ChartScreenShot"+"CHART_BEGIN"+string(pos)+".gif";
            //--- Mostrar o nome no gráfico como um comentário
            Comment(name);
            //--- Salvar a captura de tela do gráfico em um arquivo no terminal_directory\MQL5\Files\
            if(ChartScreenShot(0,name,WIDTH,HEIGHT,ALIGN_LEFT))
               Print("Nós salvamos a captura de tela ",name);
            //---
            pos+=bars_shift;
            //--- Dê tempo ao utilizador para olhar a nova parte nova do gráfico
            Sleep(3000);
            //--- Rolar o gráfico diante da atual posição do bars_shift bars para a direita
            ChartNavigate(0,CHART_CURRENT_POS,bars_shift);
           }
         //--- Altere o modo para o oposto
         mode*=-1;
        }
      else // Operação com a borda direita do gráfico
        {
         //--- Rolar o gráfico para a borda direita
         ChartNavigate(0,CHART_END,pos);
         for(int i=0;i<pictures;i++)
           {
            //--- Preparar o texto para mostrar no gráfico e um nome de arquivo
            string name="ChartScreenShot"+"CHART_END"+string(pos)+".gif";
            //--- Mostrar o nome no gráfico como um comentário
            Comment(name);
            //--- Salvar a captura de tela do gráfico em um arquivo no terminal_directory\MQL5\Files\
            if(ChartScreenShot(0,name,WIDTH,HEIGHT,ALIGN_RIGHT))
               Print("Nós salvamos a captura de tela ",name);
            //---
            pos+=bars_shift;
            //--- Dê tempo ao utilizador para olhar a nova parte nova do gráfico
            Sleep(3000);
            //--- Rolar o gráfico diante da atual posição do bars_shift bars para a direita
            ChartNavigate(0,CHART_CURRENT_POS,-bars_shift);
           }
         //--- Altere o modo para o oposto
         mode*=-1;
        }
     }  // End of CHARTEVENT_CLICK event handling
//--- Fim do manipulador (handler) OnChartEvent()  
  }

Também Veja

ChartNavigate(), Recursos