Discusión sobre el artículo "Traslado de MQL4 a MQL5" - página 11

 

Hola a todos

¿sabeis como usar ObjectSet(objname,OBJPROP_FIRSTLEVEL+level,value) en MQL5? he intentado buscar OBJPROP_FIRSTLEVEL pero no lo encuentro en MQL5

mql4:

void _SetFibLevel(string objname, int level, double value, string description)

//+------------------------------------------------------------------+

{

ObjectSet(nombreobjeto,OBJPROP_FIRSTLEVEL+nivel,valor);

ObjectSetFiboDescription(nombreobjeto,nivel,descripción);

}

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

 
vietlh216:

¿sabes como usar ObjectSet(objname,OBJPROP_FIRSTLEVEL+level,value) en MQL5? he intentado buscar OBJPROP_FIRSTLEVEL pero no lo encuentro en MQL5

mql4:

void _SetFibLevel(string objname, int level, double value, string description)

//+------------------------------------------------------------------+

{

ObjectSet(nombreobjeto,OBJPROP_FIRSTLEVEL+nivel,valor);

ObjectSetFiboDescription(nombreobjeto,nivel,descripción);

}

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


Puedes leer mi blogpost para una solución ya hecha.

 
Stanislav Korotky:

Usted puede leer mi blogpost para una solución ya hecha.


Muy útil, gracias :)

 
Stanislav Korotky:

Usted puede leer mi blogpost para una solución lista.


Gracias Stanislav Korotky para su solución, pero yo no soy bueno mucho en MQL5 y todavía no sé cómo convertir OBJPROP_FIRSTLEVEL a utilizar en MQL5. no encuentro la misma propiedad de objeto para convertirlo

en mql4:

OBJPROP_FIRSTLEVEL+n

210+n

int

Valor entero para establecer/obtener el valor del nivel del objeto Fibonacci con indice n. El indice n puede ser desde 0 (numero de niveles -1), pero no mayor de 31

pero no lo encuentro en MQL5

ex: MQL4 : ObjectSetFiboDescription( nombredeobjeto,nivel,descripcion);->MQL5: ObjectSetString(0,nombredeobjeto,OBJPROP_LEVELTEXT,nivel,descripcion);

MQL4: ObjectSet(nombre_objeto,OBJPROP_FIRSTLEVEL+nivel,valor); -> MQL5: ????

 
vietlh216:

Gracias Stanislav Korotky por tu solucion, pero no soy muy bueno en MQL5 y todavia no se como convertir OBJPROP_FIRSTLEVEL para usarlo en MQL5. no encuentro la misma propiedad de objeto para convertirla

en mql4:

OBJPROP_FIRSTLEVEL+n

210+n

int

Valor entero para establecer/obtener el valor del nivel del objeto Fibonacci con indice n. El indice n puede ser desde 0 (numero de niveles -1), pero no mayor de 31

pero no lo encuentro en MQL5

ex: MQL4 : ObjectSetFiboDescription( nombredeobjeto,nivel,descripcion);->MQL5: ObjectSetString(0,nombredeobjeto,OBJPROP_LEVELTEXT,nivel,descripcion);

MQL4: ObjectSet(nombre_objeto,OBJPROP_FIRSTLEVEL+nivel,valor); -> MQL5: ObjectSetString(0,nombre_objeto,OBJPROP_LEVELTEXT,nivel,descripcion)


ah, lo encuentro

ObjectSetDouble(0,nombre_objeto,OBJPROP_LEVELVALUE,nivel,valor);

^^

 
vietlh216:

ah, lo encuentro

ObjectSetDouble(0,objname,OBJPROP_LEVELVALUE,level,value);

^^


Puedes probar el siguiente addendum a mi include:

class OBJPROP_DOUBLE_BROKER_EXTENDED: public OBJPROP_DOUBLE_BROKER
{
  public:
    OBJPROP_DOUBLE_BROKER_EXTENDED(const ENUM_OBJECT_PROPERTY_DOUBLE property, const int modifier): OBJPROP_DOUBLE_BROKER(property, modifier)
    {
    }
    
    OBJPROP_DOUBLE_BROKER_EXTENDED *operator+(const int add)
    {
      i = add;
      return &this;
    }
};

OBJPROP_DOUBLE_BROKER_EXTENDED OBJPROP_FIRSTLEVEL(OBJPROP_LEVELVALUE, 0);

Despues de esto tu codigo MQL4 inicial deberia funcionar tal cual.

 
Stanislav Korotky:

Usted puede tratar de la siguiente adición a mi incluir:

Despues de esto tu codigo MQL4 inicial deberia funcionar tal cual.


Ahora entiendo cómo funciona, Gracias Stanislav Korotky tanto.

 

Sugiero sustituir

string StringConcatenate(..);

por

string StringFormat("",..);

Ambas funciones devuelven una cadena, lo que facilita su sustitución en determinadas condiciones.

 
Stanislav Korotky:

Usted puede tratar de la siguiente adición a mi incluir:

Despues de esto tu codigo MQL4 inicial deberia funcionar como esta.

He añadido la clase OBJPROP_DOUBLE_BROKER_EXTENDED a su ind4to5 incluir y parece que no funciona como en la última Metaeditor construir 1958 llamada de ObjectSetDouble(chart_ID,name,OBJPROP_PRICE1,price1) devuelve error de compilación 'ObjectSetDouble' - ninguna de las sobrecargas se puede aplicar a la llamada a la función. ¿Alguna idea?

 

Yo mismo descubrí que ObjectSetDouble no estaba incluido en ind4to5. Añadí el siguiente código a mqh y solucionó el problema.

bool ObjectSetDouble(long chart_id, const string name, const OBJPROP_DOUBLE_BROKER &property, const double value)
{
  return ObjectSetDouble(chart_id, name, property.p, property.i, value);
}