Pregunta sobre objectget y objectgetvaluebyshift

 

HI puede alguien ayudar con esto. Tengo un ea que obtiene un valor de precio de una línea horizontal o línea de tendencia. Sin embargo, tengo el código de la siguiente manera, pero no va a recoger cualquiera de los valores. Si quito el Objectgetvaluebyshift recogerá el precio de la línea horizontal y viceversa. Pero necesito que reconozca ambos y obtenga el valor de la línea que tenga en mi gráfico (ya sea una línea horizontal o una línea h). Tal vez alguien puede publicar un poco de código para que pueda entender lo que debe hacer.

Gracias.

tp =(ObjectGetValueByShift( TP_P, OBJPROP_PRICE1)) || (ObjectGet( TP_P, OBJPROP_PRICE1));

 

ObjectGetValueByShift( string name, int shift)

OBJPROP_PRICE1 no es el "shift"... Shift es el número de barra en el que se quiere tomar el valor -- aplicable a objetos de línea de tendencia y similares

double tp = ObjectGetValueByShift( TP_P, 0); // asumiendo que TP_P es una variable de cadena que contiene el nombre del objeto, y que usted quiere el valor de la línea en la barra actual

 
phy:

ObjectGetValueByShift( string name, int shift)

OBJPROP_PRICE1 no es el "shift"... Shift es el número de barra en el que se quiere tomar el valor -- aplicable a objetos de línea de tendencia y similares

double tp = ObjectGetValueByShift( TP_P, 0); // asumiendo que TP_P es una variable de cadena que contiene el nombre del objeto, y que usted quiere el valor de la línea en la barra actual


He probado lo que has explicado. No se ve que funcione. Cualquier otra información sería genial.
 

gavin:

I have tried what you have explianed. It doesnt seen to work. Any other info would be great.

¿Lo que has explicado obtiene el valor tanto de una línea de tendencia como de una línea h, según lo que tenga cargado en el gráfico en ese momento?

 

Publica tu código, no tenemos ni idea de lo que has hecho.

 

Esto es lo que tenía.

--------------------------------------------------------

cadena TP_P;
if (OrderType()==OP_BUY) TP_P = BTP;
si (OrderType()==OP_SELL) TP_P = STP;

doble tp;

tp =(ObjectGetValueByShift( TP_P, OBJPROP_PRICE1)) || (ObjectGet( TP_P, OBJPROP_PRICE1));

-----------------------------------------------------------------------------------------------------------------

Luego he puesto esto en su lugar, lo que has dicho si?

----------------------------------------------------------

tp = ObjectGetValueByShift( TP_P,0);

 

¿alguna ayuda?

 
if (ObjectType(TP_P) == OBJ_TREND) tp = ObjectGetValueByShift(TP_P, shift);
else                               tp = ObjectGEt(TP_P, OBJPROP_PRICE1)
 
WHRoeder:


Tan sencillo ahora que lo he visto. Muchas gracias compañero por la ayuda. Esto ha funcionado como yo quería. Saludos....
 

Hola,

Tengo el siguiente código para obtener el precio de la línea de tendencia. No funciona. Cualquier ayuda por favor.

int obj_total = ObjectsTotal();
nombre de la cadena;
for(int j = 0; j<obj_total; j++)
{
nombre = ObjectName(j);
Print(j, "Objeto - ", nombre);
}
if(ObjectType(name) == OBJ_TREND && name == "Trendline1-m30")
{
precio1 = ObjectGetValueByShift(nombre, 0);
}

if(ObjectType(name) == OBJ_TREND && name == "Trendline2-m30")
{
precio2 = ObjectGetValueByShift(nombre, 0);
}

 

Hola, por favor utilice el botón SRC cuando publique el código.

Todo el código en amarillo está FUERA del bucle 'for'.

Así que el valor de 'nombre' es siempre el nombre del objeto final.

int obj_total = ObjectsTotal();
   string name;
   for(int j = 0; j<obj_total; j++)
   {
   name = ObjectName(j);
   Print(j, "Object - ", name);
   }
      if(ObjectType(name) == OBJ_TREND && name == "Trendline1-m30")
      {
       price1 = ObjectGetValueByShift(name, 0);
      }

      if(ObjectType(name) == OBJ_TREND && name == "Trendline2-m30")
      {
       price2 = ObjectGetValueByShift(name, 0);
      }


Tal vez intente esto (suponiendo que precio1 y precio2 ya están declarados en otro lugar):

   int obj_total = ObjectsTotal();
   string name;
   for(int j = 0; j<obj_total; j++)
     {
      name = ObjectName(j);
      Print(j, "Object - ", name);
      if(ObjectType(name) == OBJ_TREND && name == "Trendline1-m30")
        {
         price1 = ObjectGetValueByShift(name, 0);
        }

      if(ObjectType(name) == OBJ_TREND && name == "Trendline2-m30")
        {
         price2 = ObjectGetValueByShift(name, 0);
        }
     }