Errores, fallos, preguntas - página 439

 
Ayuda plz, estoy haciendo un EA en el Asistente en MEditor5, compilar, poner en un gráfico y que (la EA) se bloquea, es decir, el icono aparece y desaparece.
 
cokfx:
Ayuda, plz hacer un EA en el Asistente en MEditor5, compilar, poner en un gráfico y que (el EA) aparece, es decir, el icono aparece y desaparece.

¿En qué símbolo y en qué TF ponemos el búho? ¿Qué dice el registro?
 
Renat:

Significa que no hay un error del probador o del entorno de ejecución de MQL5, sino que hay un error explícito del programador.

Hm. El programador ha detectado un comportamiento inesperado del programa, ha detectado la esencia de este comportamiento, lo ha reproducido explícitamente, ha puesto un ejemplo sencillo llevándolo al absurdo(Dormir con valores negativos) y el programador dice que es un error del programador :) Aunque "error del programador" significa, por ejemplo, una declaración explícita de que la función Sleep en el probador no funciona.

De las explicaciones anteriores se deduce que los desarrolladores creen que es aceptable utilizar valores negativos en la función Sleep(). Aunque a partir de la descripción de la función ("...retrasa la ejecución del Asesor Experto actual o del script durante un intervalo determinado") no podemos suponer que el intervalo de retardo pueda ser calculado con números negativos. Hablando de errores, considere mi afirmación de que el terminal debería haber impedido el uso de valores negativos en la función Sleep() como tal.

 
Yedelkin:

Hm. El programador ha detectado un comportamiento inesperado del programa, ha detectado la esencia de este comportamiento, lo ha reproducido explícitamente, ha puesto un ejemplo sencillo llevándolo al absurdo(Dormir con valores negativos) y el programador dice que es un error del programador :) Aunque el "error del programador" significa, por ejemplo, una declaración explícita de que la función Sleep en el probador no funciona.

De las explicaciones anteriores se deduce que los desarrolladores creen que es aceptable utilizar valores negativos en la función Sleep(). Aunque a partir de la descripción de la función ("...retrasa la ejecución del Asesor Experto actual o del script durante un intervalo determinado") no podemos suponer que el intervalo de retardo pueda ser calculado con números negativos. Hablando de errores, considere mi afirmación de que el terminal debería haber impedido el uso de valores negativos en la función Sleep() como tal.

¿Y probablemente esperaba que saliera del Sueño antes de entrar en él si el retraso era negativo?
 

Yedelkin, ¿cómo te imaginas que el compilador controla los parámetros de las funciones? Y hay docenas de estas funciones que deben tener los valores de los parámetros bajo control.

Aquí hay una de dos cosas: o velocidad de compilación o control paranoico total.

Hemos elegido el primer camino. En este caso el subsistema de tiempo de ejecución no omite los parámetros erróneos en tiempo de ejecución generando un código de error, que podemos obtener utilizando la función GetLastError.

Документация по MQL5: Проверка состояния / GetLastError
Документация по MQL5: Проверка состояния / GetLastError
  • www.mql5.com
Проверка состояния / GetLastError - Документация по MQL5
 
Serías tan amable de calcular el resultado de tu valor negativo, relacionarlo con 32 bits de int, luego leer sobre desbordamiento aritmético y encontrar tus 17 días.

Bienvenido al mundo de la programación real.
 
uncleVic:
¿Y habrá esperado que salga del Sueño antes de entrar en él con un valor negativo?

La suposición sobre las expectativas es errónea.

Trabajar con valores negativos no estaba previsto en absoluto. Ver mi post anterior:"a partir de la descripción de la función ("...retrasa la ejecución del EA o script actual durante un intervalo determinado") es difícil suponer que el intervalo de retardo pueda contarse en números negativos". Y no se trata de lo que "podría esperar", se trata de que, efectivamente, la función SLeep permite trabajar con valores negativos. Cuando se descubrió esto - envió un mensaje. Si considera que esta operación de la función Sleep() es aceptable, lo seguirá siendo.

 
Yedelkin:

pero que, de hecho, la función SLeep permite trabajar con valores negativos.

¿Qué sugieres? ¿Para poner fin al programa en caso de emergencia?
 
Yedelkin:

La suposición sobre las expectativas es errónea.

No estaba previsto que funcionara con valores negativos en absoluto. Ver mi post anterior:"a partir de la descripción de la función ("...retrasa la ejecución del EA o script actual durante un intervalo determinado") es difícil suponer que el intervalo de retardo pueda contarse en números negativos". Y no se trata de lo que "podría esperar", se trata de que, efectivamente, la función SLeep permite trabajar con valores negativos. Cuando se descubrió esto - envió un mensaje. Si considera que esta operación de Sleep() es aceptable, sigue siéndolo.

Por supuesto, la representación interna es sin signo.

Puedes cambiar el tipo de parámetro a uint.

 
stringo:

Yedelkin, ¿cómo te imaginas que el compilador controla los parámetros de las funciones? Y hay docenas de estas funciones que deben tener los valores de los parámetros bajo control.

Aquí hay una de dos cosas: o velocidad de compilación o control paranoico total.

Hemos elegido el primer camino. En este caso el subsistema de tiempo de ejecución no omite los parámetros incorrectos en la etapa de ejecución, generando un código de error, que podemos obtener utilizando la función GetLastError.

Sí señores, ¡siempre estoy de su lado! :) Y yo sé en programación sólo una pequeña parte de lo que tú sabes (me guío sólo por MQL5 Reference). Pero si veo algunos puntos que no están claros para mí personalmente, escribo sobre ello. Intento dar un ejemplo vívido del "momento poco claro", si es posible. Por lo tanto, si cree que la "alarma es falsa", resulta que o bien he entendido mal los materiales de referencia, o bien los materiales de referencia no reflejan toda la información necesaria para entender el momento. En este caso, me bastaría con una indicación (advertencia) en la sección "Función Sleep" de que (1) "el compilador no controla el valor del parámetro de la función, por lo que la función puede trabajar con valores negativos" y (2) "la función Sleep() es totalmente compatible con el probador".

Partiendo del paradigma descrito del trabajo del compilador, tengo una urgencia: reflejar en las notas a decenas de funciones que los valores de sus parámetros no son controlados por el terminal.

Razón de la queja: