ObjectSetDouble

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

Define valor da propriedade, sem modificador

bool  ObjectSetDouble(
   long                            chart_id,          // identificador Gráfico
   string                          name,              // nome objeto
   ENUM_OBJECT_PROPERTY_DOUBLE     prop_id,           // propriedade
   double                          prop_value         // valor
   );

Define um valor de propriedade que indica o modificador

bool  ObjectSetDouble(
   long                            chart_id,          // identificador Gráfico
   string                          name,              // nome objeto
   ENUM_OBJECT_PROPERTY_DOUBLE     prop_id,           // propriedade
   int                             prop_modifier,     // modificador
   double                          prop_value         // valor
   );

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_DOUBLE.

prop_modifier

[in]  Modificador da propriedade específica. Ela indica o número do nível em ferramentas Fibonacci e no objeto gráfico Tridente de Andrew. A numeração dos níveis começa a partir do zero.

prop_value

[in]  O valor da propriedade.

Valor do Retorno

A função retorna true somente se o comando para alterar as propriedades de um objeto gráfico foi enviado a um gráfico com sucesso. Do contrário ele retorna false. Para ler mais sobre o erro, chamar GetLastError().

Observação

A função utiliza uma chamada assíncrona, isso significa que a função espera a execução do comando que foi colocado com sucesso na fila do gráfico especificado e retorna o controle imediatamente.

Para verificar o resultado da execução, pode-se usar a função que solicita a propriedade especificada do objeto. Mas, ao fazer isto, deve-se ter em mente que estas funções são colocadas na fila de espera dos comandos de outro gráfico e são esperados os resultados da execução, isso quer dizer que não podem consumir muito tempo. Deve ter isso em mente, se você estiver trabalhando com um grande número de objetos no gráfico.

Exemplo de criação de um objeto Fibonacci e adicionando um novo nível nele

//+------------------------------------------------------------------+
//| Programa Script da função start (iniciar)                        |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- arrays auxiliares
   double high[],low[],price1,price2;
   datetime time[],time1,time2;
//--- Copiar os preços de abertura - 100 barras mais recentes são suficientes
   int copied=CopyHigh(Symbol(),0,0,100,high);
   if(copied<=0)
     {
      Print("Falha ao copiar os valores da série de preços de Alta");
      return;
     }
//--- Copiar os preço de fechamento - mais de 100 barras são suficientes
   copied=CopyLow(Symbol(),0,0,100,low);
   if(copied<=0)
     {
      Print("Falha ao copiar os valores da série de preços de Baixa");
      return;
     }
//--- Copiar os tempos de abertura para as últimas 100 barras
   copied=CopyTime(Symbol(),0,0,100,time);
   if(copied<=0)
     {
      Print("Falha ao copiar os valores da série de preços de tempo");
      return;
     }
//--- Organizar o acesso aos dados copiados como para timeseries - retrocesso
   ArraySetAsSeries(high,true);
   ArraySetAsSeries(low,true);
   ArraySetAsSeries(time,true);
 
//--- Coordenadas do primeiro ponto de ancoragem do objeto Fibo
   price1=high[70];
   time1=time[70];
//--- Coordenadas do segundo ponto de ancoragem do objeto Fibo
   price2=low[50];
   time2=time[50];
 
//--- Tempo para criar o objeto Fibo
   bool created=ObjectCreate(0,"Fibo",OBJ_FIBO,0,time1,price1,time2,price2);
   if(created) // Se o objeto for criado com sucesso
     {
      //--- definir a cor dos níveis de Fibo
      ObjectSetInteger(0,"Fibo",OBJPROP_LEVELCOLOR,Blue);
      //--- a propósito, quanto níveis Fibo temos?
      int levels=ObjectGetInteger(0,"Fibo",OBJPROP_LEVELS);
      Print("Fibo levels before = ",levels);
      //---saída para Jornal => número de nível: valor level_desription
      for(int i=0;i<levels;i++)
        {
         Print(i,": ",ObjectGetDouble(0,"Fibo",OBJPROP_LEVELVALUE,i),
               "  ",ObjectGetString(0,"Fibo",OBJPROP_LEVELTEXT,i));
        }
      //--- Tentar aumentar o número de níveis por unidade
      bool modified=ObjectSetInteger(0,"Fibo",OBJPROP_LEVELS,levels+1);
      if(!modified) // falha ao alterar o número de níveis
        {
         Print("Falhou ao alterar o número de níveis da Fibo, erro ",GetLastError());
        }
      //--- apenas informa
      Print("Níveis de Fibo depois = ",ObjectGetInteger(0,"Fibo",OBJPROP_LEVELS));
      //--- definir um valor para um nível recém-criado
      bool added=ObjectSetDouble(0,"Fibo",OBJPROP_LEVELVALUE,levels,133);
      if(added) // conseguiu definir um valor para o nível
        {
         Print("Definido com sucesso mais um nível Fibo");
         //--- Também não se esqueça de definir o nível da descrição
         ObjectSetString(0,"Fibo",OBJPROP_LEVELTEXT,levels,"my level");
         ChartRedraw(0);
         //--- Obter o valor real do número de níveis no objeto Fibo
         levels=ObjectGetInteger(0,"Fibo",OBJPROP_LEVELS);
         Print("Níveis de Fibo depois de adicionar = ",levels);
         //--- mais uma vez a saída de todos os níveis - só para ter certeza
         for(int i=0;i<levels;i++)
           {
            Print(i,":",ObjectGetDouble(0,"Fibo",OBJPROP_LEVELVALUE,i),
                  "  ",ObjectGetString(0,"Fibo",OBJPROP_LEVELTEXT,i));
           }
        }
      else // Falha se você tentar aumentar o número de níveis no objeto Fibo
        {
         Print("Falhou ao definir mais um nível Fibo. Error ",GetLastError());
        }
     }
  }

Veja Também

Tipos de Objetos, Propriedades de objeto