[SERVICE DESK] ¡Error al obtener la hora de la TF superior en el temporizador! - página 14

 
Sin embargo, lo he hecho varias veces. Es curioso, pero no siempre funciona. A veces la conexión no se establece a tiempo.
Tengo una buena conexión propia. Tal vez esa sea la razón.
 
Pero eso no es lo que he notado con esta prueba. Incluso cuando se ejecuta ahora con el recuento de pases, obtengo 10 pases a través de OnCalculate, incluso hoy. Resulta que la mejor opción para usted parece ser hacer un pequeño retraso cuando el indicador se inicia.
 
Konstantin Nikitin:
Pero he notado algo diferente con esta prueba. Incluso cuando se ejecuta ahora con el conteo de pases, obtengo 10 pases a través de OnCalculate. Resulta que la mejor opción para ti parece ser un pequeño retraso en el inicio del indicador.

No es necesaria una solución de muleta, repito. El comportamiento actual no me gusta, los consejos de los propios desarrolladores no funcionan. Dejar que las cosas sigan su curso por sí solas no servirá de nada. Se ha detectado un problema, que debe ser resuelto por los desarrolladores.

 
Alexey Kozitsyn:

No hay necesidad de una solución de muleta, lo diré de nuevo. El comportamiento actual no me gusta, los consejos de los propios desarrolladores no funcionan. Dejar que las cosas sigan su curso por sí solas no servirá de nada. Si se descubre un problema, los desarrolladores deben resolverlo.

He descrito lo que he visto. Hay que pensar en cómo solucionarlo. Es decir, no sirve para nada tener el seguimiento de la primera pasada, etc...

 
Konstantin Nikitin:

He descrito lo que he visto. Tengo que pensar en cómo afrontarlo. Es decir, no es bueno de ninguna manera conseguir el seguimiento de la primera pasada, etc.

Creo que es necesario que haya un mecanismo probado en esos lugares "finos", que funcione correctamente con los números de error (llamando a cada petición), o algún tipo de comprobación adicional en las funciones de acceso al historial (a saber, incorporado, para no buscar esos problemas durante horas). Y este mecanismo debe describirse detalladamente en la documentación. Entonces no habrá preguntas para los desarrolladores. ¿Pero cómo es ahora? En la documentación no hay nada sobre el acceso a los datos de los TF más antiguos, por lo que los propios desarrolladores no saben cómo obtener los datos. Sólo hay algunos enlaces al foro de los años de la barba donde tienen el mismo razonamiento.

 
Si conoce la diferencia con el servidor en horas. Puede utilizar una comparación del reloj local actual con la hora de apertura de la última barra horaria. TimeCurrent no es adecuado porque la hora puede no estar actualizada.
Algo así
     MqlDateTime mqlDateTime;
     TimeToStruct( (TimeLocal()-60*3), mqlDateTime );
     mqlDateTime.min = 0;
     mqlDateTime.sec = 0;
     
     if( IsConnected() )
          Comment( TimeToString( iTime(Symbol(), PERIOD_H1, 0) ), "\n", TimeToString( StructToTime(mqlDateTime) ) );
 
Alexey Kozitsyn:

Por cierto, no has respondido a tu pregunta sobre la versión del terminal.

terminal 1121 y 1090

Alexey Kozitsyn:

Se establece la comunicación con el servidor. Cuando se solicitan datos del TF superior, si los datos no están listos - error o retorno 0. Si los datos están listos - devuelve SOLO los datos reales. Eso es todo. Si los datos no están listos durante mucho tiempo - que devuelva error o 0.

Aquí no hay ningún error. Hay una conexión y datos del historial.
Los datos que ya están en el terminal se muestran inmediatamente.
Los nuevos datos vienen con un retraso, porque es necesario enviar una solicitud al corredor y cargarlos si falta algo.

En cuanto aparecen nuevos datos, se genera inmediatamente un tick (incluso ahora, cuando el mercado está cerrado).
Sólo tiene que comprobar la aparición de una nueva barra y cambiar las variables usted mismo.

ps. no hay bandera para la relevancia de los datos en mt4.

 
Taras Slobodyanik:

terminal 1121 y 1090

Aquí no hay ningún error. Hay una conexión y los datos del historial están presentes.
Los datos que ya están en el terminal se muestran inmediatamente.
Los nuevos datos llegan con retraso porque hay que enviar una solicitud al intermediario y cargarlos si falta algo.

En cuanto aparecen nuevos datos, se genera inmediatamente un tick (incluso ahora, cuando el mercado está cerrado).
Sólo tienes que comprobar la aparición de una nueva barra y cambiar las variables tú mismo.

ps. no hay bandera de actualización de datos en mt4.

Como ya he dicho, habrá que probar de nuevo en el terminal actualizado.

Estoy categóricamente en desacuerdo con el comportamiento que no se puede controlar. La función devuelve datos incorrectos sin error - esto es incorrecto. Usted mismo se encontrará más tarde con una situación así y se preguntará cuál es el problema.

Digamos que al principio la función devolvía un error. Están liberados. Durante la siguiente consulta, la función no devolvió el error y devolvió algunos datos "incorrectos". ¿Está bien?

 

¿Qué quiere decir con datos incorrectos?

Cuando no están, o no hay conexión, o lo que sea, entonces sí, hay un error.
Y no hay nada que contar.

Cuando todos los datos son correctos, todo está bien y todo funciona.

Su indicador no sigue la actualización de los datos.
Los bares nuevos vienen del corredor y no los comprueban.
He añadido un par de líneas para mostrar que al comprobarlo, todo es correcto.

Es una situación de trabajo para comprobar un nuevo bar.

 
Taras Slobodyanik:

¿Qué quiere decir con datos incorrectos?

Y mira mi primer post. ¿Ves ahí el error 4066? Entonces el error es 0 y devuelve datos incorrectos. ¿Por qué la función (SeriesInfoInteger() en este caso) no comprueba la relevancia antes de enviar los datos? ¿Por qué no se activa el indicador de error? Verás, prefiero esperar un poco más a que pasen las comprobaciones internas que buscar errores después.

Pero después me han dado muchos consejos, con los que todavía no he conseguido ningún resultado. Y resultó que ni siquiera se trataba del temporizador.

Razón de la queja: