Mira cómo descargar robots gratis
¡Búscanos en Twitter!
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
Asesores Expertos

History Integrity Auditor - Asesor Experto para MetaTrader 5

Quoc Dat Quach
Quoc Dat Quach
Software engineer with 8 years in fintech and mobile, writing MQL4/MQL5 since 2017. I build Expert Advisors, indicators, trade and risk-management panels and utilities for MT4/MT5, and I trade forex and gold on MT5 myself.
| Spanish English Русский 中文 Deutsch 日本語 Português 한국어 Français Italiano Türkçe
Visualizaciones:
20
Ranking:
(1)
Publicado:
MQL5 Freelance ¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

Cada backtest, cada indicador y cada resultado de optimización se basa en el historial de barras que, en ese momento, tiene la terminal, y casi nadie audita ese historial. Esta herramienta sí lo hace: lee las barras que tu terminal pasaría a un asesor experto y detecta seis tipos de defectos en ellas: valores OHLC imposibles, horas de barras erróneas, barras que faltan mientras el bróker afirma que estaba cotizando, barras sin ticks o sin rango alguno, barras que no coinciden con la propia serie M1 del bróker, y spreads que son cero o superan un límite que tú establezcas.

hia-marketwatch-panel

Cinco símbolos de Market Watch, M15, 5 000 barras cerradas cada uno; el análisis tarda aproximadamente un segundo. La columna que hay que fijarse es «Sess%» —99,80 para el XAUUSD frente a 100,00 para los otros cuatro—, mientras que «Grid%» oscila entre 68 y 100 e indica, principalmente, la proporción de fin de semana que tiene cada símbolo. Se trata de la misma auditoría que el bloque del diario que aparece más abajo, repetida dos minutos después en un segundo gráfico para la captura de pantalla, razón por la cual el prefijo del archivo difiere; todos los números son idénticos. El archivo de resultados se desactivó para ello, y «csv rows» cuenta las filas de ese archivo, por lo que aparece un 0 junto a los 85 resultados. El panel enviado presenta texto claro sobre un fondo oscuro y aquí se ha recoloreado en negro sobre blanco.

El problema

Una barra que falta es invisible. Las velas aparecen una al lado de la otra en el gráfico, tanto si el tiempo entre ellas es de un periodo como de tres horas, por lo que un hueco en el historial se ve exactamente igual que un mercado tranquilo. El Strategy Tester tampoco avisa de ello: simula lo que se le proporciona, y una estrategia probada a través de un hueco se prueba en un mercado que se saltó la hora en la que habría perdido dinero.

Los defectos que importan no son nada del otro mundo. Una barra cuyo cierre se sitúa por encima de su propio máximo hace que una prueba de stop-loss se supere, cuando en la realidad habría fallado. Un tiempo de barra duplicado hace que todos los cálculos de «barras atrás» apunten a la barra equivocada. Una barra de cero ticks es un precio que el mercado nunca cotizó. Un marco temporal cuyas barras no coinciden con las propias barras M1 del bróker significa que dos de tus indicadores están interpretando dos pasados diferentes.

La prueba habitual para todo esto consiste en desplazarse por el gráfico y ver si algo parece extraño. Esa prueba no detecta nada, y no lo hace de forma convincente.

Lo que mide

Seis comprobaciones independientes sobre las últimas N barras cerradas de un marco temporal, para un símbolo, una lista o todo lo que aparece en Market Watch. Cada comprobación tiene una definición que puede recalcularse a mano, y cada resultado se guarda en un archivo CSV con la hora de la barra, de modo que el informe puede auditarse en lugar de simplemente creerse.

  • Coherencia OHLC: máximo < mínimo, apertura o cierre fuera del intervalo [mínimo, máximo], o cualquiera de los cuatro precios igual o inferior a cero. Un resultado por barra por cada predicado incumplido: una barra invertida genera legítimamente varios, ya que tanto la apertura como el cierre se sitúan entonces por encima del máximo y por debajo del mínimo al mismo tiempo.
  • Horas de las barras. Una hora que no aumenta de una barra a la siguiente (una duplicada o una barra fuera de orden), y una barra cuya hora de apertura no se encuentra en la cuadrícula del período —time % PeriodSeconds() != 0—, que es como se manifiesta un historial creado por una importación defectuosa o una sesión de servidor interrumpida.
  • Barras que faltan, en comparación con las propias sesiones del símbolo. Para cada par de barras consecutivas, la herramienta calcula cuántas aperturas de la cuadrícula faltan entre ellas. A continuación, y esta es la parte que hace que la cifra sea útil, consulta a SymbolInfoSessionQuote si se suponía que el mercado debía cotizar en cada apertura que falta. Las aperturas que faltan fuera de cada sesión de cotización se *explican* (noches, fines de semana, días festivos en la tabla de sesiones); las aperturas que faltan dentro de una sesión no tienen explicación y se cuentan por separado. Un símbolo sin ningún registro de sesión se clasifica como «sin clasificar» —nunca se considera tácitamente como «explicado». Ni ese caso ni una ventana M1 vacía se produjeron en el bróker analizado a continuación; se gestionan, pero no se muestran.
  • Barras vacías y planas. tick_volume == 0 es una barra construida a partir de ningún tick. open == high == low == close con ticks en su interior es una barra plana: válida en una hora sin actividad, sospechosa en una con liquidez, y conviene tenerla en cuenta antes de que un indicador divida por el rango de la barra.
  • Verificación cruzada de M1. Cada barra auditada se reconstruye a partir de las barras M1 dentro de su propia ventana —primera apertura, máximo más alto, mínimo más bajo, último cierre, volumen de ticks sumado— y se compara con la barra que el bróker proporciona para el marco temporal superior. Solo se comparan las ventanas que el historial de M1 cubre realmente; las ventanas que quedan fuera de la cobertura de M1 se indican como «fuera de cobertura», y las ventanas dentro de la cobertura que no contienen ninguna barra de M1 se contabilizan por separado. Las desviaciones se miden en puntos, con una tolerancia opcional.
  • Razonabilidad del spread. El número de barras cuyo spread almacenado es cero, el número por encima de un límite establecido por el usuario, y el spread máximo y medio de las barras auditadas. Un historial repleto de spreads cero es un historial que no puede responder a ninguna pregunta sobre costes.

La cifra principal es la cobertura de sesión: la proporción de aperturas que, según la propia tabla de sesiones del bróker, deberían existir y que realmente tienen una barra. La cobertura de la cuadrícula —la misma proporción en cada franja horaria, incluidas las noches y los fines de semana— se muestra junto a ella, ya que, por sí sola, indica principalmente cuántos fines de semana se han auditado.

Ejemplo medido

Cinco símbolos del Market Watch de una terminal de demostración de Exness (versión 6230), M15, las últimas 5 000 barras cerradas de cada uno, auditadas en aproximadamente un segundo el 2 de octubre de 2026 a las 08:07, hora del servidor.

símbolo Barras intervalo, días lagunas Aperturas que faltan ausencias durante la sesión OHLC defectos de tiempo vacío / plano M1 comparado / discrepante / desviación máxima cobertura de la red cobertura de sesión
XAUUSD 5 000 76,5 55 2 342 10 0 0 0 / 0 5 000 / 0 / 0,0000 pts 68,10 % 99,80 %
EURUSD 5 000 72,1 10 1 920 0 0 0 0 / 0 5 000 / 0 / 0,0000 pts 72,25 % 100,00 %
BTCUSD 5 000 52,1 0 0 0 0 0 0 / 0 5 000 / 0 / 0,0000 pts 100,00 % 100,00 %
GBPUSD 5 000 72,1 10 1 920 0 0 0 0 / 0 5 000 / 0 / 0,0000 pts 72,25 % 100,00 %
USDJPY 5 000 72,1 10 1 920 0 0 0 0 / 0 5 000 / 0 / 0,0000 pts 72,25 % 100,00 %

Compara las dos columnas de cobertura, porque ese es precisamente el argumento para separarlas. La cobertura de la tabla indica un 68-72 % para cada símbolo de divisas y un 100 % para el BTCUSD, lo cual no mide nada más que el hecho de que el mercado de divisas cierra el fin de semana y el de criptomonedas no. La cobertura de sesión —la misma proporción aplicada únicamente a las aperturas que indica la propia tabla de sesiones del bróker— indica un 100,00 % en cuatro ocasiones y un 99,80 % para el XAUUSD. Uno de los valores de ese par de columnas es erróneo; el resto se debe al calendario.

Ese 0,20 % corresponde a una única brecha, y es lo suficientemente pequeña como para comprobarla manualmente. El archivo de resultados contiene una fila dedicada a ella:

símbolo;período;comprobación;índice_de_barra;hora_de_barra;campo;detalle;valor XAUUSD;M15;C3_GAP;3304;07/09/2026 18:30:00;brecha;clase=inexplicada;en_sesión=10;14

En una fila C3_GAP, «bar_time» es la primera apertura que falta y «bar_index» es el índice —contado a partir de cero en la barra auditada más antigua— de la barra que sigue al hueco, por lo que esta fila indica: el lunes 7 de septiembre de 2026, la barra que abrió a las 18:15 va seguida de la barra que abrió a las 22:00, y faltan las catorce aperturas comprendidas entre las 18:30 y las 21:45. Las sesiones de cotización del oro para un lunes, tal y como las declara este bróker, son de 00:00 a 20:58 y de 22:00 a 24:00. Diez de las aperturas que faltan, de las 18:30 a las 20:45, se encuentran dentro de la primera sesión; las cuatro restantes, de las 21:00 a las 21:45, se sitúan en el parón declarado. Diez sin explicar, cuatro explicadas, que es lo que indica la fila. Dos horas y media de una tarde de lunes con gran liquidez que todas las pruebas retrospectivas en esta terminal omiten en silencio, y en el gráfico se traducen en dos velas situadas una al lado de la otra.

Las otras 2 332 aperturas de XAUUSD que faltan corresponden al calendario: once fines de semana de 196 aperturas cada uno, 43 pausas diarias de cuatro, y las cuatro aperturas de pausa dentro de ese hueco del lunes: 2 156 + 172 + 4. Las 1 920 de cada par de divisas corresponden a diez fines de semana, y nada más: 10 × 192 aperturas de 15 minutos suman exactamente 1 920. Esas son las cifras que hacen que la cobertura de la cuadrícula sea inútil, y aún así merece la pena indicarlas, porque un símbolo cuyas aperturas «explicadas» no coinciden con su tabla de sesiones te está indicando que la tabla de sesiones es errónea.

El resto de la auditoría no reveló nada, lo cual también es un resultado: en las 25 000 barras no hubo ningún valor OHLC imposible, ni barras duplicadas o fuera de la cuadrícula, ni barras vacías ni planas, y las 25 000 barras coincidieron con la propia serie M1 del bróker hasta el último dígito: 0,0000 puntos de desviación máxima. El BTCUSD merece una línea más: cero huecos en 52 días y un spread que es exactamente de 700 puntos en las 5 000 barras. Un spread fijo no es un defecto, pero tampoco es una medida, y una estrategia ajustada a él se basa en una constante.

hia-ausencia-por-hora

XAUUSD M15, 5 000 barras: cada barra que falta se abre según la hora del día del servidor, dividida según lo que indica la propia tabla de sesiones del bróker para esa hora. Las barras sombreadas corresponden a las aperturas fuera de las sesiones de cotización —once fines de semana—, por lo que abarcan todas las horas, además de la pausa diaria a las 21:00. Las diez barras sólidas son las únicas aperturas en 25 000 barras que la tabla de sesiones no puede explicar, todas ellas en una tarde de lunes. Extraído del volcado de barras y del volcado de sesiones de esta ejecución; la propia herramienta genera los números, no la figura.

Los mismos cinco símbolos en M1, con el límite de spread fijado en 20 puntos, constituyen el tipo opuesto de página y merecen un párrafo porque muestran cómo se ven las comprobaciones cuando se activan: 10 613 resultados, barras planas 20 / 22 / 40 en EURUSD / GBPUSD / USDJPY, un spread superior a 20 puntos en las 5 000 barras de oro y BTCUSD, y 25 / 28 / 20 aperturas faltantes dentro de una sesión en los tres pares que no presentaban ninguna en M15. La última cifra no supone una contradicción: las 5 000 barras M1 abarcan tres días y medio de una semana, una ventana temporal totalmente diferente, y un hueco de un minuto dentro de una sesión es mucho más habitual que uno de quince minutos. En M1, las dos columnas de cobertura también convergen —99,44 y 99,44 para el GBPUSD— porque un intervalo tan corto no incluye ningún fin de semana que pueda sesgar la cifra de la tabla.

hia-m1-panel-de-difusión

La misma herramienta en M1 con el límite de spread en 20 puntos: Flat y SprHi ahora muestran valores numéricos, InSess detecta huecos en pares que estaban limpios en M15, y la columna M1bad se muestra —porque en M1 no hay nada por debajo del periodo auditado, por lo que la verificación cruzada se señala a sí misma como desactivada—; la tabla de resultados nunca muestra un cero para algo que no ha medido.

Verificación independiente del informe

Los contadores anteriores se comprueban mediante un sistema que no comparte código alguno con la herramienta. Un script de Python lee únicamente el material en bruto —el volcado de barras y el volcado de sesión que escribe el EA—, vuelve a calcular cada contador de las comprobaciones de OHLC, tiempo, brechas, sesiones vacías/sin cambios y spread a partir de las definiciones anteriores, y compara el resultado con el propio archivo de resumen del EA.

A lo largo de las ejecuciones en las que se basa este artículo —15 auditorías de símbolos y períodos en M1, M15 y W1—, comparó 215 contadores y no detectó ninguna discrepancia, incluidas las diez aperturas de brechas durante la sesión mencionadas anteriormente, recontadas a partir únicamente de los tiempos de las barras y la tabla de sesión.

Hay dos aspectos que este recuento no abarca. La verificación cruzada de M1 no figura entre esos 215 contadores: el script puede extraer la serie de M1 de la propia terminal y reconstruir las barras, pero esa ruta no se ejecutó para obtener las cifras aquí presentadas, por lo que la comparación de 5000 / 0 discrepancias se basa en el propio recuento del EA. Y un contador que es cero en ambos lados solo se confirma como un cero: en todas las ejecuciones no hubo ningún valor OHLC imposible, ningún tiempo no creciente o fuera de la cuadrícula, ninguna brecha que no fuera un número entero de períodos, ninguna barra vacía, ninguna discrepancia en M1, ninguna ventana dentro de la cobertura de M1 sin una barra de M1 en su interior, ni ninguna desviación que la tolerancia pudiera absorber. Esas ramas nunca se activaron en los datos medidos aquí.

Lo que fija las definiciones de los defectos que este bróker nunca produce es una segunda prueba, más pequeña, del propio script de recuento: un historial sintético de 12 barras con los defectos introducidos a mano y los recuentos esperados escritos junto a ellos —29 afirmaciones, sin terminal involucrada—. El EA aplica los mismos predicados en el mismo orden, y lo que hace es una lectura de las dos fuentes en paralelo, más que una medición. El dispositivo sigue siendo el origen de dos de las decisiones de esta herramienta: que una barra invertida debe producir cinco resultados en lugar de uno, ya que, al invertirse el intervalo, tanto la apertura como el cierre se sitúan por encima del máximo y por debajo del mínimo; y que una única cifra de cobertura sin dividir carecía prácticamente de sentido.

La herramienta también comprueba sus propios cálculos y muestra ambos lados de cada identidad, de modo que el informe puede verificarse sin necesidad de utilizar Python en absoluto:

auditoría 1        : barras 25000 + faltantes 8102 = 33102, aperturas esperadas 33102 -> OK
auditoría 1        : aperturas esperadas 33 102, aperturas de la cuadrícula en los intervalos auditados 33 102 -> OK (5 símbolos OK, 0 no)
auditoría 2        : C1 0 + C2 0 + C3 85 + C4 0 + C5 0 + C6 0 = 85, total de hallazgos 85 -> OK
auditoría 2        : hallazgos incluidos en el informe 85, filas en el archivo de hallazgos 85, descartados por el filtro 0 -> OK

Entradas

Entrada Por defecto Qué hace
Símbolos: vacío = símbolo del gráfico, * = Market Watch, en caso contrario una lista separada por , o ; vacío Un símbolo que la terminal no reconoce se omite con una línea de diario a nivel normal y no recibe ninguna fila de contador, por lo que un recuento nunca puede emparejar un volcado de barras con una fila que no haya medido nada.
Marco temporal a auditar (0 = periodo actual del gráfico) Actual Cualquier marco temporal de la lista. La comprobación de la cuadrícula se desactiva a partir de D1, donde las aperturas no se producen en una cuadrícula de segundos fija, y la comprobación de huecos se desactiva en MN1, donde la distancia entre dos aperturas no es constante.
Barras que se van a auditar por símbolo (barras cerradas, las más recientes primero) 5000 Solo barras cerradas. La barra en formación cambia por definición y se consideraría un defecto del mercado, más que del historial.
C1: comprobación de la coherencia de OHLC verdadero máximo < mínimo, apertura o cierre fuera del rango de la propia barra, cualquiera de los cuatro precios igual o inferior a cero. Un hallazgo por barra por cada predicado incumplido.
C2: comprobar los tiempos de apertura de las barras (orden, duplicados, cuadrícula) verdadero Una hora que no aumenta de una barra a la siguiente, y una apertura que no es un múltiplo del período.
C3: comprobar las barras que faltan con respecto a las sesiones de cotización verdadero La comprobación que genera la cifra principal. Requiere la tabla de sesiones del símbolo; sin ella, las lagunas se registran como «sin clasificar» en lugar de como «explicadas».
C4: recuento de barras vacías (sin ticks) y planas verdadero tick_volume == 0, y open == high == low == close con ticks en ellas.
C5: reconstruir cada barra a partir de M1 y comparar verdadero Es una comprobación costosa, y merece una advertencia: en M15, con más de 5 000 barras, tarda aproximadamente un segundo para cinco símbolos, pero en W1, con un historial de 55 años, requiere una solicitud M1 cada cuatro barras y tardó más de siete minutos para cuatro símbolos, casi todo ello dentro de las propias solicitudes de historial de la terminal. Desactívalo para una primera revisión de un historial extenso.
C5: ignorar las desviaciones de hasta este número de puntos 0,0 Una tolerancia para un bróker cuyos marcos temporales superiores se construyen con redondeos. El valor 0 informa de cada diferencia.
C6: marcar las barras con un spread superior a este valor (0 = desactivado) 0 Cuenta las barras que superan el límite. Se informan el recuento de spread cero, el spread máximo y el spread medio, independientemente de si se ha establecido un límite o no.
Diario: ejemplos de resultados impresos por comprobación 5 Número de filas reales de cada comprobación que se imprimen íntegramente, de modo que el diario muestre los propios defectos y no solo su número.
Escribir una fila CSV por cada resultado verdadero El archivo de resultados: una fila por defecto con el tiempo de la barra, para que el informe pueda ser auditado en lugar de dado por bueno.
Además, volcar cada barra auditada (para un recuento independiente) false Escribe las barras exactamente tal y como las sirvió el terminal, además de la tabla de sesión, que es lo que hace posible un recuento independiente. Desactivarlo elimina el volcado de una ejecución anterior, con una línea de diario por archivo: un volcado de 5 000 barras junto a una fila del contador de 500 barras es precisamente el error silencioso que esta herramienta está diseñada para detectar.
Trazar la tabla de resultados en el gráfico true En un probador no visual, se desactiva automáticamente con una línea de registro en lugar de dar error.
Esquina del panel Superior izquierdo Esquina de anclaje de la tabla.
Tamaño de fuente del panel 8 La tabla es más ancha de lo que puede mostrar una sola etiqueta del gráfico, por lo que se dibuja como varias columnas de etiquetas; reduce el tamaño en un gráfico pequeño.
Desplazamiento X del panel, px 10 Posición.
Desplazamiento del panel en Y, px 18 Posición.
Revisar cada N minutos (0 = revisar una vez) 0 Para dejarlo en un gráfico. Utiliza el reloj propio de la terminal, por lo que este mismo ajuste funciona igual en el Strategy Tester.

El informe

Todo lo que mide la herramienta se envía al diario como un único bloque, y los mismos números se exportan a CSV. A continuación se muestra ese bloque correspondiente a la ejecución de la tabla anterior, tal cual, con la parte por símbolo mostrada únicamente para XAUUSD; los otros cuatro símbolos repiten las mismas diez líneas.

=== Auditor de Integridad del Historial ============================================ símbolos: 5 (Market Watch) periodo: M15 barras por símbolo: 5000 (barras cerradas, las más recientes primero) comprobaciones: C1 sobre C2 sobre C3 sobre C4 sobre C5 sobre C6; límite: 0 puntos; tolerancia C5: 0,00 puntos; ejemplos del diario por comprobación: 5; actualización: una vez; prefijo del archivo: HistoryIntegrityAuditor\MarketWatch_M15_62879570657522_*.csv símbolo 1 de 5: XAUUSD símbolo 2 de 5: EURUSD símbolo 3 de 5: BTCUSD símbolo 4 de 5: GBPUSD símbolo 5 de 5: USDJPY =================================================================== HistoryIntegrityAuditor: la primera pasada comienza con 5 símbolos, M15, hora del servidor 02/10/2026 08:07:11 HistoryIntegrityAuditor: Ejemplo C3_GAP 1 de 5: barra M15 de XAUUSD del 17/07/2026 a las 21:00:00, clase de brecha = explicada, in_session = 0, 196 [... ejemplos del 2 al 5 de la misma comprobación ...] === History Integrity Auditor - resultado de la pasada 1 ======== Símbolo Barras % de la tabla % de la sesión OHLC Hora Gaps InSess Vacío Plano M1bad SprHi XAUUSD 5000 68,10 99,80 0 0 55 10 0 0 0 - EURUSD 5000 72,25 100,00 0 0 10 0 0 0 0 - BTCUSD 5000 100,00 100,00 0 0 0 0 0 0 0 - GBPUSD 5000 72,25 100,00 0 0 10 0 0 0 0 - USDJPY 5000 72,25 100,00 0 0 10 0 0 0 0 - XAUUSD M15: 5000 barras desde el 17/07/2026 a las 20:30:00 hasta el 02/10/2026 a las 07:45:00, 76,47 días, 10 sesiones, punto 0,001, 0 apertura(s) con retraso respecto a la hora del servidor XAUUSD M15: sesiones de cotización Dom 22:01-24:00 | Lun 00:00-20:58, de 22:00 a 24:00 | martes de 00:00 a 20:58, de 22:00 a 24:00 | miércoles de 00:00 a 20:58, 22:00-24:00 | Jueves 00:00-20:58, 22:00-24:00 | Viernes 00:00-20:58 XAUUSD M15: aperturas de la rejilla 7342 = barras 5000 + faltantes 2342, identidad correcta, cobertura de la rejilla 68,10 %, cobertura de la sesión 99,80 % XAUUSD M15: C1 activado, total 0 (máximo < mínimo 0, apertura > máximo 0, apertura < mínimo 0, cierre > máximo 0, cierre < mínimo 0, no positivo 0) XAUUSD M15: C2 activado, total 0 (no creciente 0, fuera de la cuadrícula 0), pasos que no son un número entero de períodos 0 XAUUSD M15: C3 activado, huecos 55 (explicados 54, inexplicados 1, sin clasificar 0), faltan 2342, en sesión 10, sin clasificar 0, mayor brecha 196 casillas después del 17/07/2026 a las 20:45:00 XAUUSD M15: C4 activado, vacíos 0, planos 0 XAUUSD M15: C5 activado, cobertura M1 del 23/06/2026 a las 03:04:00 al 02/10/2026 a las 08:07:00, comparados 5000, discrepancias 0, ventana vacía 0, fuera de cobertura 0, desviación máxima 0,0000 puntos XAUUSD M15: límite C6 desactivado, spread cero 0, por encima del límite -, máximo 238 puntos, media 175,1568 puntos XAUUSD M15: resultados de este símbolo 55 [... las mismas diez líneas para EURUSD, BTCUSD, GBPUSD y USDJPY ...] símbolos: 5 auditados, 0 omitidos. Totales: barras 25 000, faltantes 8 102, en sesión 10, resultados 85. Auditoría 1: barras 25 000 + faltantes 8 102 = 33 102, aperturas esperadas 33 102 -> Correcto auditoría 1: aperturas esperadas 33 102, aperturas de la cuadrícula en los intervalos auditados 33 102 -> Correcto (5 símbolos correctos, 0 incorrectos) auditoría 2: C1 0 + C2 0 + C3 85 + C4 0 + C5 0 + C6 0 = 85, total de hallazgos 85 -> Correcto auditoría 2: hallazgos incluidos en el informe 85, filas en el archivo de hallazgos 85, descartadas por el filtro 0 -> Correcto. Resumen del archivo: HistoryIntegrityAuditor\MarketWatch_M15_62879570657522_overview.csv (5 filas). Hallazgos del archivo: HistoryIntegrityAuditor\MarketWatch_M15_62879570657522_findings.csv (85 filas) resumen de archivos: 5 archivos, 5 filas; sesiones: 5 archivos, 35 filas; barras: 5 archivos, 25 000 filas. Patrón de los archivos: HistoryIntegrityAuditor\MarketWatch_M15_62879570657522_<símbolo>_{summary,sessions,bars}.csv panel: 1452 x 294 píxeles, 16 etiquetas, línea más ancha: 119 caracteres ===================================================================

Nota: «SprHi» —en la tabla— y «por encima del límite» —en la línea C6—. El límite de spread era 0, lo que significa que la comprobación está desactivada, por lo que la columna muestra un guion en lugar de un cero. La herramienta aplica esa regla a todas las columnas de la tabla de resultados y a todas las cifras de las líneas por símbolo: una comprobación que no se ha ejecutado muestra un «-», una comprobación que se ha ejecutado y no ha encontrado nada muestra un «0», y los dos caracteres nunca son iguales. Esto tiene más importancia de lo que parece: con la comprobación de huecos desactivada, una cifra de cobertura calculada como barras / (barras + faltantes) daría un resultado fiable del 100,00 %.

De cada ejecución se generan cinco archivos, en MQL5\Files\HistoryIntegrityAuditor\:

  • <prefijo>_overview.csv: una fila por símbolo de la lista, incluidos los símbolos que no se pudieron auditar, con su estado.
  • <prefijo>_findings.csv: una fila por defecto: símbolo;período;comprobación;índice de barra;hora de la barra;campo;detalle;valor.
  • <prefijo>_<símbolo>_summary.csv: todos los contadores de un símbolo, 62 columnas, incluida la identidad aritmética.
  • <prefijo>_<símbolo>_sessions.csv — las sesiones de cotización del símbolo tal y como las declara el corredor, que es la información que determina si se explica una brecha.
  • <prefijo>_<símbolo>_bars.csv — opcional, las barras auditadas tal y como las sirvió la plataforma.

Los dos últimos son los que permiten que el informe se pueda verificar con otra herramienta distinta a esta, que es el tema de la sección anterior. El prefijo incluye la etiqueta del símbolo, el marco temporal y el identificador del gráfico, de modo que dos gráficos no pueden sobrescribir los datos del otro, y una ejecución del probador escribe en el entorno de pruebas del propio agente en lugar de sobre los archivos de una ejecución en vivo.

Cómo utilizarlo

  1. Adjúntalo a un gráfico del símbolo y el intervalo de tiempo con los que realmente realizas las pruebas, establece el número de barras al menos en el rango que utilizan tus backtests y lee el diario.
  2. Empieza por la «cobertura de la sesión » y los «datos faltantes en la sesión». Esas dos cifras determinan si tus backtests se han ejecutado en el mercado real o en una simulación del mismo.
  3. Ordena las filas C3_GAP del archivo de resultados por la hora indicada en «bar_time». Los huecos concentrados en una hora concreta del día suelen deberse a un problema del servidor o de la sesión; los huecos distribuidos de manera uniforme suelen deberse a una descarga incompleta.
  4. Pulsa «Actualizar» en el cuadro de diálogo «Símbolos» de la terminal (o borra el historial y deja que se vuelva a descargar) y vuelve a ejecutar la auditoría. La diferencia entre las dos ejecuciones es lo que le faltaba a tu terminal a nivel local, más que lo que le falta al bróker.
  5. Activa la verificación cruzada M1 para el marco temporal en el que opera tu EA. Si sigue habiendo una discrepancia tras actualizar el historial, merece la pena preguntar al bróker: significa que dos de sus propias series no coinciden.
  6. Vuelve a ejecutar la auditoría tras cambiar de bróker, servidor o cualquier aspecto relacionado con la forma de obtener el historial. La calidad de los datos es una propiedad de una terminal concreta en un momento determinado, no de un símbolo.

Límites, explicados con claridad

  • Audita el historial que almacena tu terminal, que es el historial que utilizan tus pruebas, y no lo que el servidor del bróker aún pudiera enviar. Actualizar el historial puede modificar todas las cifras que aparecen aquí, y el paso 4 anterior existe precisamente por esa razón.
  • Una discrepancia que la tabla de sesiones describe como «llamada» puede seguir siendo un vacío real, ya que la tabla de sesiones es también la declaración del bróker. La herramienta muestra ambas cifras para que las dos afirmaciones puedan compararse en lugar de mezclarse.
  • La verificación cruzada M1 solo puede pronunciarse sobre lo que abarca el historial M1. Por diseño, no se pronuncia sobre las barras más antiguas, y el recuento de ventanas que se ha omitido aparece junto al recuento con el que se ha comparado.
  • Los datos de ticks no se auditan. Las pruebas retrospectivas con ticks reales cuentan con un segundo conjunto de datos con sus propios defectos, y esta herramienta no lo tiene en cuenta.
  • La herramienta informa; no repara. Nada de lo que aquí se hace escribe en el historial, y ningún hallazgo por sí solo demuestra que el bróker sea culpable: una terminal que estuvo desconectada durante una hora produce las mismas barras que faltan que una fuente de datos que se detuvo.
  • Sin funciones de negociación, sin DLL, sin acceso a la red, sin archivos externos: lee las barras y escribe archivos CSV en MQL5\Files.

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

Mirror Hedge EA (Same terminal and account only) Mirror Hedge EA (Same terminal and account only)

Replica las operaciones abiertas, modificadas y cerradas por otro EA en la misma cuenta de cobertura, seleccionadas por su «número mágico». Por defecto, invierte la dirección (Compra ↔ Venta, SL ↔ TP), lo que permite realizar pruebas retrospectivas de la versión inversa de una estrategia con spreads, deslizamientos y ejecución reales.

Alpha Engine: Intrinsic-Time Coastline Trader Alpha Engine: Intrinsic-Time Coastline Trader

Una adaptación del motor Alpha del grupo Olsen: ocho agentes de órdenes limitadas operan con cambios de tendencia en tiempo intrínseco en una cuenta de cobertura. Aumentan sus posiciones en los sobreimpulsos y las reducen cuando se obtienen beneficios en los cambios de tendencia.

WaveMaster Pro EA WaveMaster Pro EA

Automatización basada en señales para el osciloscopio WaveMaster. Motor de ejecución automatizada para el osciloscopio WaveMaster. Lee los búferes de señales en tiempo real. Incorpora gestión completa de riesgos, trailing y umbral de rentabilidad.

Closed Trades Exporter MAE MFE Closed Trades Exporter MAE MFE

Exporta las operaciones cerradas a un archivo CSV con la desviación máxima adversa (MAE) y la desviación máxima favorable (MFE) en puntos y en dinero, calculadas a partir del historial de M1, además del porcentaje del movimiento disponible que ha captado cada operación.