Preguntas de un "tonto" - página 197

 
FiftyStars:

¿Cómo puedo determinar cuándo se abrirá la siguiente barra, es decir, la que aún no se ha formado?

En general, no se puede; aunque en el caso de plazos de media hora o más, la probabilidad de una predicción correcta supera el 99,9%.
 

¿Es posible hacer un bucle con una solicitud como ésta para abrir un pedido? )

      while(result.retcode!=TRADE_RETCODE_DONE)
      {
        if(OrderCheck(request,check))
        {
          OrderSend(request,result);
        }
        if((MQL5InfoInteger(MQL5_TESTING)||MQL5InfoInteger(MQL5_OPTIMIZATION)))break;
      }
 
G001: ¿Es posible hacer un bucle con una solicitud como ésta para abrir un pedido? )
No es deseable. Imagina, por ejemplo, que en lugar de TRADE_RETCODE_DONE el servidor devuelve la respuesta de que el pedido ha sido realizado. Entonces su código sobrecargaría el servidor con el mismo tipo de peticiones.
 
Yedelkin:
No es deseable. Imagine, por ejemplo, que en lugar de TRADE_RETCODE_DONE el servidor devuelve una respuesta de que se ha realizado un pedido. Entonces su código sobrecargaría el servidor con el mismo tipo de peticiones.

¿Sería mejor?

      int ResBear = -1;
      while(ResBear == -1)
      {
        if(OrderCheck(request,check))
        {
          ResBear = OrderSend(request,result);
        }
        if((MQL5InfoInteger(MQL5_TESTING)||MQL5InfoInteger(MQL5_OPTIMIZATION)))break;
      }
 
G001: ¿Será mejor así?

Poco probable. Mira la descripción de la función OrderSend(). Debería decirte que si se ejecuta con éxito, aún debes comprobar el código de retorno. Así que tendremos que ir por el camino más tedioso: tomar una lista de códigos de retorno y pensar en el comportamiento del programa para cada uno de estos códigos. Es decir, "enviamos OrderSend(), recibimos el código de retorno, reaccionamos al retcode que recibimos".

El segundo punto. Es mejor utilizar el modelo de eventos. Es decir, no hacer un bucle en la ejecución de la función después de que llegue un tick, y después de varios intentos fallidos, salir de la función y esperar un nuevo tick.

 
Gracias, realmente tedioso, prefiero poner un límite de intentos.
 
G001: Gracias, realmente tedioso, pondré un mejor límite de intentos.

De todos modos, algún día tendrás que hacerlo :) Hablando desde mi propia experiencia.

 
Estoy seguro, pero hasta ahora el conocimiento es escaso.
 

Perdón, ¿cómo hago para que en el probador no haya ninguna condición, pero en el probador en modo visual haya una condición?

La lista de propiedades no lo permite, y por alguna razón esta condición no me funciona:

if(MQL5InfoInteger(MQL5_TESTER)!=1 || MQL5InfoInteger(MQL5_TESTER)==1 && MQL5InfoInteger(MQL5_VISUAL_MODE)==1)

 
if(MQL5InfoInteger(MQL5_TESTER)!=1 || MQL5InfoInteger(MQL5_TESTER)==1 && MQL5InfoInteger(MQL5_VISUAL_MODE)==1)

de esta condición se desprende que actuará en tres situaciones:

1)Cuando el probador está funcionando

2)Cuando el comprobador NO funciona

3)Cuando el comprobador visual funciona

para que la función funcione siempre, lo más probable es que debas eliminar la segunda condición y conectar la primera y la tercera con &&

Razón de la queja: