OBJ_CHART

Objeto Chart.

ObjChart

Observação

Coordenadas do ponto de ancoragem são em pixels. Você também pode selecionar uma ancoragem do bitmap no canto a partir do enumerador ENUM_BASE_CORNER.

Símbolo, período e escala podem ser selecionados para o objeto Chart. Escala de preço e modo de exibição de data também pode ser habilitado/desabilitado.

Exemplo

O seguinte script cria e move o objeto Chart no gráfico. Funções especiais têm sido desenvolvidas para criar e alterar as propriedades do objeto gráfico. Você pode utilizar estas funções "as is" em seus próprios aplicativos.

 

//--- descrição
#property description "Script cria objeto \"Chart\"."
//--- janela de exibição dos parâmetros de entrada durante inicialização do script
#property script_show_inputs
//--- entrada de parâmetros do script
input string           InpName="Chart";             // Nome do objeto
input string           InpSymbol="EURUSD";          // Símbolo
input ENUM_TIMEFRAMES  InpPeriod=PERIOD_H1;         // Período
input ENUM_BASE_CORNER InpCorner=CORNER_LEFT_UPPER// Canto de ancoragem
input int              InpScale=2;                  // Escala
input bool             InpDateScale=true;           // Exibição da escala de tempo
input bool             InpPriceScale=true;          // Exibição da escala de preço
input color            InpColor=clrRed;             // Cor da borda quando destacada
input ENUM_LINE_STYLE  InpStyle=STYLE_DASHDOTDOT;   // Estilo da linha quando destacada
input int              InpPointWidth=1;             // Tamanho do ponto para movimento
input bool             InpBack=false;               // Objeto de Fundo
input bool             InpSelection=true;           // Destaque para mover
input bool             InpHidden=true;              // Ocultar na lista de objeto
input long             InpZOrder=0;                 // Prioridade para clique do mouse
//+------------------------------------------------------------------+
//| Criando objeto Chart                                             |
//+------------------------------------------------------------------+
bool ObjectChartCreate(const long              chart_ID=0,               // ID do gráfico
                       const string            name="Chart",             // nome do objeto
                       const int               sub_window=0,             // índice da sub-janela
                       const string            symbol="EURUSD",          // símbolo
                       const ENUM_TIMEFRAMES   period=PERIOD_H1,         // período
                       const int               x=0,                      // coordenada X
                       const int               y=0,                      // coordenada Y
                       const int               width=300,                // largura
                       const int               height=200,               // altura
                       const ENUM_BASE_CORNER  corner=CORNER_LEFT_UPPER// canto de ancoragem
                       const int               scale=2,                  // escala
                       const bool              date_scale=true,          // exibição escala de tempo
                       const bool              price_scale=true,         // exibição escala de preço
                       const color             clr=clrRed,               // a cor da borda quando destacada
                       const ENUM_LINE_STYLE   style=STYLE_SOLID,        // estilo da linha quando destacada
                       const int               point_width=1,            // mover tamanho do ponto
                       const bool              back=false,               // no fundo
                       const bool              selection=false,          // destaque para mover
                       const bool              hidden=true,              // ocultar na lista de objetos
                       const long              z_order=0)                // prioridade para clicar no mouse
  {
//--- redefine o valor de erro
   ResetLastError();
//--- criar objeto Chart
   if(!ObjectCreate(chart_ID,name,OBJ_CHART,sub_window,0,0))
     {
      Print(__FUNCTION__,
            ": falha ao criar objeto \"Chart\"! Código de erro = ",GetLastError());
      return(false);
     }
//--- definir coordenadas do objeto
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- definir tamanho do objeto
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- determinar o canto do gráfico onde as coordenadas do ponto são definidas
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- definir o símbolo
   ObjectSetString(chart_ID,name,OBJPROP_SYMBOL,symbol);
//--- definir o período
   ObjectSetInteger(chart_ID,name,OBJPROP_PERIOD,period);
//--- definir a escala
   ObjectSetInteger(chart_ID,name,OBJPROP_CHART_SCALE,scale);
//--- exibir (true) ou ocultar (false) a escala de tempo
   ObjectSetInteger(chart_ID,name,OBJPROP_DATE_SCALE,date_scale);
//--- exibir (true) ou ocultar (false) a escala de preço
   ObjectSetInteger(chart_ID,name,OBJPROP_PRICE_SCALE,price_scale);
//--- definir a cor da borda quando o modo de destaque do objeto é habilitado
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir o estilo de linha quando o modo de destaque do objeto é habilitado
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- definir o tamanho do ponto de ancoragem para movimentar o objeto
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,point_width);
//--- exibir em primeiro plano (false) ou fundo (true)
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- Habilitar (true) ou desabilitar (false) o modo de movimento da etiqueta pelo mouse
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ocultar (true) ou exibir (false) o nome do objeto gráfico na lista de objeto 
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no gráfico
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execução
   return(true);
  }
//+------------------------------------------------------------------+
//| Definir o símbolo e período de tempo do objeto Chart             |
//+------------------------------------------------------------------+
bool ObjectChartSetSymbolAndPeriod(const long            chart_ID=0,       // ID do gráfico (não objeto de um Gráfico)
                                   const string          name="Chart",     // nome do objeto
                                   const string          symbol="EURUSD",  // símbolo
                                   const ENUM_TIMEFRAMES period=PERIOD_H1// período de tempo
  {
//--- redefine o valor de erro
   ResetLastError();
//--- definir símbolo e período de tempo do objeto Chart
   if(!ObjectSetString(chart_ID,name,OBJPROP_SYMBOL,symbol))
     {
      Print(__FUNCTION__,
            ": falha para definir o símbolo do objeto \"Chart\"! Código de erro = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_PERIOD,period))
     {
      Print(__FUNCTION__,
            ": falha para definir o símbolo do objeto \"Chart\"! Código de erro = ",GetLastError());
      return(false);
     }
//--- sucesso na execução
   return(true);
  }
//+------------------------------------------------------------------+
//| Mover objeto Chart                                               |
//+------------------------------------------------------------------+
bool ObjectChartMove(const long   chart_ID=0,   // ID do gráfico (não objeto de um Gráfico)
                     const string name="Chart"// nome do objeto
                     const int    x=0,          // coordenada X
                     const int    y=0)          // coordenada Y
  {
//--- redefine o valor de erro
   ResetLastError();
//--- mover o objeto
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x))
     {
      Print(__FUNCTION__,
            ": falha ao mover coordenada X do objeto \"Chart\"! Código de erro = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y))
     {
      Print(__FUNCTION__,
            ": falha ao mover coordenada Y do objeto \"Chart\"! Código de erro = ",GetLastError());
      return(false);
     }
//--- sucesso na execução
   return(true);
  }
//+------------------------------------------------------------------+
//| Alterar o tamanho do objeto Chart                                |
//+------------------------------------------------------------------+
bool ObjectChartChangeSize(const long   chart_ID=0,   // ID do gráfico (não objeto de um Gráfico)
                           const string name="Chart"// nome do objeto
                           const int    width=300,    // largura
                           const int    height=200)   // altura
  {
//--- redefine o valor de erro
   ResetLastError();
//--- alterar o tamanho do objeto
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width))
     {
      Print(__FUNCTION__,
            ": falha ao alterar a largura do objeto \"Chart\" ! Código de erro = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height))
     {
      Print(__FUNCTION__,
            ": falha ao alterar a altura do objeto \"Chart\" ! Código de erro = ",GetLastError());
      return(false);
     }
//--- sucesso na execução
   return(true);
  }
//+------------------------------------------------------------------+
//| Retorno do ID do objeto Chart                                    |
//+------------------------------------------------------------------+
long ObjectChartGetID(const long   chart_ID=0,   // ID do gráfico (não objeto de um Gráfico)
                      const string name="Chart"// nome do objeto
  {
//--- preparar a variável para obter o ID do objeto Chart
   long id=-1;
//--- redefine o valor de erro
   ResetLastError();
//--- obter ID
   if(!ObjectGetInteger(chart_ID,name,OBJPROP_CHART_ID,0,id))
     {
      Print(__FUNCTION__,
            ": falha ao obter o ID do objeto \"Chart\"! Código de erro = ",GetLastError());
     }
//--- retorno do resultado
   return(id);
  }
//+------------------------------------------------------------------+
//| Deletar o objeto Chart                                           |
//+------------------------------------------------------------------+
bool ObjectChartDelete(const long   chart_ID=0,   // ID do gráfico (não objeto de um Gráfico)
                       const string name="Chart"// nome do objeto
  {
//--- redefine o valor de erro
   ResetLastError();
//--- excluir o botão
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            ": falha ao deletar objeto \"Chart\"! Código de erro = ",GetLastError());
      return(false);
     }
//--- sucesso na execução
   return(true);
  }
//+------------------------------------------------------------------+
//| Programa Script da função start (iniciar)                        |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- obter o número de símbolos na Observação do Mercado
   int  symbols=SymbolsTotal(true);
//--- verificar se o símbolo com um nome especifico está presente na lista de símbolo
   bool exist=false;
   for(int i=0;i<symbols;i++)
      if(InpSymbol==SymbolName(i,true))
        {
         exist=true;
         break;
        }
   if(!exist)
     {
      Print("Erro! ",InpSymbol," símbolo não está presente na \"Observação do Mercado\"!");
      return;
     }
//--- verificar a validade dos parâmetros de entrada
   if(InpScale<0 || InpScale>5)
     {
      Print("Erro! Valores incorretos dos parâmetros de entrada!");
      return;
     }
 
//--- tamanho da janela do gráfico
   long x_distance;
   long y_distance;
//--- definir tamanho da janela
   if(!ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0,x_distance))
     {
      Print("Falha ao obter a largura do gráfico! Código de erro = ",GetLastError());
      return;
     }
   if(!ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0,y_distance))
     {
      Print("Falha ao obter a altura do gráfico! Código de erro = ",GetLastError());
      return;
     }
//--- definir as coordenadas do objeto gráfico e seu tamanho
   int x=(int)x_distance/16;
   int y=(int)y_distance/16;
   int x_size=(int)x_distance*7/16;
   int y_size=(int)y_distance*7/16;
//--- criar objeto Chart
   if(!ObjectChartCreate(0,InpName,0,InpSymbol,InpPeriod,x,y,x_size,y_size,InpCorner,InpScale,InpDateScale,
      InpPriceScale,InpColor,InpStyle,InpPointWidth,InpBack,InpSelection,InpHidden,InpZOrder))
     {
      return;
     }
//--- redesenhar o gráfico e esperar por um segundo
   ChartRedraw();
   Sleep(1000);
//--- estender objeto Chart
   int steps=(int)MathMin(x_distance*7/16,y_distance*7/16);
   for(int i=0;i<steps;i++)
     {
      //--- redimensionar
      x_size+=1;
      y_size+=1;
      if(!ObjectChartChangeSize(0,InpName,x_size,y_size))
         return;
      //--- verificar se o funcionamento do script foi desativado a força
      if(IsStopped())
         return;
      //--- redesenhar o gráfico e esperar por 0.01 segundos
      ChartRedraw();
      Sleep(10);
     }
//--- meio segundo de atraso
   Sleep(500);
//--- alterar período de tempo do gráfico
   if(!ObjectChartSetSymbolAndPeriod(0,InpName,InpSymbol,PERIOD_M1))
      return;
   ChartRedraw();
//--- três segundos de atraso
   Sleep(3000);
//--- excluir o objeto
   ObjectChartDelete(0,InpName);
   ChartRedraw();
//--- esperar por um segundo
   Sleep(1000);
//---
  }