Efectivamente, las funciones estándar del Calendario son difíciles de entender. Es estupendo que el autor se haya dado cuenta y haya proporcionado el artículo con ejemplos.
Sin embargo, la simplicidad de la API de calendario de alto nivel propuesta no parece obvia. Es difícil.
Probablemente, deberíamos designar una lista de algunos de los escenarios más demandados de la aplicación Calendario. E intentar implementarlos.
Efectivamente, las funciones estándar de Calendar son difíciles de entender. Es estupendo que el autor lo haya resuelto y proporcione ejemplos.
Sin embargo, la simplicidad de la API de calendario de alto nivel propuesta no parece obvia. Es difícil.
Probablemente, deberíamos designar una lista de algunos de los escenarios más demandados de aplicación de Calendario. E intentar implementarlos.
Me gustaría tener una forma de garantizar al cien por cien la sincronización de las noticias con las cotizaciones en cualquier momento.
Efectivamente, las funciones estándar de Calendar son difíciles de entender. Es estupendo que el autor lo haya resuelto y proporcione ejemplos.
Sin embargo, la simplicidad de la API de calendario de alto nivel propuesta no parece obvia. Es difícil.
Probablemente, deberíamos designar una lista de algunos de los escenarios más demandados de aplicación de Calendario. E intentar implementarlos.
Gracias por tu opinión :-)
En mi opinión, alguna dificultad de percepción se debe al hecho de que la clase CiCalendarInfo trata con tres entidades: países, eventos y valores. Si lo comparamos por ejemplo con las clases comerciales SB CAccountInfo, CSymbolInfo, etc., hay 1 objeto en cada clase - cuenta, símbolo, etc. Tal vez valdría la pena hacer una jerarquía de clases, por ejemplo, la siguiente: clase base - CiCalendarBaseInfo, descendientes - CiCalendarCountryInfo, CiCalendarEventInfo y CiCalendarValueInfo. Pero los tres últimos tienen sus análogos en forma de estructuras. Por eso abandoné la idea.
Probablemente, necesitamos definir una lista de algunos de los escenarios más populares de uso del Calendario. Y tratar de implementarlos.
Puede haber tantos como ideas en cuanto al uso de los datos del calendario. Usted puede hacer un simple informador sobre el lanzamiento de eventos, un panel de calendario, un Asesor Experto que opera o tiene en cuenta el tiempo de lanzamiento de noticias, y así sucesivamente. Puede tomar datos de indicadores macroeconómicos y estudiar su impacto en los tipos utilizando redes neuronales. Big data en una palabra...
La comodidad radica en que no es necesario acudir a otra fuente. Todo se puede hacer en el entorno MQL5.
Esto es lo que no está claro en el calendario - consultas por change_id. ¿Dónde obtenerlo?
Dmitry, aquí está por ejemplo una función estándar.
int CalendarValueLast( ulong& change_id, // cambiar identificador MqlCalendarValue& values[], // matriz para obtener descripciones de valores const string country_code=NULL, // nombre del código de país según ISO 3166-1 alfa-2 const string currency=NULL // nombre del código de moneda del país );
Muestra que change_id es un parámetro por referencia. Es decir, el servidor nos lo devuelve. Es una constante del servidor. Cuando el valor cambia, significa que el estado de la base de datos del calendario ha cambiado. Hay un ejemplo EA en la documentación.
Sí, también podemos enviar el último valor conocido de change_id. Si el estado de la base de datos cambia, la función CalendarValueLast() devolverá el número de nuevos eventos y sobrescribirá nuestro change_id enviado con el nuevo.
- www.mql5.com
Dimitri, aquí tienes un ejemplo de función estándar.
En él puedes ver que change_id es un parámetro por referencia. Es decir, el servidor nos lo devuelve. Se trata de una constante del servidor. Cuando el valor cambia, significa que el estado de la base de datos del calendario ha cambiado. Hay un ejemplo de EA en la documentación.
Eso tiene sentido. Gracias.
Lo encontré en la ayuda:
CalendarValueLast.Si change_id = 0 se pasa a la función, la función siempre devuelve cero, pero el estado actual de la base Calendar se devuelve en change_id.
Lo encontré en la ayuda:
CalendarValueLast
Si se pasa a la función change_id = 0, la función siempre devuelve cero, pero el estado actual de la base Calendar se devuelve en change_id.
Sí, existe tal cosa.
Tengo tales líneas en el ejemplo del indicador cuando prev_calculated == 0:
//--- solo para obtener un id de cambio MqlCalendarValue values[]; gPtrValuesInfo.ValueLastSelectByEvent(gChangeId, values);
Y aquí gChangeId=0. Se pone a cero en el bloque de inicialización. Aunque probablemente sea más correcto poner a cero gChangeId siempre que prev_calculated == 0. Y hacer esta variable local.
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Artículo publicado Recetas MQL5 – Calendario económico:
El artículo está dedicado a las posibilidades programáticas del trabajo con el Calendario Económico. Para ello, crearemos una clase para acceder de forma simplificada a las propiedades del calendario y recibir eventos. Como ejemplo práctico, proponemos programar un indicador que usa datos sobre el volumen neto de las posiciones especulativas de CFTC.
Trabajemos con la estructura de series de tiempo en el siguiente ejemplo. El script Test_TS.mq5 obtiene los datos sobre el cambio en el empleo no agrícola en EE.UU desde el 1 de enero de 2016 hasta el 1 de noviembre de 2021 y los muestra en un gráfico científico. Haremos que haya dos curvas en el gráfico: una para los valores reales y otra para los pronosticados. Como escala temporal, tomaremos el periodo informado del evento.
Después de ejecutar el script, obtendremos en primer lugar la muestra de los valores de la serie temporal en el diario y, en segundo lugar, el dibujado del diagrama en el gráfico (Fig. 2).
Fig.2 Información sobre el cambio en el empleo no agrícola en EE.UU (2016-2021)
Autor: Denis Kirichenko