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
La versión de DealingWithTime.mqh v. 1.01 del artículo Dealing with Time (Part 2): Funciones ( https://www.mql5.com/en/articles/9929 ) dejó de funcionar porque MQ cambió el comportamiento de la función CopyTime( ) algún tiempo después de la publicación de este artículo. Ahora esta función ya no devuelve valores de tiempo futuros si son mayores que TimeCurrent( ) especificado para los parámetros start_time y/o stop_time. En su lugar, se devuelve la hora de apertura de la última barra actual como el mayor valor posible.
Dado que el final de la sesión FX se determinaba de esta forma para determinar el cambio de hora del broker, ¡esto conduce ahora a valores incorrectos!
Este cálculo se ha modificado en la versión 2.03. Esta versión ya está disponible en CodeBase aquí: https://www.mql5.com/en/code/45287.
Pero también el cálculo del cambio de hora ha sido completamente cambiado, de modo que ahora se cubren los complicados tiempos del cambio de hora de Sydney (Australia) hasta los años 70.
También se adjunta la tabla DST 1975 - 2030.xlsx en archivo zip con todos los cambios de hora desde los años 70 para que todo el mundo pueda comprobar que las fórmulas funcionan correctamente, aquí hay un ejemplo de una serie de la tabla:
El 1 de enero de 1982 es la hora estándar en EEUU (DST==0) y el próximo cambio será el 25 de abril de 1982, el último (25 del mes) domingo de abril (4). La tabla ya está ordenada por zona horaria geográfica (columna A), luego por zona horaria del año (columna L, spr=primavera, aut=otoño,) y finalmente por fecha de consulta (columna C). La tabla puede ser creada automáticamente por el EA incluido (no se puede ejecutar un script en modo depuración). Test_DST 2.mq5 si lo ejecuta en modo depuración y copia las líneas del registro del diario en el depurador y las pega en una hoja de cálculo; El separador de celdas sería el espacio.
Además, ahora hay una nueva y sencilla función SecTillClose(), que proporciona el tiempo restante en segundos (la moneda del tiempo MQ) hasta que se cierre el mercado de divisas - sin CopyTime(). Esto es interesante para aquellos que quieren cerrar sus posiciones antes del fin de semana o no quieren abrir una nueva posición en un período definido antes del fin de semana.
El indicador incluido DealingWithTime_TestIndi.mq5, como comentario en el gráfico, muestra no sólo el horario de verano en Europa, EE.UU. y Australia (Sydney), sino también la hora actual y la diferencia horaria de varias ciudades. Aquí puedes encontrar una tabla con diferentes horas locales en las principales ciudades para comparar: https://www.timeanddate.com/worldclock/. Así podrás comprobar los valores en cualquier momento. Este indicador también muestra cómo se determinan y utilizan estos valores (qué se resta o se suma a qué), lo que facilita su uso por tu cuenta: copiar y pegar, la forma más rápida de programar.
Las dos últimas líneas también muestran el último segundo de la sesión FX actual y el tiempo restante en horas (que es más fácil de juzgar) y en segundos. En Nueva York, cuando la sesión FX se cierra a las 17:00 hora local de un viernes, no hay barras válidas abiertas a las 17:00 hora de Nueva York. Por lo tanto, en esta función, se resta 1 segundo para obtener la última hora de apertura válida de la última barra en el horario del broker. Sin embargo, algunos brokers cierran su sesión de FX unos minutos antes, dejando de proporcionar precios y dejando de aceptar órdenes de negociación.
Tiempo de procesamiento del artículo (Parte 2): La versión DealingWithTime.mqh v. 1.01 de la función ( https://www.mql5.com/en/articles/9929 ) dejó de funcionar porque MQ cambió CopyTime() para que funcionara algún tiempo después de la publicación de este artículo. Ahora, la función ya no devuelve el valor de tiempo futuro si es mayor que el TimeCurrent( ) especificado para los parámetros start_time y/o stop_time. En su lugar, se devuelve la hora de apertura de la última barra actual como valor máximo posible.
Dado que el final de la sesión FX se determina de este modo para determinar el desfase horario del corredor, ¡se obtiene un valor incorrecto!
Este cálculo se ha modificado en la versión 2.03. Esta versión ya está disponible en la base de código: https: //www.mql5.com/en/code/45287.
También se ha cambiado completamente el cálculo del cambio de hora, de forma que ahora cubre el tiempo complejo del cambio de hora de Sydney (Australia) a los años 70.
También se adjunta como archivo zip la tabla DST 1975 - 2030.xlsx con todos los cambios de hora desde los años 70 para que todo el mundo pueda comprobar que las fórmulas funcionan correctamente, y a continuación se muestra una serie de ejemplo de la tabla:
El 1 de enero de 1982 está en hora estándar de EEUU (DST==0) y el próximo cambio será el 25 de abril de 1982, el último (25º día del mes) domingo (4) de abril. La tabla se ha ordenado por huso horario geográfico (columna A), después por huso horario anual (columna L, spr=primavera, aut=otoño) y, por último, por fecha de consulta (columna C). La tabla puede crearse automáticamente mediante el EA incluido (el script no puede ejecutarse en modo de depuración). Test_DST 2.mq5 Si lo ejecuta en modo de depuración y copia las filas del registro del diario desde el depurador y las pega en la hoja de cálculo; los separadores de celdas son los espacios.
Además, ahora hay una nueva función simple SecTillClose() que le da el tiempo restante en segundos antes del cierre del mercado de divisas (moneda de tiempo de MQ) - no hay necesidad de CopyTime(). Esto es interesante para aquellos que quieren cerrar una posición antes del fin de semana o no quieren abrir una nueva posición dentro del tiempo especificado antes del fin de semana.
El indicador incluido DealingWithTime_TestIndi.mq5 como nota al gráfico muestra no sólo el horario de verano en Europa, EE.UU. y Australia (Sydney), sino también la hora actual y la diferencia horaria entre las ciudades. Aquí puede encontrar tablas para comparar las diferentes horas locales en las principales ciudades: https: //www.timeanddate.com/worldclock/. Así, podrá comprobar estos valores en cualquier momento. El indicador también muestra cómo determinar y utilizar estos valores (a qué restarle o sumarle qué), lo que facilita que lo utilices tú mismo: copiar y pegar, que es la forma más rápida de programar.
Las dos últimas líneas también muestran el último segundo de la sesión actual de Forex, así como el tiempo restante en horas (más fácil de juzgar) y segundos. En Nueva York, cuando la sesión Forex se cierra a las 17:00 hora local del viernes, no hay barras válidas abiertas a las 17:00 hora de Nueva York. Por lo tanto, en esta función, reste 1 segundo para obtener la última hora de apertura válida de la última barra en el horario del broker. Sin embargo, algunos corredores cierran el mercado de divisas unos minutos antes y ya no ofrecen precios ni aceptan órdenes de operaciones.
La versión de DealingWithTime.mqh v. 1.01 del artículo Dealing with Time (Part 2): Funciones ( https://www.mql5.com/es/articles/9929 ) dejó de funcionar porque MQ cambió el comportamiento de CopyTime( ) algún tiempo después de la publicación de este artículo. Ahora esta función ya no devuelve valores de tiempo futuros si son mayores que el TimeCurrent( ) especificado para los parámetros start_time y/o stop_time. En su lugar, devuelve el valor de tiempo de apertura máximo posible de la última barra actual.
Dado que el final de la sesión de divisas se definió de forma que determinara el desfase horario del corredor, ¡esto da lugar ahora a valores incorrectos!
Este cálculo se ha modificado en la versión 2.03. Esta versión ya está disponible en CodeBase aquí: https://www.mql5.com/es/code/45287.
Pero también el cálculo de la traducción de la hora ha sido completamente cambiado, de modo que los complejos tiempos de traducción de la hora desde Sydney, Australia hasta los años 70 están ahora cubiertos.
También se adjunta la tabla DST 1975 - 2030.xlsx como un archivo zip con todos los cambios de tiempo desde los años 70 para que todos puedan comprobar las fórmulas funcionan correctamente, aquí está un ejemplo de la serie de la tabla:
1 de enero de 1982. - Hora estándar de EEUU (DST == 0), y el siguiente cambio es el 25 de abril de 1982, el último (25 del mes) domingo de abril (4). La tabla ya está ordenada por zona horaria geográfica (columna A), luego por zona horaria del año (columna L, spr=primavera, aut=otoño), y finalmente por la fecha de la consulta (columna C). La hoja de cálculo puede crearse automáticamente mediante un EA habilitado (el script no puede ejecutarse en modo de depuración). Test_DST 2.mq5 si lo ejecuta en modo de depuración y copia las líneas de registro en el depurador y las pega en la hoja de cálculo; El separador de celdas será un espacio.
Además, ahora hay una nueva función simple SecTillClose(), que le da el tiempo restante en segundos (moneda de tiempo MQ) hasta el cierre del mercado de divisas - sin CopyTime(). Esto es interesante para aquellos que quieren cerrar sus posiciones antes del fin de semana o no quieren abrir una nueva posición en un determinado período antes del fin de semana.
El indicador incluido DealingWithTime_TestIndi.mq5, como comentario al gráfico, muestra no sólo el horario de verano en Europa, EE.UU. y Australia (Sydney), sino también la hora actual y la diferencia horaria de diferentes ciudades. Aquí puedes encontrar una tabla con las diferentes horas locales de las principales ciudades para comparar: https://www.timeanddate.com/worldclock/. De esta forma puede comprobar los valores en cualquier momento. Este indicador también muestra cómo se definen y utilizan estos valores (qué se resta o se suma de qué), lo que facilita su uso por su cuenta: copiar y pegar, la forma más rápida de programar.
Las dos últimas líneas también muestran el último segundo de la sesión FX actual y el tiempo restante en horas (que es más fácil de juzgar) y segundos. En Nueva York, cuando la sesión FX se cierra a las 17:00 hora local del viernes, no hay ninguna barra válida abierta a las 17:00 hora de Nueva York. Por lo tanto, esta función resta 1 segundo para obtener la última hora de apertura válida de la última barra en el horario del broker. Sin embargo, algunos corredores terminan su sesión de divisas unos minutos antes, dejando de proporcionar precios o de aceptar órdenes de negociación.
Hola @Anil Varma
He leído el último post del autor @Carl Schreiber sobre la función CopyTime() pero como me resulta más comprensible la 1ª versión sigo usando DealingWithTime.mqh v . 1.01.
En mi indicador quiero:
Asigne a cada barra el tiempo bruto NY (segundos), la hora NY y el minuto NY utilizando los siguientes buffers para poder visualizarlos en la ventana de datos: double NyRawTimeBuffer[]; double NyHourBuffer[]; double NyMinuteBuffer[];La función funcione solo cuando el gráfico del timeframe donde se inicia la terminal esta en H1.
Si cierro el terminal y el timeframe se establece en digamos M5, y luego reinicio el terminal me da el siguiente error:
2024.02.18 15:33:38.048 MyFractals_V4 (EURUSD,M5) 240: CopyTime() FAILED for EURUSD H1: need times from 2024.02.12 02:00:00, but there are only from 1970.01.01 00:00:00 error: 4401
Usted ya me sugirió a través de mensajes a utilizar CheckLoadHistory() de este artículo ( https://www.mql5.com/es/code/1251 ) y colocarlo antes de CopyXXXX() función en su biblioteca:
Pero el problema sigue ahí.
En el checkhistory.mqh (fila 19) anoté el siguiente comentario pero no entiendo si puede ser un problema. Intenté comentarlo y probar el programa de nuevo pero no funcionó.
¿Hay alguna forma de corregir el error sin cambiar a la librería actualizada DealingWithTimeV2.03.mqh sin reescribir todo el código?
¿Tiene la "La alternativa utilizando a través de variables de entrada" la única manera de obtener tiempos correctos en el probador de estrategia?
Hola
He intentado modificar el código como a continuación y hasta ahora está trabajando para mí. Tenga en cuenta que he convertido la clase con constructores y todos los métodos son parte de la clase. La clase necesita ser llamada e inicializada en su EA/Clase de Estrategia.
CDealWithTime.OnTick() debe colocarse en EA/Strategy OnTick()
Este código calcula automáticamente el horario de verano para los corredores europeos y estadounidenses:
https://www.mql5.com/es/code/27860
El código anterior se utilizó en Forex Market Hours https://www.mql5.com/es/code/27771 para calcular los cambios de horario de verano.
Se pueden construir funciones similares para distintas zonas del mundo.
Hola Amrali
Bonito y sencillo código como alternativa al artículo DealingWithTime v2.03. Lo estudiaré con más detalle.
DealingWithTime.mqh v . 1.01.
Hola Daniel
DealingWithTime.mqh v . 1.01. Este artículo y su código ya no funciona debido a los cambios en los métodos de cálculo MQL, como se explica por Carl en DealingWithTime.mqh v 2.03 artículo https://www.mql5.com/es/code/45287
Usted no debe usarlo en absoluto.