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

 
Amon1953:

¿Glitches en MQL4?


Fallo similar en otras dos situaciones también con el operador if()

Y si piensas detenidamente y tratas de entender la razón por la que este fallo es el único para ti? ¿Tal vez tenga algún tipo de terminal especial?

 
Alexey Viktorov:

Y si lo piensas detenidamente y tratas de entender la razón por la que eres el único con ese fallo??? ¿Tal vez tenga algún tipo de terminal especial?

El terminal de InstaForex no es inusual. Y este fallo no apareció de inmediato. Al principio estaba bien, pero de repente desapareció. Reinstalar el terminal no ha servido de nada. Tendré que comprobarlo con otro corredor.
 
Amon1953:
Estaba usando un terminal de InstaForex, nada raro. Y este fallo no apareció de inmediato. Al principio era normal, pero de repente desapareció. Reinstalar el terminal no ha servido de nada. Tendré que comprobarlo con otro corredor.

Sí, bueno... No entendí el código morse. Tendré que sacarlo a la luz...

¿Tal vez deberíamos buscar errores en la lógica y en nuestro propio código?

 

Un consejo. Estoy optimizando, y digamos que no necesito ningún parámetro, por ejemplo, hay muvimientos lentos y rápidos, y no necesito obtener tales periodos de estos muvimientos en los resultados de la optimización que el periodo del rápido sea mayor que el del lento.

¿Cómo puedo "saltar" este paso de optimización por condición?

 
Alexey Viktorov:

Sí, bueno... No entendí el código morse. Tendré que sacarlo a la luz...

¿Tal vez haya que buscar errores en la lógica y en el propio código?

Este fragmento de código es independiente del algoritmo general.

Aquí está el mismo bloque, pero funciona correctamente. Utiliza dos operadores IF(), aunque sólo se puede utilizar uno como se describe en el libro de texto. Esto demuestra el funcionamiento incorrecto del operador IF()/.

//+------------------------------------------------------------------+
   if((cnt_OO>=2))
     {
      for(int h=OrdersTotal()-1; h>=0; h--)
        {
         if(OrderSelect(h,SELECT_BY_POS))
           {
            if((OrderMagicNumber()==Magic))
              {
               Nextstep  = NextStep;
               BaseNext  = OrderOpenPrice();
               LotsNext  = NormalizeDouble(OrderLots()*K,lotDigit);
               if(NewPB>0)
                  PBcloseON=true;
               Alert("Pospedny Order NEXT  ",OrderTicket());
               Alert("Otkritih orderov  ",cnt_OO);
               break;
              }
           }
        }
     }
   if((cnt_OO==1))
     {
      LotsNext=NormalizeDouble(Lots*Prikup,lotDigit);
      Alert("Otkritih orderov NEXT net ");
      Alert("Otkritih orderov  ",cnt_OO);
     }
//+------------------------------------------------------------------+
 
Amon1953:

Este fragmento de código es independiente del algoritmo general.

Aquí está el mismo bloque, pero funciona correctamente. Utiliza dos operadores IF(), aunque se podría utilizar uno como se describe en el libro de texto. Esto demuestra el funcionamiento incorrecto del operador IF()/.


Esto es sólo una demostración de un error. Antes de hablar de un funcionamiento incorrecto, debería imprimir los valores de las variables utilizadas en los operadores if() y compararlos con los valores esperados.

Y aprender a insertar el código para que se pueda leer normalmente.

 
Alexey Viktorov:

Esto sólo demuestra que tenemos un error. Antes de decir que no funciona correctamente, debería imprimir los valores de las variables utilizadas en las sentencias if() y compararlos con los valores esperados.

Y aprender a insertar el código para que se pueda leer normalmente.

Acabo de copiar el texto del programa. En el primer post se ve claramente que hay 5 pedidos y el mensaje de que no hay pedidos como Next. this is the second third order etc.

El programa es sencillo como un clavo, cnt_OO es el número de órdenes abiertas, si hay más de una significa que hay una orden Next, Esto es parte del bloque para restaurar los parámetros en caso de fallo y reinicio del EA

 
Amon1953:

Acabo de copiar el texto del programa. En el primer post se ve claramente que hay 5 pedidos y el mensaje de que no hay pedidos como Next. this is the second third order etc.

El programa es tan sencillo como un clavo, cnt_OO es un número de órdenes abiertas, si hay más de una significa que hay una orden Next, Esto es parte del bloque de recuperación de parámetros en caso de fallo y reinicio del EA

¿Dónde está la garantía de que esto sea así?

 
Amon1953:

Acabo de copiar el texto del programa. En el primer post se ve claramente que hay 5 pedidos y el mensaje de que no hay pedidos como Next. this is the second third order etc.

El programa es simple como un clavo, cnt_OO es el número de órdenes abiertas, si hay más de una significa que hay una orden Siguiente, Esto es parte del bloque para recuperar los parámetros en caso de fallo y reinicio del EA

  1. Utiliza Alt+S para pegar el código, o utiliza los botones de la barra de formato en tu publicación:



  2. Su lógica no funciona, no el operador condicional if()
  3. He corregido el código de tu post para que sea normal para los que te ayuden, respétalos por favor. La próxima vez la gente no intentará ayudar mirando los scrips que ofreces.
 
Artyom Trishkin:
  1. Utiliza Alt+S para pegar el código, o utiliza los botones de la barra de formato en tu publicación:



  2. Su lógica no funciona, no el operador condicional if()
  3. He corregido el código de tu post para que sea normal para los que te están ayudando, respétalos por favor. La próxima vez la gente no intentará ayudar mirando los scrips que ofreces.
Gracias por los consejos. No soy un programador muy experimentado. y uso un estilo que me resulta cómodo, aún no he aprendido a llevarlo a un estilo común en este sitio. - Zeitnote.