Escapada de Londres - página 2

 

Sí, todo por una decisión de diseño desconcertante:) Así que la hora del servidor puede no corresponder a ningún reloj mundial conocido en el transcurso de un año.

Tengo un método para determinar con precisión la hora GMT, especialmente durante el backtesting. Este método parece funcionar para los corredores que

  • han cambiado la TZ en medio de sus datos históricos (Alpari),
  • o usan DST no estándar contra su zona horaria (FXCM) como señala Trece,

pero el enfoque todavía se siente un poco hackish para mí.

Se trata de descargar las cotizaciones basadas en GMT de otras fuentes (dukascopy), y comparar la hora de cada máximo diario. Funciona bien para el backtesting, pero actualmente estoy descargando manualmente los datos de la hora, y filtrando los máximos (usando un script de perl).

Una vez que pueda obtener automáticamente las cotizaciones GMT H1 de al menos dos fuentes, entonces me sentiré cómodo con este método para mis propósitos.

 
SDC:

¿Cómo podría MT4 ser más adecuado para hacer eso? No sé tú, pero yo no me entusiasmaría con la tarea de crear una calculadora de offset histórico regional GMT. ¿Te imaginas? omg. Si alguna vez lo hago, lo pondré en el mercado y será mejor que tengáis un gran talonario de cheques ;)

Una calculadora histórica de GMT no es en sí misma particularmente difícil (el sistema operativo Windows ya contiene todos los datos que necesitas), pero no es el problema principal. El problema es que puedes determinar el desfase actual entre la hora del corredor y la hora GMT, pero no sabes si ha cambiado o cuándo. Usando el ejemplo anterior, puedes ver que el broker está actualmente en GMT+3 (asumiendo que el reloj del ordenador local es preciso...), pero no sabes que el broker estaba en GMT+2 la semana pasada.

Es muy posible que el terminal de cliente de MT4 simplemente no tenga esta información.

Si la tuviera, entonces MT4 podría proporcionar los datos desnudos que podrías procesar tú mismo, o una función que te permitiera decir "convertir cualquier fecha del broker en el pasado a GMT". Una vez que tengas eso, podrías usar una tabla de búsqueda (o la API de Windows) para convertir esa hora GMT histórica a otra zona horaria como Londres. Sin embargo, sería preferible que MT4 lo hiciera también por ti, por ejemplo, un par de funciones como las siguientes

datetime ConvertToBrokerTime(datetime HistoricRegionalTime, SortSortOfTimeZoneInfo FromTimeZone);

datetime ConvertFromBrokerTime(datetime HistoricBrokerTime, SortSortOfTimeZoneInfo ToTimeZone);

 
(Asumo que la razón de no fijar en UTC es para que los brokers puedan correr en EET dando cinco velas D1 por semana, evitando una sexta vela pequeña que lleva a subestimaciones sistémicas de cosas como D1 ATR en brokers que usan GMTZ).
 
gchrmt4:
(Supongo que la razón de no fijar en UTC es para que los brokers puedan funcionar a EET dando cinco velas D1 por semana, evitando una sexta vela pequeña que lleva a subestimar sistemáticamente cosas como el ATR D1 en los brokers que usan GMTZ).


Habría puesto todas esas cosas en el cliente, pero hace que el cliente sea más complicado en diferentes lugares :) Pero al menos se conocen todas las variables.
 

Otro enfoque, según esta página sólo hay 62 corredores MT4? Así que no sería demasiado difícil tener una tabla de búsqueda para cada corredor y su definición de tiempo (si se basa en una zona horaria real o una combinación ala FXCM), y también incorporar los cambios históricos (ala Alpari).

Este es probablemente el enfoque más robusto, y sólo tendrá que ajustar cada vez que un corredor decide que quiere confundir a sus clientes un poco más :)

 

gchrmt4:

[1] La hora de su servidor de GMT+3 puede corresponder a EEST en el sentido de que EEST es GMT+3 pero, según tanto Wikipedia como worldclock.com, en ninguna parte debería estar todavía en EEST. Ese cambio no debería producirse hasta el 30 de marzo. La hora actual en Chipre, Grecia, Israel, etc. es GMT+2.

[2] Por lo tanto, lo que probablemente tienes es un broker que ejecuta sus servidores en GMT+2, pero que cambia al horario de verano en las fechas de Estados Unidos y no en las europeas.

[3] Eso no es lo mismo que EET/EEST. (Y es incluso menos predecible en términos de poder escribir código que ajuste automáticamente las horas y las fechas sin tener que pedir al usuario algún tipo de información sobre qué configuración horaria utiliza el broker).

  1. Correcto.
  2. Correcto.
  3. EET es GMT+2, pero GMT+2 no es sólo EET. También, EEST es GMT+3, pero GMT+3 no es sólo EEST. Al describir el huso horario de mi broker como EET/EEST, sólo pretendía deducir que era GMT+2 mientras estaba en horario estándar y GMT+3 mientras estaba en horario de verano, sobre todo porque en este hilo se habla de la fuga de Londres. Pido disculpas si mi descripción ha llevado a alguna confusión :)

Por lo tanto, si el broker ha cambiado recientemente de GMT+2 a GMT+3, en lugar de estar a punto de cambiar de GMT+3 a GMT+4, lo que significa es que el desfase actual entre la hora del broker y la hora GMT sería erróneo si se intentara aplicar a las barras de la semana pasada, antes del cambio de reloj en EEUU. Esta semana, las barras del broker van 3 horas por delante de Londres. La semana pasada se adelantaron 2 horas. (Y, a partir del 30 de marzo, volverán a tener 2 horas de adelanto). Si tomas ese desfase actual de 3 horas y lo utilizas para intentar obtener el precio a las 8 de la mañana, hora de Londres, de un día de la semana pasada, obtendrás una respuesta errónea.

Un corredor generalmente no cambia la zona horaria de su servidor a menudo, excepto para ajustar el horario de verano. Para el ajuste del horario de verano, puedo utilizar cualquier fecha/hora (desde 1987 (EE.UU.) y 1996 (UE) hasta 2020 y más allá) y calcular, para EE.UU. y la UE, el día en que comienza el horario de verano y el día en que termina. Una vez que tenga ese código, todo lo que tiene que hacer es ajustar el desplazamiento actual a GMT para acomodar el horario de verano para la hora que está mirando.

Con TimeGMT(), que es nuevo en la compilación 600+, usted calcula el desplazamiento actual de su corredor a GMT. Pero uno no puede (hasta donde yo sé) determinar la zona horaria de un corredor desde el pasado. Por ejemplo, tuve un corredor que cambió la zona horaria de su servidor de GMT para la hora estándar a GMT+2 para la hora estándar. Me ocupé de eso codificando un desplazamiento de la hora antes del cambio porque todos los datos del historial eran GMT, no GMT+2 (y no quería modificar el historial para reflejar GMT+2). En ese sentido, creo que tú y yo estamos de acuerdo. Mientras un corredor no cambie de zona horaria sin más (que no sea para ajustarse al horario de verano), debería poder calcular el desfase con respecto a GMT y ajustar ese desfase al horario de verano.

Todo lo que estoy diciendo es que la información que es posible obtener sólo de MT4 sí mismo - compensación actual entre el tiempo del corredor y GMT - es inadecuado en la práctica para hacer cosas como decir "calcular el precio de apertura en Londres el pasado miércoles".

Creo que no estoy de acuerdo contigo. Mientras el broker no cambie las zonas horarias, excepto para ajustar el horario de verano, puedes determinar el desfase con respecto a GMT, tanto para la hora actual como para la histórica. Si la semana pasada, durante el horario estándar, el broker es GMT+2 y Londres es GMT, entonces las 8 de la mañana, hora de Londres, serían las 10 de la mañana, hora del servidor. El mes que viene, durante el horario de verano, cuando el broker es GMT+3 y Londres es GMT+1, las 8am de Londres corresponderían a las 10am de la hora del servidor. Hoy, cuando el broker está en horario de verano y Londres está en horario estándar, el broker es GMT+3 y Londres es GMT, por lo que las 8am de Londres corresponderían a las 11am hora del servidor.

Si el broker es GMT-5 (EST) y Londres es GMT, las 8am de Londres son las 3am hora del servidor.

 
gchrmt4:

Una calculadora histórica de GMT no es en sí misma particularmente difícil (el sistema operativo Windows ya contiene todos los datos que necesitas), pero no es el problema principal. El problema es que puedes determinar el desfase actual entre la hora del bróker y la hora GMT, pero no sabes si ha cambiado o cuándo. Usando el ejemplo anterior, puedes ver que el broker está actualmente en GMT+3 (asumiendo que el reloj del ordenador local es preciso...), pero no sabes que el broker estaba en GMT+2 la semana pasada.

Es muy posible que el terminal de cliente de MT4 simplemente no tenga esta información.

Si la tuviera, entonces MT4 podría proporcionar los datos desnudos que podrías procesar tú mismo, o una función que te permitiera decir "convertir cualquier fecha del broker en el pasado a GMT". Una vez que tengas eso, podrías usar una tabla de búsqueda (o la API de Windows) para convertir esa hora GMT histórica a otra zona horaria como Londres. Sin embargo, sería preferible que MT4 lo hiciera también por ti, por ejemplo, un par de funciones como las siguientes

datetime ConvertToBrokerTime(datetime HistoricRegionalTime, SortSortOfTimeZoneInfo FromTimeZone);

datetime ConvertFromBrokerTime(datetime HistoricBrokerTime, SortSortOfTimeZoneInfo ToTimeZone);


Sí, no sería difícil si no hubiera DST, pero hay lol... sería una pesadilla para codificar. Las anomalías históricas estarían por todas partes. Regiones que cambiaron la zona horaria que usan, regiones que experimentaron con no usar el DST en absoluto y luego volvieron al DST, regiones que respetan el DST en algunos lugares pero no en otros, habría tantas anomalias a tener en cuenta, en todo el mundo...
 
ydrol:

Otro enfoque, según esta página sólo hay 62 corredores MT4? Así que no sería demasiado difícil tener una tabla de búsqueda para cada corredor y su definición de tiempo (si se basa en una zona horaria real o una combinación ala FXCM), y también incorporar los cambios históricos (ala Alpari).

62 es una subestimación, y los corredores más grandes tienen servidores establecidos en diferentes zonas horarias.
 

Thirteen:

Si la semana pasada, en horario estándar, el broker está en GMT+2 y Londres en GMT,

¿Cómo, utilizando sólo la información que proporciona MT4, sabes que el broker estaba en GMT+2 la semana pasada?
 

El enfoque de sentido común sería que el servidor de MT4 usara GMT todo el tiempo, pero sabes que no van a hacer eso.