De novato a experto: Noticias animadas utilizando MQL5 (II)
Contenido:
- Introducción
- Descripción general
- Integración de la API de noticias externas
- Pruebas
- Conclusión
- Conclusiones clave
- Archivos adjuntos
Introducción
En este debate, partimos de la base establecida en el artículo anterior, donde creamos una barra horizontal desplazable en el gráfico para mostrar las próximas noticias junto con temporizadores de cuenta atrás que indican cuánto tiempo queda antes de cada publicación, por orden de importancia. Concluimos ese artículo con un marcador de posición para las noticias en directo, y ahora estamos listos para poner en marcha esa función.

La primera versión del EA News Headline (sin integración API, solo eventos del calendario económico MQL5).
Hoy nos centramos en integrar titulares de noticias procedentes de fuentes API externas para resolver el reto de la accesibilidad a las noticias dentro de la plataforma MetaTrader 5. Nos centraremos específicamente en los titulares, es decir, en los títulos concisos de las noticias que ofrecen a los operadores una visión rápida de lo que está sucediendo en el mundo financiero. Esto les permite mantenerse informados y decidir si desean profundizar más a través de un navegador web o de la pestaña Noticias integrada en el terminal.
Puntos clave de este artículo:
- Explorar diversas fuentes de noticias del mercado financiero.
- Aprenda a acceder a las API de noticias externas.
- Recuperar y analizar datos de noticias para facilitar su uso en MQL5.
- Domina la función WebRequest().
- Integre API externas sin problemas en herramientas basadas en MQL5.
Para apoyar esta integración, hice un esfuerzo adicional para investigar las API de noticias disponibles y compilé una lista para su conveniencia. La mayoría de estos servicios ofrecen niveles de acceso gratuito con limitaciones de uso, que siguen siendo suficientes para fines educativos y de prueba. La siguiente tabla incluye cinco fuentes de noticias recomendadas, aunque hay muchas más que puedes explorar.
| Proveedor | Límites de velocidad | Características especiales | Amplitud de datos |
|---|---|---|---|
| NewsAPI.org | 500 solicitudes al día | Filtros de búsqueda (palabras clave, fechas, editores, idiomas), operadores booleanos, compatibilidad multilingüe (14 idiomas) | Noticias generales globales (más de 150.000 fuentes en 55 países) |
| Marketaux | 5 llamadas/solicitudes de API | Extracción de entidades (acciones/empresas), puntuaciones de sentimiento por entidad, análisis de noticias financieras impulsado por IA | Noticias financieras con métricas específicas de la empresa |
| Alpha Vantage | 500 solicitudes/día, 5 solicitudes/minuto | Más de 60 indicadores económicos (PIB, inflación), datos técnicos/fundamentales, análisis del sentimiento del mercado | Acciones, divisas, criptomonedas, ETF |
| Finnhub | 60 llamadas/minuto | Transmisión WebSocket en tiempo real, calendario económico, informes de ganancias y análisis de sentimiento con IA | Noticias del mercado, indicadores económicos, presentaciones corporativas |
| EODHD | 20 llamadas/día (plan gratuito) | Puntuaciones de sentimiento diarias (-1 a 1), más de 50 etiquetas de temas (ganancias, IPO), artículos de texto completo con filtrado de símbolos | Noticias sobre acciones, ETF, Forex y criptomonedas |
Para este proyecto, trabajaremos con Alpha Vantage, un servicio API popular y fácil de usar, conocido por sus datos financieros completos y sus métodos de acceso sencillos. Sus puntos de conexión bien documentados y su fiable nivel gratuito lo convierten en una excelente opción para integrar titulares de noticias en tiempo real en nuestro EA.
En la siguiente sección, describiremos la hoja de ruta de nuestra discusión, cubriendo pasos clave como obtener claves API, realizar solicitudes web, analizar respuestas JSON y mostrar los datos de noticias en el gráfico. Después de eso, pasaremos a la implementación práctica para darle vida a esta funcionalidad.
Descripción general
Para que sea más fácil seguir esta discusión, comencemos con una revisión rápida de algunos términos clave que usaremos a lo largo de este proyecto:- API (Application Programming Interface): Un conjunto de reglas que permite que una aplicación de software interactúe con otra. En nuestro caso, permite que MetaTrader 5 obtenga datos de fuentes externas como Alpha Vantage.
- Documentación de API: La guía oficial proporcionada por el proveedor de API que explica los puntos finales disponibles, los formatos de solicitud, los parámetros y las estructuras de respuesta.
- Clave API: Un identificador único proporcionado por el proveedor de API que permite el acceso a sus servicios. Ayuda a gestionar el uso y garantiza una comunicación segura.
- JSON (JavaScript Object Notation): Es un formato liviano de intercambio de datos que es fácil de leer y escribir para los humanos, y fácil de analizar y generar para las máquinas. JSON se utiliza comúnmente para transmitir datos entre un servidor y una aplicación web o de software, especialmente en API web.
- Parse: El proceso de analizar datos estructurados (como JSON) y extraer información útil de ellos.
- WebRequest: Una función MQL5 utilizada para enviar solicitudes HTTP desde la terminal a servidores externos.
- Integración: Al proceso de conectar y combinar los datos de la API con nuestro Asesor Experto (EA) para trabajar sin problemas en el gráfico.
Con nuestro código fundamental (News Headline EA) ya implementado, el primer paso es obtener una clave API de nuestro proveedor elegido, Alpha Vantage. Para obtener su clave API, visite el sitio web de Alpha Vantage y regístrese para obtener una cuenta gratuita. Se le pedirá que proporcione información básica, como su nombre, dirección de correo electrónico y uso previsto. Después de enviar el formulario, su clave API se mostrará inmediatamente.
El siguiente paso implica estudiar la documentación API proporcionada por Alpha Vantage. Esto nos ayudará a comprender el formato de la solicitud, los puntos finales de noticias disponibles y la estructura de los datos JSON devueltos. Una vez que estemos familiarizados con esto, podremos diseñar cómo se analizarán e integrarán los datos en nuestro EA.
Estructura del código JSON de Alpha Vantage
Ya obtuve mi clave API para este proyecto y Vantage ofrece una amplia gama de funciones. Sin embargo, por ahora nos centraremos específicamente en las noticias financieras.
Para ver la respuesta JSON de la API, puede utilizar este enlace.
Antes de implementar la lógica para analizar los titulares de noticias de la API de Alpha Vantage, podemos reconocer que cada noticia de la respuesta JSON contiene varios campos, como «title», «summary», «url» y «time_published». Sin embargo, en las primeras etapas del diseño de esta EA, estamos dando prioridad a la simplicidad y la claridad visual, centrándonos únicamente en extraer el campo «title». Los títulos son descripciones concisas y de alto nivel que ofrecen una instantánea del contenido de las noticias, lo que se alinea bien con el objetivo de proporcionar un ticker de desplazamiento rápido y sin complicaciones. Al centrarnos únicamente en el "título", reducimos la sobrecarga de analizar bloques de texto más grandes y mantenemos una imagen clara y compacta en el gráfico, lo que ayuda a los operadores a mantenerse informados sin distracciones. A continuación, comparto un fragmento de código JSON para ayudarles a comprender la estructura de los datos devueltos.
{
"items": "50",
"sentiment_score_definition": "x <= -0.35: Bearish; -0.35 < x <= -0.15: Somewhat-Bearish; -0.15 < x < 0.15: Neutral; 0.15 <= x < 0.35:
Somewhat_Bullish; x >= 0.35: Bullish",
"relevance_score_definition": "0 < x <= 1, with a higher score indicating higher relevance.",
"feed": [
{
"title": "How To Trade Tesla Today Using Technical Analysis - Tesla ( NASDAQ:TSLA ) ",
"url": "https://www.benzinga.com/markets/equities/25/06/45857951/how-to-trade-tesla-today-using-technical-analysis",
"time_published": "20250610T121929",
"authors": [
"RIPS"
],
"summary": "Good Morning Traders! In today's Market Clubhouse Morning Memo, we will discuss SPY, QQQ, AAPL, MSFT, NVDA, GOOGL, META, and TSLA.
Our proprietary formula, exclusive to Market Clubhouse, dictates these price levels. This dynamic equation takes into account price, volume, and options flow.",
"banner_image": "https://cdnwp-s3.benzinga.com/wp-content/uploads/2024/10/22181427/Paolo-and-Gali.jpg?optimize=medium&dpr=2&auto=webp&width=230",
"source": "Benzinga",
"category_within_source": "Trading",
"source_domain": "www.benzinga.com",
"topics": [
{
"topic": "Technology",
"relevance_score": "0.5"
},
{
"topic": "Financial Markets",
"relevance_score": "0.5855"
},
{
"topic": "Manufacturing",
"relevance_score": "0.5"
}
],
"overall_sentiment_score": 0.216021,
"overall_sentiment_label": "Somewhat-Bullish",
"ticker_sentiment": [
{
"ticker": "MSFT",
"relevance_score": "0.101012",
"ticker_sentiment_score": "0.303818",
"ticker_sentiment_label": "Somewhat-Bullish"
},
{
"ticker": "GOOG",
"relevance_score": "0.033751",
"ticker_sentiment_score": "0.075535",
"ticker_sentiment_label": "Neutral"
},
{
"ticker": "NVDA",
"relevance_score": "0.101012",
"ticker_sentiment_score": "0.346995",
"ticker_sentiment_label": "Somewhat-Bullish"
},
{
"ticker": "AAPL",
"relevance_score": "0.134402",
"ticker_sentiment_score": "0.077776",
"ticker_sentiment_label": "Neutral"
},
{
"ticker": "TSLA",
"relevance_score": "0.134402",
"ticker_sentiment_score": "0.111086",
"ticker_sentiment_label": "Neutral"
}
]
}, La EA planificada obtendrá los titulares de noticias una vez por día hábil y los mostrará en una barra de ticker continua utilizando el objeto canvas. El campo «title» se analizará y recortará de la cadena JSON sin procesar, evitando la necesidad de una deserialización JSON completa, que resulta ineficaz en MQL5. Esto permite que el EA gestione las actualizaciones en tiempo real de manera ligera y confiable. Dado que estos títulos son breves y llamativos por naturaleza, son ideales para escanearlos rápidamente. Con el tiempo, se podrían analizar campos adicionales como «summary» o «url» para obtener vistas detalladas o información sobre herramientas, pero el uso de «title» en esta fase proporciona una solución rápida y de baja latencia que se adapta directamente a la estructura visual y de rendimiento existente.
En las siguientes secciones, le guiaremos a través de cada uno de estos pasos: acceder a la API, gestionar los datos y mostrarlos en el gráfico de MetaTrader 5 utilizando el EA News Headline.
Integración de la API de noticias externas con News Headline EA
El objetivo es obtener de forma dinámica titulares financieros relevantes y transmitirlos a través del gráfico en un ticker fluido y en tiempo real. Esto aumenta significativamente el valor del EA al mantener a los traders informados de los últimos titulares que mueven el sentimiento directamente en sus gráficos sin cambiar de plataforma. En este tutorial, explicamos exactamente cómo funciona cada parte de la implementación, qué hace y por qué la estructuramos de esta manera.
Paso 1: Añadir el campo de entrada de la clave API para la configuración del usuario.
input string InpAlphaVantageKey = ""; // your Alpha Vantage API key
Aquí definimos un parámetro de entrada configurable por el usuario denominado InpAlphaVantageKey . Esto permite a los usuarios pegar su clave API personal de Alpha Vantage directamente en el panel de configuración del EA. Sin una clave válida, no se pueden recuperar datos de noticias. Alpha Vantage emite claves API gratuitas con límites de uso (normalmente 500 solicitudes por día), por lo que este campo brinda a los usuarios control sobre la autenticación sin codificar credenciales. Diseñamos el resto del sistema para omitir con elegancia la obtención de noticias cuando este valor está vacío, lo que garantiza la estabilidad incluso si los usuarios olvidan ingresar una clave.
Paso 2: Declaración de variables de estado para el almacenamiento de titulares y la lógica de control.
string newsHeadlines[]; // holds the extracted headline titles int totalNews = 0; // keeps track of how many headlines we’ve stored datetime lastNewsReload = 0; // helps ensure we fetch news only once per day
Estas variables forman el núcleo de nuestro sistema de gestión de noticias.
- newsHeadlines[] es una matriz de cadenas dinámica que contendrá los títulos de noticias analizados de la respuesta de la API. Cada cadena representa un titular de noticias.
- totalNews es un contador entero que registra cuántos titulares hemos almacenado; esto es importante para mostrar el número correcto de titulares en el gráfico.
- lastNewsReload se utiliza para aplicar una política de actualización diaria. Alpha Vantage puede penalizar el uso excesivo, por lo que esta variable garantiza que solo obtengamos titulares una vez al día, a menos que cambiemos explícitamente esta lógica. También evita solicitudes de red redundantes durante la misma sesión bursátil.
Paso 3: Obtención de datos de noticias de Alpha Vantage con WebRequest.
void FetchAlphaVantageNews() { if(StringLen(InpAlphaVantageKey) == 0) return;
Comenzamos verificando si el usuario ingresó la clave API. Si está vacío, la función sale inmediatamente. Esta comprobación evita actividad de red innecesaria y garantiza que el sistema permanezca estable y silencioso hasta que se configure correctamente. También evita devolver resultados no válidos o activar errores de límite de velocidad desde el servidor API debido a solicitudes mal formadas.
Aquí, construimos un valor normalizado datetime para el inicio del día hábil actual (medianoche, hora del servidor). Esto se utiliza para comparar con lastNewsReload y saber si ya hemos obtenido los titulares de hoy. Al utilizar este método en lugar de marcas de tiempo sin procesar, garantizamos que las noticias se obtengan solo una vez cada día, independientemente de la frecuencia con la que funcione el EA. Este enfoque mantiene nuestro uso de API eficiente y predecible.
MqlDateTime tm; TimeToStruct(TimeTradeServer(), tm); tm.hour = tm.min = tm.sec = 0; datetime today = StructToTime(tm); if(lastNewsReload == today) return; lastNewsReload = today;
Creamos dinámicamente la URL de solicitud de API agregando la clave de API del usuario al punto final base. Esta URL es la que pasaremos a WebRequest. La función NEWS_SENTIMENT está diseñada para devolver metadatos en formato JSON y titulares ricos en sentimientos de múltiples fuentes de noticias de alta credibilidad. Al construir esta cadena en tiempo de ejecución, hacemos que nuestro EA sea modular y agnóstico en cuanto a claves API.
string url = "https://www.alphavantage.co/query?function=NEWS_SENTIMENT&apikey=" + InpAlphaVantageKey;
Esta sección inicializa los parámetros necesarios para la función WebRequest:
char post[]; char response_data[]; string headers; int timeout = 5000; ResetLastError();
- post[] se mantiene vacío ya que estamos realizando una solicitud GET y no enviando ningún contenido del cuerpo.
- response_data[] es donde se guardará la respuesta en bytes sin procesar del servidor.
- Los encabezados se dejan como una cadena vacía porque la API Alpha Vantage no requiere encabezados HTTP personalizados para este punto final.
- El tiempo de espera se establece en 5000 milisegundos para garantizar que no nos quedemos colgados durante demasiado tiempo en conexiones lentas.
- ResetLastError() borra todos los códigos de error anteriores para garantizar que cualquier falla que detectemos a continuación provenga en realidad de esta solicitud y no de algún otro origen.
int result = WebRequest("GET", url, headers, timeout, post, response_data, headers); if(result != 200) { Print("WebRequest failed with result: ", result, ", error: ", GetLastError()); return; }
Este bloque ejecuta la solicitud HTTP real. WebRequest devuelve el código de estado HTTP (por ejemplo, 200 para éxito, 403 para prohibido, etc.). Si el resultado no es 200, significa que la solicitud falló o fue bloqueada, por lo que imprimimos un mensaje de diagnóstico con el código de error y salimos anticipadamente. Esto nos ayuda a diagnosticar problemas de conectividad o autenticación sin bloquear el EA ni dañar los datos.
Una vez que confirmamos que la solicitud se ha realizado correctamente, convertimos la matriz de bytes response_data[] en una cadena legible para los humanos (resultStr). Esta cadena contiene ahora la respuesta JSON completa de Alpha Vantage. Antes de comenzar a extraer titulares, borramos la matriz newsHeadlines[] para descartar cualquier dato antiguo y dejar lugar para los titulares del nuevo día.
string resultStr = CharArrayToString(response_data, 0, WHOLE_ARRAY); ArrayResize(newsHeadlines, 0);
Configuramos nuestra lógica de análisis. La variable pos es nuestro puntero de exploración en la cadena JSON. La matriz keys[] contiene dos variaciones comunes de la clave que precede a cada título de encabezado en la respuesta JSON.. Incluimos versiones espaciadas y no espaciadas para que sean resistentes a cualquier cambio menor de formato en la respuesta de la API.
int pos = 0; const string keys[2] = { "\"title\": \"", "\"title\":\"" };
Este bucle escanea la cadena JSON para encontrar y extraer cada título de noticia.
while(true) { int start = -1; for(int k=0;k<ArraySize(keys);k++) { start = StringFind(resultStr, keys[k], pos); if(start >= 0) { start += StringLen(keys[k]); break; } } if(start < 0) break; int end = StringFind(resultStr, "\"", start); if(end < 0) break; string title = StringSubstr(resultStr, start, end - start); title = Trim(title);
Hemos:
- Buscado la siguiente clave de "título",
- Ajustado el inicio al comienzo del contenido del texto real,
- Encuentrado el final de la cadena de título entre comillas,
- Extraido y limpiado el título con Trim() para eliminar cualquier espacio en blanco circundante.
Este enfoque simple de coincidencia de patrones evita la necesidad de un analizador JSON completo y es lo suficientemente eficiente para nuestro caso de uso limitado y específico.
Cada vez que encontramos un titular, ampliamos dinámicamente la matriz newsHeadlines[] y añadimos el nuevo título. Una vez procesados todos los títulos, actualizamos totalNews para reflejar el número de entradas que hemos capturado. Esto nos da un recuento claro con el que trabajar más tarde al dibujar los titulares.
int idx = ArraySize(newsHeadlines); ArrayResize(newsHeadlines, idx + 1); newsHeadlines[idx] = title; } totalNews = ArraySize(newsHeadlines);
Paso 4: Dibujar el ticker de noticias desplazable en el gráfico.
Aquí construimos el ticker visual concatenando todos los titulares obtenidos en una única cadena de desplazamiento.
- Añadimos un separador «|» entre las entradas para mejorar la legibilidad.
- Si no hay titulares disponibles, mostramos un mensaje de marcador de posición para mantener el ticker activo.
- TextOut() representa esta cadena en el cuadro de texto en un offset específico offNews para crear un efecto de desplazamiento.
- La línea offNews -= InpNewsSpeed; hace que el texto se desplace hacia la izquierda con el tiempo, creando un movimiento continuo. Una vez que desaparece de la vista, lo restablecemos en el bucle de dibujo principal.
string ticker = ""; for(int i=0;i<totalNews;i++) { ticker += newsHeadlines[i]; if(i < totalNews - 1) ticker += " | "; } if(totalNews == 0) ticker = placeholder; newsCanvas.TextOut(offNews, yOff, ticker, XRGB(255,255,255), ALIGN_LEFT); offNews -= InpNewsSpeed;
Paso 5: Programar la obtención de noticias con el temporizador.
Colocamos nuestra llamada FetchAlphaVantageNews() dentro de la función OnTimer() para asegurarnos de que se ejecute periódicamente. La lógica interna de fechas garantiza que solo accedamos a la API una vez al día. Este diseño permite al EA actualizarse sin necesidad de recargar los gráficos ni de que el usuario realice ninguna acción. DrawAll() también se llama aquí para actualizar el lienzo en cada tick del temporizador, lo que garantiza que el ticker se desplace suavemente por la pantalla.
void OnTimer() { //...for the other code FetchAlphaVantageNews(); // only updates once daily //...for the rest of the code DrawAll(); // redraws canvas each timer tick }
Paso 6: Limpieza tras la eliminación del EA.
Incluimos una rutina de limpieza en la función OnDeinit() para borrar la matriz newsHeadlines. Esto ayuda a garantizar que no se conserve memoria después de descargar el EA, lo cual es una buena práctica para evitar fugas de recursos y garantizar un reinicio limpio la próxima vez que se cargue el EA.
void OnDeinit(const int reason) { //...our preivous code here ArrayResize(newsHeadlines,0); // clear stored headlines }
Ahora que todo está listo, contamos con una versión mejorada del EA News Headline que integra con éxito una API externa (Alpha Vantage) y aprovecha el calendario económico MQL5 integrado. En conjunto, estas funciones permiten mostrar noticias y acontecimientos económicos en tiempo real directamente en el gráfico, lo que ofrece a los operadores un acceso fluido e inmediato a información crucial sin tener que salir de la plataforma.
Al final de este artículo, adjuntaré el código fuente completo que incluye todo lo que hemos discutido hasta ahora. El siguiente paso consistirá en probar exhaustivamente estas nuevas funciones para verificar que el concepto funciona según lo previsto. Basándonos en nuestras observaciones, proporcionaremos una evaluación final y describiremos lo que vendrá después en futuras actualizaciones.
Pruebas
En el terminal MetaTrader 5, asegúrese de que el acceso WebRequest esté habilitado y que la URL del servidor Alpha Vantage se haya añadido a la lista de URL permitidas. Puede acceder a estos ajustes navegando a Herramientas > Opciones > Asesores expertos, o pulsando Ctrl + O en su teclado. Consulte la imagen a continuación.

Permitir WebRequest y agregar el enlace de Alpha Vantage.
Puede acceder al archivo compilado del Asesor Experto desde la sección «Asesores Expertos» de la ventana Navegador (atajo: Ctrl + N). Para cargarlo en un gráfico, simplemente haga clic con el botón derecho del ratón en el EA y seleccione «Adjuntar al gráfico», o arrástrelo y suéltelo directamente en el gráfico deseado. Consulte la imagen a continuación para obtener una guía visual rápida.

Acceso a News Headline EA
Con la reciente integración, nuestras configuraciones de entrada se han mejorado para incluir nuevas funciones, especialmente la capacidad de obtener titulares de noticias en vivo a través de una API externa. Para activar la función de desplazamiento de noticias en el gráfico, deberá obtener una clave API de Alpha Vantage e ingresarla en el campo de entrada correspondiente. En la imagen a continuación, puedes ver cómo se ve ahora la interfaz de configuración de entrada. Si no se proporciona ninguna clave API, el EA mostrará un texto de marcador de posición en la sección de noticias en lugar de titulares en tiempo real.

Configuración de entrada (News Headline EA)
Aquí hay una ilustración que muestra el EA en acción después de una implementación exitosa. Todos los eventos económicos del 11 de junio se están desarrollando sin problemas, junto con los titulares de las noticias del mercado mundial. Para una visión más clara y más detalles, consulte la imagen a continuación.

Adjuntar News Headline EA al gráfico
También logré capturar una presentación clara de los eventos mostrados en la terminal para el 11 de junio. Esto resalta cuán efectivo es el News Headline EA para señalar información crucial directamente en el gráfico, ayudando a los traders a mantenerse actualizados sin interrumpir su análisis de gráficos. Además, el EA está diseñado teniendo en mente una gestión eficiente del espacio de píxeles, lo que permite que la ventana del gráfico completo permanezca visible al mismo tiempo que integra sin problemas noticias y eventos sin reducir ni saturar la vista. Vea la siguiente ilustración animada que demuestra cómo News Headline EA agiliza el acceso tanto a eventos económicos como a titulares de noticias del mercado.

News Headline EA presenta eventos y noticias de una manera limpia y no intrusiva, garantizando que su gráfico permanezca claro y completamente visible.
Con gran entusiasmo, experimentamos con diferentes velocidades de desplazamiento y los resultados fueron realmente impresionantes. Se destacó el potencial de crear visualizaciones fluidas y que ahorran recursos directamente en el gráfico. Este experimento también demostró lo poderosas y fáciles de usar que pueden ser las bibliotecas MQL5. Una característica destacada fue el uso de la clase CCanvas, que nos permitió generar un fondo semitransparente para la línea de noticias y eventos, manteniendo visible la cuadrícula del gráfico subyacente. Esto refuerza la idea de que los usuarios pueden mantenerse informados sin sacrificar la visibilidad completa del gráfico.
Si bien la implementación actual carece de interactividad con los elementos visuales, abre la puerta a futuras mejoras interesantes. A continuación se muestra un ejemplo de nuestra configuración de desplazamiento de alta velocidad, donde el texto se difumina ligeramente debido al movimiento rápido, pero aún así demuestra el rendimiento y el potencial visual.

Configuración de desplazamiento rápido para noticias y eventos del calendario.
Conclusión
Estoy realmente encantado con la exitosa implementación de la clase CCanvas, que aborda de manera efectiva un desafío claro que enfrentamos. Hemos logrado desarrollar un método alternativo para acceder a noticias y eventos económicos directamente en el gráfico. Si bien MetaTrader 5 ofrece acceso a estas actualizaciones, su visibilidad y accesibilidad mientras se opera activamente puede resultar engorrosa. Al optimizar la visualización mediante titulares desplazables, hemos presentado una solución más integrada y fácil de usar.
Por supuesto, existen algunas limitaciones en la versión actual. Los titulares de noticias se limitan a títulos breves, a diferencia de la versión de terminal nativa, donde puedes hacer clic y leer artículos completos. Sin embargo, nuestra solución brilla cuando se trata de eventos del calendario económico, permitiendo a los operadores mantenerse actualizados mientras trabajan. En el caso de los titulares, el beneficio radica en estar al tanto de los temas en tendencia, que luego pueden explorarse más allá de la terminal. Es común leer solo los titulares que captan interés, por lo que hacer que se desplacen por el gráfico garantiza que no se pierda noticias financieras globales importantes, todo sin interrumpir su flujo de trabajo comercial habitual.
Una de las ventajas destacadas es tener toda esta información superpuesta directamente en el gráfico de forma no intrusiva, lo que permite tomar decisiones comerciales informadas sin sacrificar la claridad del gráfico.
De cara al futuro, las posibles mejoras podrían incluir etiquetas de fecha para cada titular, cambio de tamaño dinámico para adaptarse a diferentes escalas de gráficos y un sistema de alerta que notifique a los operadores antes de los eventos programados. Estoy entusiasmado por la tercera fase de este proyecto, en la que planeamos introducir otro carril de información adaptado a las necesidades de los comerciantes.
En última instancia, uno de los objetivos más amplios de este proyecto es hacer que la programación MQL5 sea más accesible, especialmente para principiantes. Para respaldar esto, tengo la intención de concluir cada fase de desarrollo con un resumen de los conceptos de programación clave utilizados, y pretendo continuar con esta práctica en futuros capítulos de la serie.
Conclusiones clave
A continuación se muestra una tabla resumen de los conceptos de programación clave demostrados a lo largo de esta discusión. | Concepto | Detalles |
|---|---|
| Diseño orientado a objetos | Encapsulación de eventos de calendario en una clase dedicada con propiedades de tiempo, símbolo, nombre e importancia, lo que mejora la modularidad y la legibilidad. |
| Memoria dinámica y matrices | Uso de matrices redimensionables y asignación dinámica para administrar cantidades variables de objetos de eventos en colecciones separadas para importancia alta, media y baja. |
| Arquitectura basada en eventos | Funciones de ciclo de vida para la inicialización, actualizaciones cronometradas y limpieza que impulsan el comportamiento del EA al iniciarse, en cada tic del temporizador y al apagarse. |
| Integración de API | Conexión a un servicio de noticias externo a través de solicitudes HTTP, manejo de respuestas y errores, y extracción del texto del titular de los datos devueltos. |
| Programación de gráficos | Representación de texto y formas en una capa superpuesta transparente utilizando un objeto canvas para crear carriles de desplazamiento fluidos para eventos y titulares. |
| Lógica de fecha y hora | Convertir la hora del servidor en límites de fecha para cargar solo los eventos futuros de hoy y garantizar que las noticias se obtengan una vez al día. |
| Diseño de funciones modulares | Separación de tareas en funciones auxiliares enfocadas en posicionamiento, carga de datos, dibujo de carriles y recorte de texto para mantener el código organizado y mantenible. |
| Limpieza de recursos | Destrucción adecuada de objetos visuales y eliminación de objetos de eventos creados dinámicamente para evitar fugas de memoria cuando se elimina el EA. |
| Gestión de entradas del usuario | Exposición de parámetros para velocidades de desplazamiento, alternancias de visualización, frecuencia del temporizador, configuraciones de desplazamiento e ingreso de clave API para permitir la personalización del usuario. |
| Técnicas eficientes de redibujado | Minimizar el trabajo de redibujado borrando y actualizando solo las partes necesarias del lienzo y ajustando los cambios de tamaño del gráfico. |
| Calendario económico MQL5 | Recuperar eventos del calendario, filtrarlos por fecha, clasificarlos por importancia y ordenarlos por hora para mostrar una lista priorizada de los próximos eventos. |
A modo de referencia, aquí hay una imagen que ilustra el significado de los tres rectángulos de colores utilizados para indicar la prioridad de las noticias. El color sirve como indicador principal, aunque también se podrían utilizar formas, como círculos.

Etiquetas de importancia de eventos
Archivos adjuntos
Encuentra el código fuente del EA adjunto a continuación: compílalo, pruébalo y luego comparte tus comentarios e ideas de expansión en los comentarios. ¡Estén atentos a nuestro próximo artículo! | Nombre del archivo | Version | Descripción |
|---|---|---|
| News Headline EA.mq5 | 1.03 | Asesor experto que muestra eventos del calendario económico y titulares de noticias del mercado en tiempo real directamente en el gráfico utilizando la API MQL5 Canvas y Alpha Vantage integrada. |
Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/articles/18465
Advertencia: todos los derechos de estos materiales pertenecen a MetaQuotes Ltd. Queda totalmente prohibido el copiado total o parcial.
Este artículo ha sido escrito por un usuario del sitio web y refleja su punto de vista personal. MetaQuotes Ltd. no se responsabiliza de la exactitud de la información ofrecida, ni de las posibles consecuencias del uso de las soluciones, estrategias o recomendaciones descritas.
Utilizando redes neuronales en MetaTrader
De novato a experto: Noticias animadas utilizando MQL5 (I)
Particularidades del trabajo con números del tipo double en MQL4
Introducción a MQL5 (Parte 17): Creación de asesores expertos para reversiones de tendencias
- 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