[SERVICE DESK] ¡Error al obtener la hora de la TF superior en el temporizador! - página 8
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
3. punto interesante de análisis, lo que devuelve CopyClose(), lo he comprobado yo mismo, si no hay archivo .hst para el TF solicitado, CopyClose() nunca devuelve más de 2048 - es decir, este es el valor máximo que se puede descargar?
No. 2048 es la parte de los datos que se descargan del servidor cuando no hay ningún archivo en el cliente.
No. 2048 es un trozo de datos que se descarga del servidor cuando no hay datos en el cliente.
Hm, he estado haciendo MQLs durante mucho tiempo, pero todavía es inesperado para mí
Bien, aquí hay un ejemplo de la ayuda:https://www.mql5.com/ru/docs/series/timeseries_access
dice que:
La siguiente comprobación importante es verificar el tipo de programa desde el que se llama a la función. Recordemos que el envío de una solicitud de actualización de series temporales con el mismo periodo que el indicador que llama a la actualización es altamente indeseable. La no conveniencia de solicitar datos del mismo periodo de tiempo que el del indicador viene determinada por el hecho de que la actualización de los datos históricos se realiza en el mismo hilo en el que trabaja el indicador. Por lo tanto, existe una alta probabilidad de que se produzca un choque. Para comprobarlo, utilizamos la funciónMQL5InfoInteger() con el modificadorMQL5_PROGRAM_TYPE.
Es decir, el ejemplohttps://www.mql5.com/ru/code/449
no es adecuado para cargar los datos del historial en el indicador MT4, y cómo puedo descargar todo el historial por el indicador, si no hay un archivo .hst preparado, es decir, el indicador inicializa la carga del historial por su propio símbolo
cómo puedo saber que aquí "descargué" todo el historial igual a iBars(Symbol(),PERIOD_CURRENT);
iBars() también devolverá un valor incorrecto? - todavía no hay historia, por lo que no hay iBars()
parece que en MT5 el historial se descarga sin problemas, sólo hay que esperar y comprobar el estado de los datos históricos, pero en MT4?
PD: en kodobase ayer estuve buscando un indicador multidivisa que funcionara correctamente para MT4, pero los códigos no son susceptibles de imitación, en muchos ejemplos de kodobase, en general no hay paginación del historial en el indicador
En los cuatrillizos, la "tecla de inicio fue presionada". No hay otra manera. Si llevas un tiempo estudiando el tema, deberías recordar la frase "ladrillo en el teclado"
https://www.mql5.com/ru/code/9968
https://www.mql5.com/ru/code/9153
https://www.mql5.com/ru/code/9888
Puedes consultar mi descargador gratuito.
Puedes ver mi descargador gratuito.
¿Cómo sugieres que mire tu código? Sé cómo descargar el historial, pero no sé cómo comprobar el indicador de descarga.
En el cuádruple "pulse la tecla de inicio". No hay otra manera. Si llevas mucho tiempo estudiando el tema, deberías recordar la frase "ladrillo en el teclado"
https://www.mql5.com/ru/code/9968
https://www.mql5.com/ru/code/9153
https://www.mql5.com/ru/code/9888
Cuando empecé a usar MQL durante los últimos años no aprendí nada de MQL, desde este año estoy realmente sorprendido de que los desarrolladores hayan hecho la compatibilidad entre MT5 y MT4 tanto como sea posible y hayan mejorado el rendimiento de MQL4 - a pesar de que se nos dijo antes que MT4 como proyecto no se desarrollará más, sólo hay errores para ser corregidos
y aquí era una esperanza que no encontré información sobre la carga automática de la historia en el indicador MT4
Básicamente, si usted quiere garantizar la descarga de todo el historial en MT4 y sin controles adicionales, entonces es más fácil de usar el código dfix - escribir el bar datetime t=0 en el archivo .hst;
¿Cómo sugieres que vea tu código?
Creía que sólo necesitabas que el historial se cargara automáticamente...
Muy a mi pesar, tengo que volver a tratar el tema de la obtención de datos de TF senior en MT4 una vez más. Esta vez debido a que las técnicas sugeridas aquí no funcionaron.
Este es el código que utilizamos:
Implementa los datos de paginación como me aconsejaron:
Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading
[SERVICESDESK] ¡Error al obtener la hora de la TF más antigua en el temporizador!
Slava, 2018.09.27 06:20
Se ha discutido muchas veces. 12 páginas en "error 4066".
Y te han aconsejado correctamente que envíes la solicitud en OnInit y la analices en OnCalculate.
¿Para qué necesitas un temporizador de milisegundos? Está impidiendo que el terminal del cliente se inicie normalmente. No son los mensajes del viento los que interfieren con tu temporizador, es tu temporizador el que interfiere con todos. Una vez más: LOS INDICADORES EN EL TERMINAL MT4 DEL CLIENTE TRABAJAN EN POTENCIA DE INTERFAZ.
La implementación es exactamente así: la primera solicitud de datos tiene lugar en OnInit(). Luego, esperamos a que se establezca la conexión con el servidor de comercio, entonces en OnCalculate()! obtenemos los datos del TF alto. Hoy tenemos el resultado en el primer lanzamiento:
Como podemos ver en el registro, obtuvimos valores erróneos de la hora y la hora del día.
Sí, los desarrolladores(@Slava) pueden notar que no he aplicado todos los consejos que me dieron. Es decir, sigo ejecutando el temporizador rápido en OnInit(), aunque originalmente me aconsejaron ejecutar el temporizador lento. Sin embargo, en este caso, se hace a propósito. Si el temporizador rápido se inicia en el hilo de la interfaz y puede ralentizar la recuperación de datos de otros indicadores - esto es un gran problema. La documentación no contiene ninguna advertencia al respecto, se puede poner un programa con un temporizador rápido que puede convertirse en una especie de "virus" y causar "averías" de otros programas.
En vista de lo anterior, creo que deberíamos introducir restricciones al temporizador de milisegundos o especificar en la documentación de EventSetMillisecondTimer() que la función no puede iniciarse en OnInit() para permitir que el terminal se levante normalmente en el arranque.
Ahora viene la parte divertida. El código no tiene temporizadores:
Y sigues sin conseguir el resultado que quieres. Los desarrolladores(@Slava), por favor, comenten. Es imposible obtener datos correctos cuando se carga el terminal desde varios TFs superiores. La condición obligatoria es que el terminal debe estar apagado más de una hora después del apagado (porque obtenemos los datos de la barra durante una hora). Y, por supuesto, el arranque en TF menos de una hora.
El temporizador resultó no estar involucrado.