ObjectSetDouble

Establece el valor de la propiedad correspondiente de un objeto. La propiedad del objeto debe ser del tipo double. Existen 2 variantes de la función.

Configuración del valor de la propiedad sin modificador

bool  ObjectSetDouble(
   long                            chart_id,          // identificador del gráfico
   string                          name,              // nombre
   ENUM_OBJECT_PROPERTY_DOUBLE     prop_id,           // propiedad
   double                          prop_value         // valor
   );

Configuración del valor de la propiedad indicando el modificador

bool  ObjectSetDouble(
   long                            chart_id,          // identificador del gráfico
   string                          name,              // nombre
   ENUM_OBJECT_PROPERTY_DOUBLE     prop_id,           // propiedad
   int                             prop_modifier,     // modificador
   double                          prop_value         // valor
   );

Parámetros

chart_id

[in]  Identificador del gráfico. 0 significa el gráfico actual.

name

[in]  Nombre del objeto.

prop_id

[in]  Identificador de la propiedad del objeto. Su valor puede ser uno de los valores de la enumeración ENUM_OBJECT_PROPERTY_DOUBLE.

prop_modifier

[in]  Modificador de la propiedad especificada. La mayoría de las propiedades no requiere el modificador.

prop_value

[in]  Valor de la propiedad.

Valor devuelto

Devuelve true sólo si el comando de modificar las propiedades de un objeto gráfico se ha enviado con éxito al gráfico. De lo contrario devuelve false. Para la información más detallada sobre el error hay que llamar a la función GetLastError().

Nota

La función usa una llamada asincrónica, esto significa que la función no espera a la ejecución del comando que se ha colocado con éxito en la cola del gráfico indicado, sino que devuelve el control de inmediato.

Para comprobar el resultado de la ejecución en un gráfico ajeno se puede usar una función que solicite la propiedad indicada del objeto. Pero, en esta caso, además, se deberá tener en cuenta que estas funciones se colocan al final de la cola de comandos del gráfico y esperan el resultado de la ejecución, es decir, pueden consumir un tiempo considerable. Hay que tener esta circunstancia en cuenta al trabajar con multitud de objetos en el gráfico.

Ejemplo de creación de un objeto Fibonacci y adicción de un nuevo nivel en él

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- matrices auxiliares
   double high[],low[],price1,price2;
   datetime time[],time1,time2;
//--- vamos a copiar los precios de apertura - 100 últimas barras será suficiente
   int copied=CopyHigh(Symbol(),0,0,100,high);
   if(copied<=0)
     {
      Print("Fallo al copiar los valores de la serie de precios High");
      return;
     }
//--- vamos a copiar los precios de cierre - 100 últimas barras será suficiente
   copied=CopyLow(Symbol(),0,0,100,low);
   if(copied<=0)
     {
      Print("Fallo al copiar los valores de la serie de precios Low");
      return;
     }
//--- vamos a copiar la hora de apertura para 100 últimas barras
   copied=CopyTime(Symbol(),0,0,100,time);
   if(copied<=0)
     {
      Print("Fallo al copiar los valores de la serie de precios Time");
      return;
     }
//--- vamos a organizar el acceso a los datos copiados como en las series temporales - hacia atrás
   ArraySetAsSeries(high,true);
   ArraySetAsSeries(low,true);
   ArraySetAsSeries(time,true);
 
//--- coordinadas del primer punto de anclaje del objeto Fibo
   price1=high[70];
   time1=time[70];
//--- coordinadas del segundo punto de anclaje del objeto Fibo
   price2=low[50];
   time2=time[50];
 
//--- ya es hora de crear el mismo objeto Fibo
   bool created=ObjectCreate(0,"Fibo",OBJ_FIBO,0,time1,price1,time2,price2);
   if(created) // si el objeto ha sido creado con éxito
     {
      //--- vamos a configurar los colores de niveles Fibo
      ObjectSetInteger(0,"Fibo",OBJPROP_LEVELCOLOR,Blue);
      //--- por cierto, ¿cuántos niveles Fibo tenemos nosotros
      int levels=ObjectGetInteger(0,"Fibo",OBJPROP_LEVELS);
      Print("Fibo levels before = ",levels);
      //---mostramos en el Diario => número del nivel:valor de descripción_de_nivel
      for(int i=0;i<levels;i++)
        {
         Print(i,":",ObjectGetDouble(0,"Fibo",OBJPROP_LEVELVALUE,i),
               "  ",ObjectGetString(0,"Fibo",OBJPROP_LEVELTEXT,i));
        }
      //--- vamos a intentar aumentar la cantidad de niveles a uno
      bool modified=ObjectSetInteger(0,"Fibo",OBJPROP_LEVELS,levels+1);
      if(!modified) // no ha salido cambiar la cantidad de niveles
        {
         Print("Fallo al cambiar el número de niveles de Fibo, error ",GetLastError());
        }
      //--- simplemente avisamos 
      Print("Fibo levels after =",ObjectGetInteger(0,"Fibo",OBJPROP_LEVELS));
      //--- establecemos el valor para el nivel recién creado
      bool added=ObjectSetDouble(0,"Fibo",OBJPROP_LEVELVALUE,levels,133);
      if(added) // hemos podido establecer el valor para este nivel
        {
         Print("Hemos establecido con éxito otro nivel más de Fibo");
         //--- también hay que establecer la descripción del nivel
         ObjectSetString(0,"Fibo",OBJPROP_LEVELTEXT,levels,"my level");
         ChartRedraw(0);
         //--- obtenemos el valor actual de la cantidad de niveles en el objeto Fibo
         levels=ObjectGetInteger(0,"Fibo",OBJPROP_LEVELS);
         Print("Fibo levels after adding = ",levels);
         //--- otra vez visualizamos todos los niveles, simplemente para comprobar
         for(int i=0;i<levels;i++)
           {
            Print(i,":",ObjectGetDouble(0,"Fibo",OBJPROP_LEVELVALUE,i),
                  "  ",ObjectGetString(0,"Fibo",OBJPROP_LEVELTEXT,i));
           }
 
        }
      else // fallo al intentar aumentar la cantidad de niveles en el objeto Fibo
        {
         Print("Fallo al establecer otro nivel más de Fibo. Error",GetLastError());
        }
     }
  }

Véase también

Tipos de objetos, Propiedades de objetos