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