ObjectGetString

A função retorna o valor da propriedade do objeto correspondente. A propriedade do objeto deve ser do tipo string. Existem 2 variantes da função.

1. Imediatamente retorna o valor da propriedade.

string  ObjectGetString(
   long                            chart_id,          // identificador Gráfico
   string                          name,              // nome objeto
   ENUM_OBJECT_PROPERTY_STRING     prop_id,           // identificador propriedade
   int                             prop_modifier=0    // modificador de propriedade, se requisitada
   );

2. Retorna true ou false, dependendo do sucesso da função. Se bem sucedido, o valor da propriedade é colocado para receber uma variável passada como referência pelo último parâmetro.

bool  ObjectGetString(
   long                            chart_id,          // identificador Gráfico
   string                          name,              // nome objeto
   ENUM_OBJECT_PROPERTY_STRING     prop_id,           // identificador propriedade
   int                             prop_modifier,     // modificador propriedade
   string&                         string_var         // aqui nós aceitamos o valor da propriedade
   );

Parâmetros

chart_id

[in]  Identificador do gráfico. Significa o gráfico atual.

nome

[in]  Nome do objeto.

prop_id

[in]  ID da propriedade do objeto. O valor pode ser um dos valores do enumerador ENUM_OBJECT_PROPERTY_STRING.

prop_modifier

[in]  Modificador da propriedade específica. Para a primeira variante, o modificador tem valor padrão igual a 0. A maioria das propriedades não requerem um modificador. Indica o número do nível em ferramentas Fibonacci e no objeto gráfico do tipo Tridente de Andrew. A numeração dos níveis começa a partir do zero.

string_var

[out]  Variável do tipo string que recebe o valor das propriedades requisitadas.

Valor do Retorno

Valor string para a primeira versão da chamada.

Retorna true para a segunda versão da chamada, se essa propriedade for mantida e o valor foi colocado na variável string_var, caso contrário, retorna false. Para ler mais sobre o erro, chamar GetLastError().

Observação

A função utiliza uma chamada síncrona, isso significa que a função espera a execução de todos os comandos que foram colocados na fila do gráfico antes de sua chamada, e por isso este recurso pode consumir muito tempo. Deve ter isso em mente, se você estiver trabalhando com um grande número de objetos no gráfico.

Quando um objeto é renomeado, dois eventos são formados simultaneamente. Estes eventos podem ser manipulados em um Expert Advisor ou o indicador pela função OnChartEvent():

  • um evento de exclusão de um objeto com o nome antigo;
  • um evento de criação de um objeto com um novo nome.

 

Exemplo:

#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
 
#define   OBJ_NAME   "TestObjectGetInteger"  // Nome do objeto
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- identificador do gráfico atual
   long chart_id=ChartID();
 
//--- criamos o objeto gráfico "Linha Vertical" no tempo atual conhecido do servidor
   if(!ObjectCreate(chart_idOBJ_NAMEOBJ_VLINE0TimeCurrent(), 0))
     {
      Print("ObjectCreate() failed. Error "GetLastError());
      return;
     }
//--- atualiza o gráfico para exibir imediatamente as alterações
   ChartRedraw(chart_id);
   
//--- obtemos o tempo de criação do objeto
   long long_var=0;
   if(!ObjectGetInteger(chart_idOBJ_NAMEOBJPROP_CREATETIME0long_var))
     {
      Print("ObjectGetInteger() failed. Error "GetLastError());
      return;
     }
//--- representação em string do tempo de criação do objeto
   string create_time=TimeToString((datetime)long_varTIME_DATE|TIME_MINUTES|TIME_SECONDS);
   
//--- obtemos o tempo registrado no objeto
   if(!ObjectGetInteger(chart_idOBJ_NAMEOBJPROP_TIME0long_var))
     {
      Print("ObjectGetInteger() failed. Error "GetLastError());
      return;
     }
//--- representação em string do tempo de posicionamento do objeto
   string obj_time=TimeToString((datetime)long_varTIME_DATE|TIME_MINUTES|TIME_SECONDS);
   
//--- obtemos o tipo do objeto
   ENUM_OBJECT object_type=(ENUM_OBJECT)ObjectGetInteger(chart_idOBJ_NAMEOBJPROP_TYPE);
   
//--- registramos no log o tipo do objeto, o tempo de sua criação e o tempo no gráfico no qual o objeto gráfico está posicionado
   PrintFormat("%s object created at %s at chart point with time %s",EnumToString(object_type), create_timeobj_time);
   
//--- aguardamos dois segundos e removemos o objeto criado
   Sleep(2000);
   ObjectDelete(chart_idOBJ_NAME);
   ChartRedraw(chart_id);
   /*
   Resultado:
   OBJ_VLINE object created at 2025.02.01 12:15:37 at chart point with time 2025.01.31 23:54:59
   */
  }