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

 
Vitaly Gorbunov:
Bueno, yo no diría que es una muleta. Espero un flujo de citas desde el servidor, de lo contrario el historial no se actualizará. Otra opción es tomar la hora local del ordenador y corregirla por la zona horaria, que se puede calcular automáticamente y al final esperar a que se actualicen las cotizaciones de todas formas. Está un poco torcido pero no creo que los de Metakvot cambien nada en MT4. Al fin y al cabo es un problema de conexión al servidor que hay que solucionar de una forma u otra.

Allí. Y te has dado cuenta de que esto es un problema. Pero, creo que se debería arreglar y/o complementar la ayuda con un algoritmo para todos los casos.

La función de recuperación de datos no debería dar datos a la izquierda sin errores y advertencias.

Este no es mi primer tema (el anterior era sobre MT5, no he obtenido ninguna respuesta clara al respecto) sobre la sincronización y los siguientes cuelgues/errores.

 
Alexey Kozitsyn:

Sí, eso parece funcionar. Como opción, se puede utilizar. Gracias. Pero me gustaría que las funciones siguieran funcionando correctamente.

Sólo funcionará si no faltan barras, y esto no se puede garantizar. Supongamos, por ejemplo, que no hay nuevas cotizaciones en el servidor para la hora actual (y quizá también para la hora anterior). En consecuencia, la última barra es una barra anterior.

 
Ihor Herasko:

Hay dos errores importantes en su enfoque de la verificación:

  1. En el OnInit() del indicador no se pueden obtener datos correctos de ningún TF, ni siquiera del actual. El OnInit() del indicador al inicio del terminal se ejecuta casi en una ventana vacía (puede que ni siquiera existan los datos que había en el momento del cierre del terminal). Incluso el entorno del mercado a menudo no está disponible. La ayuda contiene un montón de advertencias sobre lo que no se debe hacer en OnInit(). Por lo tanto, no hay mucho que incluir en su código. Por lo general, se trata de una comprobación de los valores de los parámetros establecidos, la vinculación de los búferes indicadores a las matrices y la creación de clases, si se utilizan. Todo lo demás debe hacerse en OnCalculate().
  2. Todas estas comprobaciones sólo pueden realizarse después de que se llame a OnCalculate al menos una vez.

Igor, ¿has revisado el código? ¿De dónde saco algo en OnInit()?

2. ¿Qué controles? ¿Dónde está escrito que el indicador debe utilizar OnCalculate() al menos una vez para funcionar correctamente?

 
Alexey Navoykov:

Sólo funcionará si no hay barras perdidas, lo que no se puede garantizar. Supongamos que no hay nuevas cotizaciones en el servidor para la hora actual (y quizá también para la hora anterior). En consecuencia, la última barra es una barra anterior.

Esta solución (como he dicho, muleta) es mucho mejor que nada. Como he dicho (y demostrado), hay un error. Cuanto antes lo arreglen los desarrolladores, mejor.

 
Así que no da datos falsos, da los últimos datos recibidos y el error no se producirá hasta que el terminal empiece a recibir el flujo de citas. En su caso, está tratando de recibir datos antes de que se reciban las cotizaciones, y el programador debe manejar esas situaciones excepcionales por sí mismo. Así como cualquier fallo de conexión. ¿Cuál es el problema con MT5?
 
Alexey Navoykov:

Sólo funcionará si no hay barras perdidas, lo que no se puede garantizar. Supongamos que no hay nuevas cotizaciones en el servidor para la hora actual (y quizá también para la hora anterior). Respectivamente, la última barra es una barra anterior.

El método con iBarShift permite identificar los huecos de la historia, pero es necesario comprobarlo a ciertos intervalos. He escrito para mí un procedimiento que se ocupa de ello, y después de eso me he olvidado de las lagunas en los programas MTF.
 
Vitaly Gorbunov:
Así que no da ningún dato sobrante, da el último dato recibido y el error no se producirá hasta que el terminal empiece a recibir un flujo de cotizaciones. En su caso, está intentando recibir datos antes de que empiecen las cotizaciones. Así como cualquier fallo de conexión. ¿Cuál es el problema con MT5?

Oh, hombre... Ya hemos superado esa fase del desmantelamiento. Vea su propio registro:

2018.09.21 15:02:42.910 Custom indicator test XAUUSD,H1: removed
2018.09.21 15:15:27.985 test XAUUSD,H1: initialized
2018.09.21 15:15:29.520 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.21 15:15:29.552 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.21 15:15:29.589 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.21 15:15:29.605 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.21 15:15:29.636 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.21 15:15:29.667 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.21 15:15:29.705 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.21 15:15:29.736 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.21 15:15:29.768 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.21 15:15:29.805 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.21 15:15:29.837 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.21 15:15:29.868 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.21 15:15:29.906 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.21 15:15:29.937 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.21 15:15:29.969 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.21 15:15:30.006 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.21 15:15:30.038 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.21 15:15:30.069 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.21 15:15:30.106 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.21 15:15:30.138 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.21 15:15:30.169 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.21 15:15:31.880 test XAUUSD,H1: test.mq4: Данные истории по последнему часу отсутствуют! Ошибка #4066
2018.09.21 15:15:31.900 test XAUUSD,H1: test.mq4: Данные истории по последнему часу отсутствуют! Ошибка #0
2018.09.21 15:15:31.940 test XAUUSD,H1: test.mq4: Данные истории по последнему часу отсутствуют! Ошибка #0
2018.09.21 15:15:31.990 test XAUUSD,H1: test.mq4: Данные истории по последнему часу отсутствуют! Ошибка #0
2018.09.21 15:15:32.010 test XAUUSD,H1: test.mq4: Данные истории по последнему часу отсутствуют! Ошибка #0
2018.09.21 15:15:32.074 test XAUUSD,H1: test.mq4: Данные истории по последнему часу отсутствуют! Ошибка #0
2018.09.21 15:15:32.100 test XAUUSD,H1: test.mq4: Данные истории по последнему часу отсутствуют! Ошибка #0
2018.09.21 15:15:32.120 test XAUUSD,H1: test.mq4: Данные истории по последнему часу отсутствуют! Ошибка #0
2018.09.21 15:15:32.174 test XAUUSD,H1: test.mq4: Данные истории по последнему часу отсутствуют! Ошибка #0

Secuencia. Primero comprobamos la conexión. Una vez establecida la conexión, obtenemos la hora. Explícame, por favor, ¿por qué el error 4066 se devuelve primero y luego no se devuelve? ¿Qué ha cambiado en 20ms desde la última llamada?

 
Vitaly Gorbunov:
¿Cuál es el problema con MT5 allí muy interesante para leer?

https://www.mql5.com/ru/forum/219829

Клинч в индикаторах mql5.
Клинч в индикаторах mql5.
  • 2017.11.15
  • www.mql5.com
Недавно столкнулся с одной крайне неприятной проблемой...
 
Alexey Kozitsyn:

Esta solución (como he dicho, muleta) es mucho mejor que nada. Como he dicho (y demostrado), hay un error. Cuanto antes lo arreglen los desarrolladores, mejor.

Pues bien, si hablamos de la mejor muletilla, debemos comprobar no sólo la hora actual, sino todas las horas anteriores desde la última barra conocida. De lo contrario, se atascará en esta comprobación, si no hay cotizaciones para la hora actual.
 
Alexey Kozitsyn:

Oh, hombre... Ya hemos superado esa fase del desmantelamiento. Vea su propio registro:

Secuencia. Primero comprobamos la conexión. Una vez establecida la conexión, obtenemos la hora. Explícame, por favor, ¿por qué el error 4066 se devuelve primero y luego no se devuelve? ¿Qué ha cambiado en 20ms desde la última llamada?

Los datos se cargan error 4066 entonces es un error metakvotovtsev más probable que los datos recibidos se procesa para esta situación un error no se inventa. Hasta ahí, todo tiene sentido.