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

 
No puedo entender qué es lo que está mal. Hay un bucle while en el indicador, pero parece funcionar bien. Al principio durante las pruebas todo funciona, pero en un mismo lugar el programa se cuelga, la terminal también, tengo que borrar el código fuente de la terminal. En otras monedas también se cuelga. He puesto comentarios por todo el programa y finalmente llega aComment(rates_total+"\n "+prev_calculated); antes de devolver y se para. Y el comentario muestra que tenemos números como 3247 y 3247, lo que significa que la condición para trabajar (rates_total>prev_calculated) no se cumple y el programa no debe hacer nada. ¿Por qué se cuelga?
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   if(rates_total>prev_calculated)
     { 
         Comment("0");
          if(Count==0)
             total = rates_total-4;
          else
             total = rates_total - prev_calculated+2;

          if(total>10000)
             total=10000;

          for(int i=total; i>2; i--)
            {
            }
       
          while(begin<size-2)
            {
            }
      Count++;
     }  
     Comment(rates_total+"\n"+prev_calculated);          //виснет здесь(коммент 3247 и 3247)
   return(rates_total);
  }
 
Aleksandr Kononov Comment(rates_total+"\n "+prev_calculated); antes de devolver y se para. Y el comentario muestra que tenemos números como 3247 y 3247, lo que significa que la condición para trabajar (rates_total>prev_calculated) no se cumple y el programa no debe hacer nada. ¿Por qué se cuelga?

Lea atentamente la documentación.

Si la expresión es verdadera, el operador se ejecuta hasta que la expresión se convierte en falsa.
¿Cuáles son las variables de la condición del bucle? Y si la condición inicial es verdadera, ¿cuándo se convierte en falsa para salir del bucle?
Оператор цикла while - Операторы - Основы языка - Справочник MQL4
Оператор цикла while - Операторы - Основы языка - Справочник MQL4
  • docs.mql4.com
Оператор цикла while - Операторы - Основы языка - Справочник MQL4
 
Alexey Viktorov #:

Lea atentamente la documentación.

¿Qué son estas variables en la condición de bucle? Y si la condición inicial es verdadera, ¿cuándo se convierte en falsa para salir del bucle?

Los bucles son sólo para entender lo que son. Si los escribes, obtendrás un montón de código. La pregunta es por qué el trabajo se detiene antes de la vuelta, aunque ni siquiera pasa nada en esta garrapata. En los índices de comentarios el total es igual al prev calculado, por lo que no hacemos nada en absoluto.

 
El indicador funciona si acaso, pero se cuelga en algunas condiciones
 
¿Podría ser algún tipo de error de retraso? El programa llega al final y se cuelga, ¿es posible?
 
Al fin y al cabo, el problema está en el bucle. El comentario se retrasa. La impresión es la última en el bucle
 
¿Puedes decirme cómo encontrar una flecha entre otros objetos en mql4? Necesito borrar todas las flechas y dejar las líneas
 
Aleksandr Kononov #:
¿Puedes decirme cómo encontrar una flecha entre otros objetos en mql4? Eliminar todas las flechas y dejar las líneas

Bien, lee la documentación

int  ObjectsDeleteAll(
   int    sub_window=EMPTY,   // индекс окна
   int    object_type=EMPTY   // тип объекта для удаления
   );
ObjectsDeleteAll - Графические объекты - Справочник MQL4
ObjectsDeleteAll - Графические объекты - Справочник MQL4
  • docs.mql4.com
ObjectsDeleteAll - Графические объекты - Справочник MQL4
 
Gracias.
 
Buen momento para conocer mql4. Existe una función que cierra la parte porcentual de la orden perdedora más lejana de la serie debido a las posiciones rentables de cualquier dirección. Necesitamos ayuda para mejorar esta función. Es decir, necesitamos cerrar parcialmente todas las órdenes restantes de la serie (debido a posiciones rentables de cualquier dirección) en lugar de la más larga. Gracias de antemano.
Archivos adjuntos:
KJH.mq4  8 kb