Calendario económico. Preguntas, discusiones.

 

Quiero entender cómo funciona el calendario económico de MQL5, pero algo no va muy rápido. Me pasé casi todo el día de ayer y el principio de hoy, pero sigo sin entender por qué CalendarValueHistory no devuelve todos los eventos. O tal vez los confundo, estos eventos un poco...

Ayer me salían 4 eventos a las xx:45 como está escrito en el calendario. Escribo las horas del evento como "xx" porque la hora recibida no es la misma que la de la tabla. Pero al menos se podría entender que esto se debe a la diferencia entre la hora especificada y la hora del terminal o servidor de donde se obtuvieron los datos. Pero ahora sólo tengo 3 eventos con :45 minutos y no puedo entender por qué.

Y pregunta a los desarrolladores: Por qué en el array la primera fecha 2019.07.25 00:00 y las siguientes filas están ordenadas de forma ascendente. Vea la lista resultante.

2019.07.24 10:12:22.297 !00 (EURUSD,H1)        [id] [event_id]              [time]            [period] [revision]       [actual_value]         [prev_value] [revised_prev_value]     [forecast_value] [impact_type] [reserved]
2019.07.24 10:12:22.297 !00 (EURUSD,H1) [ 0]  96782   76020005 2019.07.25 00:00:00 1970.01.01 00:00:00          0 -9223372036854775808 -9223372036854775808 -9223372036854775808 -9223372036854775808             0          0
2019.07.24 10:12:22.297 !00 (EURUSD,H1) [ 1]  96840   76030003 2019.07.24 11:00:00 2019.07.01 00:00:00          0 -9223372036854775808             88500000 -9223372036854775808             91600000             0          0
2019.07.24 10:12:22.297 !00 (EURUSD,H1) [ 2] 100501  484020006 2019.07.24 11:00:00 2019.07.01 00:00:00          0 -9223372036854775808                10000 -9223372036854775808               110000             0          0
2019.07.24 10:12:22.297 !00 (EURUSD,H1) [ 3] 100502  484020007 2019.07.24 11:00:00 2019.07.01 00:00:00          0 -9223372036854775808               160000 -9223372036854775808               130000             0          0
// Пропущено, удалено вручную.
2019.07.24 10:12:22.297 !00 (EURUSD,H1) [59]  93627  410010001 2019.07.25 21:00:00 2019.07.01 00:00:00          0 -9223372036854775808             97500000 -9223372036854775808             97000000             0          0
2019.07.24 10:12:22.297 !00 (EURUSD,H1) [60]  87322  392030006 2019.07.25 23:30:00 2019.07.01 00:00:00          0 -9223372036854775808               900000 -9223372036854775808               900000             0          0
2019.07.24 10:12:22.297 !00 (EURUSD,H1) [61]  87323  392030004 2019.07.25 23:30:00 2019.07.01 00:00:00          0 -9223372036854775808              1100000 -9223372036854775808              1100000             0          0
2019.07.24 10:12:22.297 !00 (EURUSD,H1) [62]  87324  392030005 2019.07.25 23:30:00 2019.07.01 00:00:00          0 -9223372036854775808               800000 -9223372036854775808               800000             0          0
 

Algunas preguntas se han desvanecido. El tiempo se arregló. Resultó ser sencillo. La hora es GMT, y el sitio estaba representado por GMT+3, de ahí que se sumaran todos mis malentendidos.

Este es el primer resultado: Descripción del evento recibido, primera línea de la imagen


2019.07.24 11:29:03.972 !00 (EURUSD,H1) время и дата события - 2019.07.24 13:45:00
2019.07.24 11:29:03.972 !00 (EURUSD,H1) идентификатор события - 840500001
2019.07.24 11:29:03.972 !00 (EURUSD,H1) тип события из перечисления ENUM_CALENDAR_EVENT_TYPE - CALENDAR_TYPE_INDICATOR
2019.07.24 11:29:03.972 !00 (EURUSD,H1) сектор, к которому относится событие - CALENDAR_SECTOR_BUSINESS
2019.07.24 11:29:03.972 !00 (EURUSD,H1) частота (периодичность) события - CALENDAR_FREQUENCY_MONTH
2019.07.24 11:29:03.972 !00 (EURUSD,H1) режим времени события - CALENDAR_TIMEMODE_DATETIME
2019.07.24 11:29:03.972 !00 (EURUSD,H1) идентификатор страны - 840
2019.07.24 11:29:03.972 !00 (EURUSD,H1) текстовое имя страны (в текущей кодировке терминала) - Соединенные Штаты
2019.07.24 11:29:03.972 !00 (EURUSD,H1) единица измерения значения экономического индикатора - CALENDAR_UNIT_NONE
2019.07.24 11:29:03.972 !00 (EURUSD,H1) важность события - CALENDAR_IMPORTANCE_MODERATE
2019.07.24 11:29:03.972 !00 (EURUSD,H1) множитель значения экономического индикатора - CALENDAR_MULTIPLIER_NONE
2019.07.24 11:29:03.972 !00 (EURUSD,H1) количество знаков после запятой - 1
2019.07.24 11:29:03.972 !00 (EURUSD,H1) URL источника, где публикуется событие - https://www.markiteconomics.com
2019.07.24 11:29:03.972 !00 (EURUSD,H1) код события - markit-manufacturing-pmi
2019.07.24 11:29:03.972 !00 (EURUSD,H1) текстовое имя события на языке терминала (в текущей кодировке терминала) - Индекс менеджеров по закупкам в производственном секторе от Markit
 

Pregunta para los desarrolladores:

¿Por qué este código de la documentación, con pequeñas modificaciones

void OnStart()
{
   MqlCalendarValue values[]; 

//--- запросим историю событий от текущего времени до конца сегодняшнего дня.
   if(CalendarValueHistory(values,TimeCurrent(),iTime(_Symbol, PERIOD_D1, 0)+PeriodSeconds(PERIOD_D1))) 
     { 
      PrintFormat("Получены значения событий по country_code=%s: %d", ArraySize(values)); 
//--- выведем значения событий в Журнал 
      ArrayPrint(values);
      
     } 
   else 
     { 
      PrintFormat("Ошибка! Не удалось получить события по стране country_code=%s"); 
      PrintFormat("Код ошибки: %d",GetLastError()); 
     } 
//---
}

muestra que el tamaño de la matriz de valores es cero, pero sin embargo imprime todo lo que hay en el calendario. Es decir, se reciben todos los eventos.

2019.07.24 15:20:33.131 !00 (EURUSD,H1) Получены значения событий по country_code=(non-string passed): 0
2019.07.24 15:20:33.131 !00 (EURUSD,H1)      [id] [event_id]              [time]            [period] [revision]       [actual_value] [prev_value] [revised_prev_value]     [forecast_value] [impact_type] [reserved]
2019.07.24 15:20:33.131 !00 (EURUSD,H1) [0] 97265   76020013 2019.07.24 15:30:00 1970.01.01 00:00:00          0 -9223372036854775808     -1227000 -9223372036854775808             -2405000             0          0
2019.07.24 15:20:33.131 !00 (EURUSD,H1) [1] 87842  840220012 2019.07.24 17:00:00 1970.01.01 00:00:00          0 -9223372036854775808      1791000 -9223372036854775808 -9223372036854775808             0          0
2019.07.24 15:20:33.131 !00 (EURUSD,H1) [2] 93625  410010011 2019.07.24 23:00:00 2019.04.01 00:00:00          1 -9223372036854775808      -400000 -9223372036854775808               400000             0          0
2019.07.24 15:20:33.131 !00 (EURUSD,H1) [3] 93626  410010012 2019.07.24 23:00:00 2019.04.01 00:00:00          1 -9223372036854775808      1700000 -9223372036854775808              2900000             0          0
2019.07.24 15:20:33.131 !00 (EURUSD,H1) [4] 87394  392060016 2019.07.24 23:50:00 2019.06.01 00:00:00          0 -9223372036854775808       800000 -9223372036854775808                    0             0          0
2019.07.24 15:20:33.131 !00 (EURUSD,H1) [5] 97012  392070003 2019.07.24 23:50:00 2019.07.20 00:00:00          0 -9223372036854775808    950000000 -9223372036854775808 -9223372036854775808             0          0
2019.07.24 15:20:33.131 !00 (EURUSD,H1) [6] 97013  392070004 2019.07.24 23:50:00 2019.07.20 00:00:00          0 -9223372036854775808    -93100000 -9223372036854775808 -9223372036854775808             0          0

¿Dónde, qué no tiene tiempo para trabajar?

 
En la línea de formato %s es superfluo
 
Renat Fatkhullin:
En la cadena de formato %s es redundante

Sí, gracias. Ya lo he solucionado. Me he equivocado al arreglar el ejemplo de la documentación.

 

@Renat Fatkhullin Renat, ¿podemos esperar que algún día se haga una función como TimeGMTOffset(), sólo por la hora del servidor y no por la hora local? Porque las funciones del calendario económico utilizan la hora GMT y la hora local no suele coincidir con la del servidor. Así que, cuando tengo tiempo de noticias, tengo que traducirlo a tiempo terminal. Entiendo que puede haber problemas al llamar a esta función en fin de semana, pero puede detectar algún tipo de error, que esta función no está disponible en este momento, o lo que sea.

Hasta ahora he hecho lo siguiente: en OnInit() se calcula la diferencia de tiempo y se escribe en la variable global. Pero realmente no me gusta. En mi opinión sería mejor llamar a la función incorporada y ajustar la hora de las noticias a la hora del servidor. Especialmente el terminal probablemente tiene tiempo de servidor disponible los fines de semana también.

 
Alexey Viktorov:

@Renat Fatkhullin Renat, ¿podemos esperar que algún día se haga una función como TimeGMTOffset(), sólo por la hora del servidor y no por la hora local? Porque las funciones del calendario económico utilizan la hora GMT y la hora local no suele coincidir con la del servidor. Así que, cuando tengo tiempo de noticias, tengo que traducirlo a tiempo terminal. Entiendo que puede haber problemas al llamar a esta función los fines de semana, pero es posible determinar algún tipo de error, que esta función no esté disponible en ese momento o algo más.

Hasta ahora lo he hecho así: en OnInit() calcula la diferencia horaria y la guarda en la variable global. Pero realmente no me gusta. En mi opinión sería mejor llamar a la función incorporada y ajustar la hora de las noticias a la hora del servidor. Especialmente el terminal probablemente tiene tiempo de servidor disponible los fines de semana también.

Por supuesto que está disponible, esto ya ha sido solicitado.

 
Vitaly Muzichenko:

Por supuesto que está disponible, esto ya ha sido solicitado.

Vitaly, cualquier petición debe estar justificada. Espero haber proporcionado suficientes argumentos para la necesidad de dicha función. Ahora depende de la carga de trabajo de los programadores de la empresa y de cómo se entiendan y acepten los argumentos. Eso espero.

 

Qué información se puede obtener del calendario: (Los valores que utiliza el software y que son de poca información para los humanos no se enumeran aquí)

  • Nombre del país
  • Moneda de los países
  • tipo de evento

Evento (mitin, discurso, etc.)

Indicador

Vacaciones


  • Sector al que pertenece el evento

Mercado, bolsa

Producto interior bruto (PIB)

Mercado laboral

Precios

Dinero

Comercio

Gobierno

Negocios

Consumo

Vivienda

Impuestos

Vacaciones


  • nombre de texto del evento en el idioma del terminal (en la codificación actual del terminal)
  • hora y fecha del evento
  • período de información del evento
  • valor actual del parámetro
  • valor anterior del parámetro
  • valor anterior revisado del indicador
  • valor previsto del indicador
  • impacto potencial en el tipo de cambio

No hay impacto indicado

Impacto positivo

Impacto negativo


Desgraciadamente, salvo la prohibición de abrir posiciones antes de la publicación de noticias, no he encontrado ninguna otra solución. Quiero saber cuáles de ellos se pueden utilizar y cómo reaccionar ante ellos.

Según tengo entendido, los valores resaltados son muy importantes para decidir cómo reaccionar ante la noticia, pero no entiendo cómo. Invito al debate.

 
Alexey Viktorov:

Qué información se puede obtener del calendario: (Los valores que son utilizados por el programa y que son de poca información para los humanos no se enumeran aquí)

  • Nombre del país
  • Moneda de los países
  • tipo de evento

Evento (mitin, discurso, etc.)

Indicador

Vacaciones


  • Sector al que pertenece el evento

Mercado, bolsa

Producto interior bruto (PIB)

Mercado laboral

Precios

Dinero

Comercio

Gobierno

Negocios

Consumo

Vivienda

Impuestos

Vacaciones


  • nombre de texto del evento en el idioma del terminal (en la codificación actual del terminal)
  • hora y fecha del evento
  • período de información del evento
  • valor actual del parámetro
  • valor anterior del parámetro
  • valor anterior revisado del indicador
  • valor previsto de un indicador
  • impacto potencial en el tipo de cambio

No hay impacto indicado

Impacto positivo

Impacto negativo


Desgraciadamente, salvo la prohibición de abrir posiciones antes de la publicación de noticias, no he encontrado ninguna otra solución. Quiero saber cuáles de ellos se pueden utilizar y cómo reaccionar ante ellos.

Según tengo entendido, los valores destacados son muy importantes para decidir cómo reaccionar ante la noticia, pero no entiendo cómo. Invito al debate.

Aquí está mi variante del indicador de noticias. El terminal proporciona información sobre la hora de publicación de noticias por monedas, también se selecciona el grado de importancia. La información se muestra como una línea vertical en el gráfico de precios. En la subventana puede ver el histograma de los últimos valores de los datos, en orden cronológico, en relación con la previsión de la noticia, que ha sido categorizada como importante. Según el tipo de noticia (tipos de interés, tasa de desempleo, índice de precios al consumo, PIB, etc.), los valores pueden representarse en orden cronológico. El gráfico obtenido debe estar sincronizado en tiempo y escala con el gráfico de precios al cambiar el marco temporal. También me interesa la velocidad de obtención de datos reales.

 
Vladimir Kononenko:

Esta es mi versión del indicador de noticias. Alimenta el terminal con las horas de publicación de noticias para las divisas de su elección, el grado de importancia también es seleccionable. La información se muestra con una línea vertical en el gráfico de precios. En la subventana dibujamos, por orden cronológico, un histograma de los últimos valores de los datos de las noticias, que se atribuyen a la clase-importante. El gráfico obtenido debe estar sincronizado en el tiempo con el gráfico de precios al cambiar el TF. También es interesante la rapidez con la que se obtienen los datos reales.

¿Te refieres a los histogramas para toda la profundidad de la historia disponible en el gráfico?

Pero no da ninguna información para la aplicación en tiempo real. ¿O lo he entendido completamente mal? Bien, se ha obtenido la previsión y el valor actual, hemos configurado el histograma, y entonces... ¿Sólo se puede tomar una decisión manualmente?

No he comprobado la velocidad de actualización de datos en el calendario, y habría que medir la velocidad de recepción de datos listos, pero no tengo ese deseo, porque la velocidad es bastante alta.

Razón de la queja: