Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 601

 

Hola a todos.

Dar un consejo, una solución o hurgar donde leer.

Solución de un problema: manejo de errores cuando se llama a iCustom()...

// MQL4
void OnTick()
{
....
   ResetLastError();
   double val=iCustom(NULL,0,INDUK_NAME,..., i);
   if ((nErr=GetLastError())>0)
   {
      Print("Error in ",__FUNCTION__," code=",nErr);
      ExpertRemove();
      return;
   }
...
}

Esta construcción de código no funciona si "iCustom" se bloquea con el mensaje "array out of range" al depurar un EA en el probador.

 
Un desbordamiento de matriz es un error crítico, después del cualla ejecución del programa se detiene y no se ejecuta más código. Por eso no funciona su gestor de errores. Y no necesita el código de error en este caso - está escrito en blanco y negro en el registro lo que causó el accidente. E incluso especificó la línea y la posición en la que ocurrió.
 
Sergei Vladimirov:
El desbordamiento de la matriz es un error crítico, después del cualel programa se detiene y no se ejecuta más código. Por eso no funciona tu manejador de errores. Y no necesita el código de error en este caso, está escrito en blanco y negro en el diario lo que causó el accidente. E incluso especificó la línea y la posición en la que ocurrió.

1. Sé que el error está en el cuaderno de bitácora y que es crítico

2. No entiendo por qué el probador no para el EA y tiene que forzar una parada?

¿Existen construcciones de lenguaje para el manejo de excepciones para organizar el Asesor Experto y su interacción con el usuario de una manera conveniente en caso de errores críticos?

 
fromme2you:

1. Sé que el error está en el cuaderno de bitácora y que es crítico

2. No entiendo por qué el probador no para el EA y tiene que forzar una parada?

3. ¿Existen construcciones de lenguaje para el manejo de excepciones, para organizar el Asesor Experto y su interacción con el usuario de una manera conveniente en caso de errores críticos?

El probador se detiene si un error crítico (por ejemplo, la división por 0, o una sobrecarga de la matriz) se ha producido en el código del Asesor Experto.

Evitar que el código se detenga en el probador o en el código real, creo que es posible sólo si introducimos las comprobaciones adecuadas en el código. Lo cual no siempre es factible. Esto es especialmente cierto si está utilizando el código de otra persona o pega el código de otra persona como una subrutina en su producto.

Otra forma complicada es leer los archivos de registro de forma programada.

 
Yuri Evseenkov:

El comprobador se detiene si se produce un error crítico (por ejemplo, la división por 0 o la superación de una matriz) en el código del propio asesor....

Otra forma complicada es leer los registros de forma programada.

Ya veo, gracias por la respuesta.

Otra pregunta: ¿cómo puedo conseguir que el desarrollador de MT4 y el tiempo de ejecución del código MQL se esfuercen en desarrollar un lenguaje para el manejo de excepciones como el de mi ejemplo, o uno similar?

 
fromme2you:

Ya veo, gracias por la respuesta.

Otra pregunta: ¿cómo puedo conseguir que los desarrolladores del entorno de ejecución de código de MT4 y MQL pongan sus mentes y sus manos en el desarrollo de un lenguaje para el manejo de excepciones, como en mi ejemplo o de significado similar?

Ponte en contacto con servesdesk, crea un hilo/encuesta en el foro.

No hace mucho tiempo que la MT4 estaba enterrada. Ahora la tendencia, si no se invierte, al menos la plataforma y el lenguaje se han actualizado significativamente en los últimos tiempos.

 
Yuri Evseenkov:

Contacta con servesdesk, crea un tema/encuesta en el foro.

No hace mucho tiempo que la MT4 estaba siendo enterrada. Ahora la tendencia, si no se invierte, al menos la plataforma y el lenguaje se han actualizado significativamente en los últimos tiempos.

se enterró por primera vez en 2009

 

Hola. Si estáis familiarizados con el tema, por favor, aconsejadme cómo solucionar este problema. Quiero encontrar los precios de apertura de las barras a una hora determinada, por ejemplo a la 01:00, analizando por ejemplo las 50 últimas barras. No estoy seguro de cómo realizar esta tarea en mql5.


Ya sea calculando la fecha actual + añadiendo el tiempo requerido a la misma y luego añadiendo veinticuatro horas, este método funcionó en mql4.

Por lo que entendí, hay estructuras especiales con salida de tiempo, pero no puedo usarlas por alguna razón.

Gracias de antemano por los comentarios.

Estaría muy agradecido si alguien pudiera lanzarme un pequeño trozo de código para entender el proceso de pensamiento.
 
Alex:

Hola. Si estáis familiarizados con el tema, por favor, aconsejadme cómo solucionar este problema. Necesito encontrar los precios de apertura de las barras a una hora determinada, por ejemplo a la 01:00, analizando por ejemplo las 50 últimas barras. No estoy seguro de cómo realizar esta tarea en mql5.


Ya sea calculando la fecha actual + añadiendo el tiempo requerido a la misma y luego añadiendo veinticuatro horas, este método funcionó en mql4.

Por lo que entendí, hay estructuras especiales con salida de tiempo, pero no puedo usarlas por alguna razón.

Gracias de antemano por la respuesta.

Estaría muy agradecido si alguien pudiera lanzarme un poco de código para entender el proceso de pensamiento.
¿En un indicador o en un Asesor Experto / script?
 
Hola. Pregunta: si uso ordersendasync en mt5 para una orden pendiente, ¿cómo funcionará? Por ejemplo, ¿enviará una orden de compra sin esperar respuesta, pero cuando la orden se active, esperará a que el servidor responda a la orden de compra?