Backtest Robustness Checker
- Indicadores
-
Kazuma Uezono
MQL5 / MQL4 / Pine Script v6 developer and active trader.
Seller on the MQL5 Market (indicators for MT4/MT5).
Services:
- TradingView Pine Script to MT5/MT4 conversion (bar-by-bar matching, with tester report)
- MT4 to MT5 migration - Versión: 1.1
- Activaciones: 5
Backtest Robustness Checker es un indicador para MetaTrader 5 que lee una lista de sus operaciones cerradas y muestra cómo cambian las estadísticas cuando las mismas operaciones llegan en otro orden, cuando faltan algunas operaciones o cuando se quitan las mayores ganancias. Las operaciones pueden venir del historial de su cuenta, de un informe del Probador de Estrategias o de la cuenta guardado en HTML, o de un archivo CSV sencillo. Los resultados se muestran en un panel en el gráfico y pueden guardarse en CSV.
Muestra solo estadísticas de operaciones pasadas. No predice ni garantiza resultados futuros, no le dice si una estrategia o un EA es bueno, rentable o "robusto", y no da ningún veredicto de "aprobado / suspendido". Un valor Monte Carlo como "percentil 95 del drawdown máximo" describe copias barajadas de sus operaciones pasadas; no es la probabilidad de un drawdown futuro. Cómo use las cifras es decisión suya.
Solo lectura: nunca abre, modifica ni cierra órdenes y no da señales de compra o venta. En el Probador de Estrategias (y en la comprobación automática del Market) no hay operaciones propias, por lo que muestra DATOS DE EJEMPLO integrados (SAMPLE DATA), marcados en naranja como "not real" (no reales).
Funciones
- Tres fuentes de datos: historial de la cuenta (filtro por números mágicos, símbolos y fecha de cierre), un archivo en MQL5\Files (un informe de MT5 guardado en HTML, o un CSV) o el ejemplo integrado de 400 operaciones de demostración.
- Orden original: operaciones, beneficio neto, factor de beneficio, tasa de acierto, resultado medio por operación, drawdown máximo (importe y %), máximo de pérdidas consecutivas, período más largo bajo el máximo (en operaciones).
- Orden barajado (Monte Carlo): las mismas operaciones en orden aleatorio, repetido (1.000 veces por defecto). Mínimo, 5 %, 25 %, 50 %, 75 %, 95 % y máximo del drawdown máximo, del drawdown máximo en %, del máximo de pérdidas consecutivas y del período más largo bajo el máximo; la proporción de barajados con un drawdown al menos tan grande como el original; la proporción por encima de un drawdown en % que usted fija; un histograma.
- Eliminación aleatoria de operaciones: cada pasada quita cada operación con la probabilidad que usted fija (10 % por defecto) y mantiene el resto en el orden original. Percentiles del beneficio neto, del factor de beneficio, del drawdown máximo y de las operaciones conservadas, la proporción de pasadas con beneficio neto <= 0 y un histograma.
- Quitar las mayores ganancias: beneficio neto, factor de beneficio y drawdown máximo sin las K mayores operaciones ganadoras (5 por defecto).
- Tabla anual (operaciones, % de aciertos, neto, PF, DD máximo dentro del año, racha de pérdidas más larga, media) y tabla mensual del beneficio neto, por hora de cierre. Las tablas largas se dividen en páginas.
- Exportación CSV (botón): ajustes, todas las estadísticas, percentiles, tablas anual y mensual, la lista de operaciones y, como opción, una fila por simulación. Se guarda en MQL5\Files.
- Semilla aleatoria fija: los mismos datos, ajustes y semilla siempre dan el mismo resultado.
- Panel en inglés o japonés (automático según el idioma del terminal), colores claros u oscuros según el fondo del gráfico, cualquier esquina, tres tamaños, plegable. Varias copias en un mismo gráfico se apilan.
Parámetros principales
- Trades to analyze: fuente de datos; cuenta: números mágicos, símbolos, cerradas desde / hasta, incluir comisión, cargos y swap; archivo: nombre en MQL5\Files, leer de la carpeta Files común; saldo inicial para el DD en % (0 = automático).
- Simulation: número de simulaciones (10-100000, 1000 por defecto), semilla aleatoria (12345 por defecto), proporción de operaciones eliminadas (1-90 %, 10 por defecto), número de mayores ganancias eliminadas (0-1000, 5 por defecto), contar simulaciones con DD máximo por encima de este % (20 por defecto, 0 = desactivado).
- Panel: página mostrada primero, filas por página, idioma, esquina, desplazamientos, tamaño, colores, empezar plegado, botón CSV, CSV con una fila por simulación, recalcular cuando se cierren nuevas operaciones.
- 27 parámetros en 4 grupos.
Cómo se calcula
- Resultado de una operación = beneficio + comisión y cargos + swap (en el historial de la cuenta se pueden excluir los costes). Una operación es ganadora o perdedora cuando se aleja de cero más de la mitad de la unidad monetaria más pequeña (archivos y ejemplo: 0,005); si no, está en equilibrio. Factor de beneficio = beneficio bruto / pérdida bruta.
- Curva de saldo = saldo inicial + resultado acumulado de las operaciones en orden de cierre. Drawdown máximo = la mayor caída desde un máximo anterior; drawdown máximo en % = esa caída dividida por el saldo en el máximo. No se incluyen posiciones abiertas ni resultados flotantes.
- Saldo inicial (automático): historial de la cuenta = el saldo de la cuenta justo antes del cierre de la primera operación seleccionada; HTML = las filas balance anteriores a la primera operación; ejemplo = 10.000. Los depósitos y retiros posteriores a la primera operación no se añaden a la curva, por lo que el denominador del DD en % no los incluye. El parámetro "Starting balance for DD %" sustituye al valor automático.
- Historial de la cuenta: una operación = una posición (los cierres parciales pertenecen a la misma operación, un Close By de dos posiciones es una operación, una inversión en netting se divide).
- Informe HTML: una operación = una transacción de cierre (out, in/out, out by) en la tabla Deals. Cada cierre parcial cuenta como una operación separada, por lo que el número de operaciones, la tasa de acierto y el PF pueden diferir ligeramente del historial de la cuenta de las mismas operaciones. Un informe no tiene identificadores de posición, por lo que cada transacción de cierre se asocia al volumen abierto mediante una regla (mismo símbolo, sentido opuesto; la transacción de apertura más antigua con exactamente el mismo volumen restante; si no, primero en entrar, primero en salir). Con posiciones cubiertas de volúmenes distintos, esta asociación es una estimación, igual que la parte de comisión y swap de apertura asignada a cada operación. Los totales son exactos.
- CSV: una línea por operación, "hora,beneficio" (coma, punto y coma o tabulador; hora como YYYY.MM.DD HH:MM o YYYY.MM.DD HH:MM:SS, también se aceptan "-" o "/"), o una sola columna de beneficio (entonces sin tablas anual ni mensual). Solo "." como separador decimal, sin separadores de miles. Las líneas se usan en el orden del archivo. Una primera línea ilegible se trata como encabezado; las demás líneas ilegibles se cuentan como filas omitidas; las líneas que empiezan por # se ignoran. Un CSV no tiene saldo: indique el saldo inicial en los parámetros para ver el DD en %.
- Si el saldo inicial es desconocido, el panel muestra "unknown" (desconocido) y no se calculan valores de DD en %. Los importes se siguen mostrando.
- Barajado: cada vez Fisher-Yates desde el orden original. Eliminación: un número aleatorio por operación. Números aleatorios: splitmix64 a partir de la semilla (la eliminación usa semilla + 1). Percentiles: interpolación lineal.
- Límite de cálculo: simulaciones x operaciones se mantiene en 100 millones como máximo por tipo de simulación. Por encima, el número de simulaciones se reduce automáticamente (al menos 10) y el panel lo indica. Por ejemplo, 50.000 operaciones se calculan con 2.000 simulaciones. Los cálculos grandes se hacen por pasos con una línea de progreso, para que el gráfico no se congele.
Notas y limitaciones
- Solo estadísticas de operaciones pasadas. No son un pronóstico, una garantía, una prueba de "aprobado / suspendido" de una estrategia, una señal de trading ni un consejo.
- El barajado y la eliminación tratan cada operación como un importe fijo que no depende de las demás operaciones. En sistemas donde las operaciones dependen unas de otras o del saldo (por ejemplo grid, martingala, promediado o tamaño de lote que crece con el saldo), los resultados simulados pueden estar muy lejos de lo que ese sistema podría hacer en realidad.
- Un resultado de backtest depende de los ajustes de la prueba (período, símbolo, spread, comisión, modelo de ticks). Esta herramienta solo lee el resultado que usted le da y no comprueba cómo se hizo la prueba.
- Los informes .xlsx (Open XML / Excel) no se pueden leer. Guarde el informe en HTML o use CSV. Los archivos de más de 64 MB no se leen, y se usan como máximo 2.000.000 de operaciones.
- Solo se pueden leer archivos dentro de MQL5\Files (o de la carpeta Files común). El nombre del archivo no debe contener ".." ni ":".
- Los nombres predeterminados de los informes de MT5 contienen el número de cuenta (por ejemplo ReportTester-12345678.html). El panel y el CSV exportado muestran el nombre del archivo, así que cambie el nombre del archivo antes de hacer capturas de pantalla o compartir el CSV.
- Las tablas anual y mensual usan la hora de cierre tal como figura en los datos (hora del servidor en los informes y el historial de MT5).
- En el Probador de Estrategias, la fuente "Account history" no tiene operaciones propias, por lo que se muestran DATOS DE EJEMPLO y el botón CSV está oculto. Para sus propios datos, úselo en un gráfico normal.
Compatibilidad y soporte
- Solo MetaTrader 5. Cuentas de cobertura y de netting, cualquier símbolo y marco temporal (el símbolo del gráfico no importa).
- Sin DLL, sin acceso a Internet. Solo escribe un archivo cuando usted pulsa el botón CSV.
- Soporte por mensajes de MQL5, respuesta en 3 días hábiles: instalación, ajustes, carga de archivos y avisos de errores. No podemos juzgar si su estrategia o su EA es bueno, interpretar sus resultados como consejo, dar opiniones de mercado ni tomar decisiones de trading por usted.
- No se promete ni se insinúa ningún resultado de su trading.
