Mira cómo descargar robots gratis
¡Búscanos en Telegram!
Pon "Me gusta" y sigue las noticias
¿Es interesante este script?
Deje un enlace a él, ¡qué los demás también lo valoren!
¿Le ha gustado el script?
Evalúe su trabajo en el terminal MetaTrader 5
Librerías

News Filter for the Strategy Tester (DST-corrected calendar export) - librería para MetaTrader 5

Cristian Ciunae
Cristian Ciunae
Trader for 8 years & MQL5 Developer. Specializing in Prop Firm Risk Management.
My Core Focus: I build MQL5 tools and Expert Advisors designed for the realities of live trading: strict drawdown limits, hidden swap/commission costs, and news slippage.
What I Do:
| Spanish English Русский 中文 Deutsch 日本語 Português 한국어 Français Italiano Türkçe
Visualizaciones:
22
Ranking:
(3)
Publicado:
\MQL5\Include\
NewsFilter.mqh (8.77 KB) ver
MQL5 Freelance ¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa
EL PROBLEMA

La mayoría de los filtros de noticias consultan el calendario económico de MQL5 (CalendarValueHistory). Ese calendario no existe en el Probador de Estrategias, por lo que esos filtros no hacen nada de forma silenciosa en las pruebas retrospectivas: el EA opera directamente en los datos de empleo (NFP), el IPC o las decisiones sobre tipos de interés, y la prueba retrospectiva ya no se corresponde con el comportamiento en tiempo real. En una de mis pruebas, una orden pendiente sobre el XAUUSD se ejecutó 5 minutos antes de la publicación del IPC de EE. UU. y el stop loss se activó con un deslizamiento de 45 USD: una sola operación supuso una pérdida de 6,5 veces el riesgo previsto.

Un segundo problema, menos conocido: la terminal convierte las horas históricas del calendario según el desfase horario ACTUAL del servidor. Al exportar en verano con un bróker en GMT+2 / GMT+3, todos los eventos de invierno aparecen con una hora de retraso (el NFP a las 16:30 en lugar de a las 15:30, hora del servidor). Un filtro basado en esos horarios bloquea la hora incorrecta durante la mitad del año.

LA SOLUCIÓN: TRES ARCHIVOS

NewsCalendarExport.mq5 (script): exporta los eventos a Terminal\Common\Files\NewsCalendar.csv y recalcula cada evento con el desfase horario del servidor correspondiente a su propia fecha. Al final, muestra una comprobación automática: la hora más frecuente de los eventos del USD debe ser idéntica tanto en invierno como en verano.

NewsFilter.mqh (clase CNewsFilter): un filtro tanto para el trading en tiempo real como para las pruebas retrospectivas. En tiempo real, lee el calendario económico (consultado como máximo una vez por minuto); en el Strategy Tester, lee el archivo CSV. Solo se utilizan las divisas del símbolo (EURUSD: EUR + USD, XAUUSD: USD, CFD sobre índices cotizados en USD: USD).

NewsFilter_Example.mq5: un EA mínimo que muestra un mensaje cuando comienza y termina una ventana de noticias, y pinta las ventanas bloqueadas en el gráfico, para que puedas ver cómo funciona el filtro en el modo visual del Strategy Tester.

CÓMO UTILIZARLO

Copia NewsFilter.mqh en MQL5\Include, NewsCalendarExport.mq5 en MQL5\Scripts y NewsFilter_Example.mq5 en MQL5\Experts. Compila el script y el ejemplo (el archivo .mqh se compila junto con ellos).

Ejecuta NewsCalendarExport una vez, en cualquier gráfico de un terminal conectado. En la pestaña «Expertos» deberías ver: «OK: misma hora en invierno y en verano».

En su EA, añada el siguiente código:

C++
#include <NewsFilter.mqh>
CNewsFilter news;

int OnInit()
{
news.Init(_Symbol, 30, 30); // bloquea 30 minutos antes y después de cada evento
return(INIT_SUCCEEDED);
}

void OnTick()
{
if(news.IsBlocked())
return; // no hay nuevas entradas durante las noticias
// ... tu lógica de entrada ...
}
Realiza el backtest como de costumbre. El diario muestra cuántos eventos se han cargado para el símbolo.

ENTRADAS DEL SCRIPT

Exportar eventos desde: fecha de inicio de la exportación.

Exportar también eventos programados con N días de antelación: incluye los próximos eventos.

Divisas: lista separada por comas (por defecto: USD, EUR, GBP, JPY, CAD, AUD, NZD, CHF).

Importancia: solo de alto impacto, o de impacto medio y alto.

Regla de horario de verano del servidor del bróker: regla de EE. UU. (por defecto, servidor = Nueva York + 7 h, la mayoría de los brókers GMT+2/+3), regla de la UE o sin horario de verano.

Nombre del archivo: se guarda en Terminal\Common\Files.

CNewsFilter::Init(symbol, minutesBefore, minutesAfter, mediumToo = false, csvFile = "NewsCalendar.csv")

NOTAS Y LIMITACIONES

Probado en FTMO (GMT+2 / GMT+3, regla de horario de verano de EE. UU.) y en IC Markets UE. Ejemplo de resultado: 5645 eventos exportados, 1897 de ellos desplazados una hora; antes de la corrección, la hora más frecuente para el USD era las 16:30 en invierno y las 15:30 en verano; tras la corrección, las 15:30 en ambas estaciones.

Si la autocomprobación sigue mostrando horarios diferentes para invierno y verano, prueba con otra «regla de horario de verano del servidor del bróker».

El historial del calendario de MQL5 es limitado y depende de la terminal; en mi terminal comienza en 2020, por lo que las pruebas retrospectivas más antiguas no contendrán ningún evento.

Solo se utilizan las divisas del símbolo, por lo que, en el caso de los índices y las materias primas, la divisa de cotización determina qué eventos se aplican.

Los agentes remotos y en la nube no pueden leer la carpeta «Common\Files»; optimiza el sistema con agentes locales.

Algunas divisas tienen muy pocos eventos de alto impacto en el calendario de MQL5 (el AUD, por ejemplo). Utiliza «Impacto medio + alto» para ellas.

El filtro solo indica a tu EA cuándo NO debe abrir nuevas operaciones. La gestión de las posiciones ya abiertas depende de tu EA.

Vuelve a ejecutar el script de vez en cuando para incluir nuevos eventos.

¿NECESITAS AYUDA PARA INTEGRARLO?

Si no eres programador y quieres integrar este filtro de noticias en tu EA actual, o si necesitas reglas de gestión de riesgo personalizadas adaptadas a las evaluaciones de tu empresa de inversión, ponte en contacto conmigo directamente a través de mi perfil de autónomo en MQL5. ¡Estaré encantado de programarlo para ti!

Versión 1.00: primera versión (ejemplo de EA 1.01: dibuja las ventanas de noticias bloqueadas en el gráfico). Ventanas bloqueadas por el filtro, tal y como se muestran en el modo visual del Strategy Tester Autocomprobación del script: la misma hora del evento en USD tanto en invierno como en verano tras la corrección del horario de verano Diario de Strategy Tester: apertura y cierre de ventanas de noticias

Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/code/77617

CSetupLedger: a per-setup win rate ledger for Expert Advisors CSetupLedger: a per-setup win rate ledger for Expert Advisors

Califica cada tipo de configuración de tu EA en su propio historial, en lugar de agruparlas todas en una sola curva de capital. Se reconstruye a partir del historial de operaciones de la cuenta al iniciarse, por lo que un reinicio no puede borrar el historial. Muestra un límite inferior de la puntuación de Wilson junto a la tasa de ganancias bruta, para que una racha de tres operaciones ganadoras deje de parecer una ventaja.

Session Candle Counter: candles numbered from the cash open, DST aware Session Candle Counter: candles numbered from the cash open, DST aware

Se numeran todas las velas de la jornada bursátil actual a partir de la apertura al contado de Fráncfort, Londres, Nueva York o Tokio. La referencia se convierte de la hora local de la bolsa a la hora del servidor del bróker con ajuste automático al horario de verano, por lo que la primera vela tras la apertura es siempre la número uno, tanto en verano como en invierno.

Safe Risk Manager EA - Daily Loss, Break-Even and Trailing Stop Safe Risk Manager EA - Daily Loss, Break-Even and Trailing Stop

Panel de operaciones educativo para cuentas de cobertura en MT5 con cálculo del riesgo, protección frente al spread, bloqueo permanente de pérdidas diarias, umbral de equilibrio y stops dinámicos.

Trade Reporter Lite - Telegram trade notifications Trade Reporter Lite - Telegram trade notifications

Publica en un chat de Telegram las operaciones que abre y cierra tu MT5: dirección, símbolo, punto de entrada, stop y objetivo en pips, lotes y, al cierre, el resultado, los pips, el múltiplo de R y el tiempo de mantenimiento de la posición. Cola de reintentos, compatible con reinicios, nunca realiza operaciones. Notificador gratuito de operaciones para MT5 en Telegram y Discord.