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