Dos ejecuciones del mismo robot pueden producir resultados distintos con parámetros visibles iguales. Antes de modificar la estrategia, comprueba código, datos, especificación y modelo de ejecución. Un manifiesto conserva esas condiciones declaradas, pero no sustituye informes e historial. Igual texto no demuestra entornos idénticos.

Conserva ambas pruebas antes de repetir

Guarda informes, operaciones, diarios y parámetros por separado, incluido el resultado menos favorable. Una captura de equity no identifica primer precio ejecutado, número de ejecuciones parciales o inicio efectivo. Debe existir una relación entre condiciones, decisiones y resultado final.

Distingue prueba única, búsqueda de optimización y evaluación posterior. El mismo nombre de archivo puede contener otra compilación o dependencia. Conserva build del terminal, programa y bibliotecas relevantes. Un nombre no identifica el contenido.

Compara inicio solicitado y real. MetaQuotes documenta que una historia previa insuficiente puede desplazar el comienzo. Un mes y un periodo recortado son evaluaciones diferentes. El analizador de cobertura CSV comprueba una exportación; este manifiesto abarca más condiciones.

Trece campos canónicos, sin traducir claves

Pega objetos JSON con los nombres exactos: version, platform, build, codeRevision, inputs, dataSnapshot, symbolSpecification, executionModel, costs, requestedStart, actualStart, end e initialState. Son doce campos de contenido más version. No traduzcas ni añadas campos principales.

version es el número 1 y describe formato, no versión del asesor. Los demás valores principales son cadenas; inputs, costs e initialState también admiten objetos planos. Registra plataforma, compilación y código; parámetros y datos; contrato, ejecución y costes; límites temporales y estado inicial. Los ejemplos conservan cuenta y comisiones USD del modelo original.

dataSnapshot puede contener identificador de archivo o hash calculado aparte. Escribir «data-v1» o llamar hash a codeRevision no verifica archivo. Usa etiquetas técnicas sin contraseñas, códigos de acceso o datos personales. Deja desconocido lo que necesitas establecer, sin inventar identificadores para completar la tarjeta.

Usa fechas con zona explícita y representación coherente, preferiblemente UTC. El comparador trata texto, sin conciliar calendarios o formatos. Añadir Z a una hora de servidor no la convierte a UTC; primero determina la zona y convierte el instante. Tu hora local Europe/Madrid es otra referencia que debe quedar identificada.

Qué hace el comparador y qué queda fuera

Edita los registros de ejemplo y pulsa Comparar. El análisis funciona en el navegador, sin enviar datos, importar archivos o guardar entradas persistentemente. Puedes borrar el resultado o descargarlo. No ejecuta MT5, consulta cuenta ni confirma que las descripciones correspondan a las pruebas reales.

Comparar dos registros de backtest

El análisis funciona localmente en tu navegador. No envía datos ni los guarda de forma persistente. No introduzcas contraseñas o datos personales.

Usa el esquema documentado con version: 1. Escribe los números de especificación como cadenas con punto decimal. Los campos vacíos o ausentes son desconocidos. Cada registro admite 64 KiB.

Formato JSON: campos y límites

version: 1. Otros campos admitidos: platform, build, codeRevision, inputs, dataSnapshot, symbolSpecification, executionModel, costs, requestedStart, actualStart, end, initialState.

Los valores principales son cadenas. inputs, costs e initialState también admiten objetos. Campos vacíos o ausentes se tratan como desconocidos. Se rechazan claves duplicadas y campos principales no documentados. Límites: ocho niveles y dos mil valores; números anidados de hasta quince cifras significativas, sin enteros grandes inseguros. Usa fechas con zona explícita. La comparación es literal: no concilia descripciones o formatos de fecha diferentes.

Escribe números de especificación como cadenas con punto decimal para conservar el contrato de datos; la prosa usa coma española. Campos vacíos u omitidos son desconocidos. Se rechazan claves duplicadas y campos principales no documentados. Límite de cada registro: 64 KiB, ocho niveles y dos mil valores; los números anidados admiten hasta quince cifras significativas, sin enteros grandes inseguros.

La tabla distingue igual, diferente y desconocido. Objetos equivalentes se comparan sin depender del orden de sus claves, pero descripciones diferentes del mismo instante pueden necesitar normalización manual. Sin JavaScript siguen disponibles instrucciones y ejemplos; el formulario no debe enviar tus entradas como alternativa.

Una operación, dos supuestos de comisión

Modelo ficticio: contrato lineal, cuenta USD, una operación cerrada y dos ejecuciones. Resultado de precio diez USD, mismos precios, cantidad y periodo; financiación y otros cargos cero. A declara un USD por ejecución y B, dos. No son tarifas del broker.

A produce 10 − 2 × 1 = 8 USD; B, 10 − 2 × 2 = 6 USD. Dos USD de diferencia se explican por comisión. No prueba señal peor, datos defectuosos o deslizamiento. El comparador debe señalar costs.commissionPerFillUSD, mientras tú verificas informe y demás supuestos.

Una operación, dos supuestos de costeUna operación ficticia con dos ejecuciones, resultado de precio diez USD, otros cargos cero y precios y cantidad iguales.EJEMPLO DE CÁLCULOPrueba A10 − 2 × 1 = 8 USDPrueba B10 − 2 × 2 = 6 USDCampo que cambiacosts.commissionPerFillUSDDiferencia neta2 USD
Una operación, dos supuestos de coste. Una operación ficticia con dos ejecuciones, resultado de precio diez USD, otros cargos cero y precios y cantidad iguales.

La comisión explica dos USD de diferencia del modelo, sin certificar las declaraciones ni identificar mejor señal.

Prueba A
10 − 2 × 1 = 8 USD – Un USD por ejecución.
Prueba B
10 − 2 × 2 = 6 USD – Dos USD por ejecución.
Campo que cambia
costs.commissionPerFillUSD – Clave técnica sin traducir.
Diferencia neta
2 USD – Supuesto de comisión, no tarifa real.

Ampliación independiente en EUR: resultado de precio veinte, comisión dos por ejecución. Con dos ejecuciones deja dieciséis; con tres, catorce. Sigue siendo una operación cerrada, pero cambia el conteo facturado. La diferencia de dos no nace de dirección o precio. Antes de usarlo, comprueba si tu contrato cobra por ejecución, lote u otra base: el modelo no presume una tarifa real.

Si los registros coinciden, sigue la primera divergencia

Busca primera diferencia de hora, símbolo, lado de precio, cantidad, señal o razón de salida. Incluye decisiones sin entrada. El saldo final puede ocultar una diferencia desde la lectura inicial del indicador. Repite de forma controlada cambiando una condición y conserva el informe anterior.

Revisa dependencias e inicialización. El agente de test tiene variables globales y operaciones de archivo separadas del terminal. Si usas aleatoriedad, conserva cómo se inicializa. No atribuyas todo a caché ni borres el único archivo que permite reproducir la observación. Recompilar cambia lo que intentas comparar: archiva antes la versión previa.

La igualdad del manifiesto inicia una investigación más detallada. Puede faltar una biblioteca o describirse mal el conjunto de datos. No selecciones el mejor resultado ni declares fallo de plataforma al peor sin conciliarlos. Vuelve a evaluar la estrategia tras explicar condiciones, con costes y observaciones separadas del ajuste.

Tres pasos después de comparar

  1. Conserva informes A y B y completa los trece campos con identificadores vinculados a archivos reales de código, datos y configuración. Donde falte documentación, mantén el dato desconocido; la igualdad del formulario no debe simular evidencia de archivos idénticos.
  2. Selecciona una diferencia y reproduce su efecto en un ejemplo corto, como número de ejecuciones y comisión aplicada. Cambia una condición cada vez y guarda también pruebas que contradigan la explicación inicial, para no escoger solo el resultado más cómodo.
  3. Si las declaraciones coinciden, localiza el primer evento distinto en los diarios y conserva sus entradas de cálculo. Añade la dependencia o inicialización que faltaba antes de evaluar rentabilidad; el comparador no certifica historia ni predice resultados futuros.