Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1794

 

Foro sobre trading, sistemas de trading automatizados y comprobación de estrategias

Cualquier pregunta de los novatos en MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos

MakarFX, 2021.12.06 12:14

bool FindObject(string name)
  {
   if(ObjectFind(0,name)) return(false);
   return(true);
  }

Y en el caso de un error, ¿qué devolverá tu función, true?

 
Mihail Matkovskij #:

Y en caso de error, ¿qué devolverá tu función, true?

¿Qué error? Dame un ejemplo.
 
MakarFX #:

Esto, sí, debería funcionar.

 
Nerd Trader #:

¿Se refiere al cambio de color a través de la propiedad? Tengo una variante de este tipo, necesito entender por qué esta no funciona.

Funciona, pero reacciona a cualquier OnChartEven, es decir, borra->crea con el precio "0"->mueve al cursor. De ahí el parpadeo

 
Nerd Trader #:

¿Te refieres al cambio de color a través de una propiedad? Tengo esa opción, necesito entender por qué no funciona.

No. Es para que los objetos no parpadeen y aparezcan/desaparezcan, no reboten como escaldados y la CPU no haga ruido...

Entonces, ¿qué pasa, cuando el objeto en la ventana principal es "0" su función devolverá false? Explica el punto con>=0... o igual a cero.

Mira con atención.

if (ObjectFind(chart, name) >= 0)

¿En qué rango de valores la condición será verdadera?

 
MakarFX #:
¿Qué error? Pon un ejemplo.

¿Qué suele ser cierto? Todo lo que no sea 0 (lo mencioné anteriormente). Y tienes verdadero sólo cuando la condición devuelve falso en 0. El objeto está en el sótano (ObjectFind(ch, nombre) > 0) - falso. Pero el error (-1) es verdadero.

Por lo tanto, aquí está la variante correcta:

bool objectExist(const long _chartID, const string _name) { return(ObjectFind(_chartID, _name) >= 0); } // чётко определим условие существования объекта!
 
Mihail Matkovskij #:

No. Es para que los objetos no parpadeen y aparezcan/desaparezcan, salten como escaldados y la CPU no haga ruido...

Presta mucha atención.

¿En qué rango de valores la condición será verdadera?

Y si
ObjectFind(chart, name)=-1

¿entonces qué?

 
MakarFX #:

Funciona, pero reacciona a cualquier OnChartEven, es decir, borra->crea con el precio "0"->mueve al cursor. De ahí el parpadeo.

¿Por qué? ¿Por qué no sucede para la línea verde? Las condiciones son idénticas sólo inversas (precio > Ask) para el amarillo y (precio < Bid) para el verde.


Mihail Matkovskij #:

Evita que los objetos parpadeen y aparezcan/desaparezcan, reboten como animales escaldados y el ruido de la CPU...

Por alguna razón, las líneas verdes y rojas sólo tienen una copia y no parpadean cuando se mueve el cursor.


Mihail Matkovskij #:

Mira con atención.

¿En qué rango de valores la función devolverá verdadero?

de cero en adelante?
 
Mihail Matkovskij #:

¿Qué suele ser cierto? Todo lo que no sea 0 (lo he mencionado anteriormente). Y se tiene true sólo cuando la condición devuelve false con un valor de 0.

Mira de nuevo con atención

 
MakarFX #:

Vuelve a mirar con atención.

Modificado el mensaje. Pruebe su función y la mía con un ID de gráfico incorrecto y cuando el objeto se crea en la subventana. Y mira lo que tu función devolverá y lo que la mía devolverá. Y lee la documentación con atención. Todos los enlaces y la cita se dan arriba.

Razón de la queja: