Barrido de parámetros: ejes leídos del script y tope de combinaciones

El barrido de parámetros es el bloque «Parámetros a barrer» del backtest automático en el Replay. Cada eje es una clave de parámetro con una lista de valores separados por comas; el motor los expande como producto cartesiano, con un tope de 400 combinaciones, y el walk-forward elige la mejor configuración en cada tramo.

Senzoukria · Documentación · Actualizado en septiembre de 2026


Dónde encontrarlo

Dónde
Replay → Backtest automático → «Walk-forward: buscar la mejor configuración» → Parámetros a barrer
Ejes por defecto
lookback 10, 20, 40 · stopTicks 20, 40, 80 · targetTicks 40, 80, 160 (27 combinaciones) hasta que se lee el script
Tope estricto
400 combinaciones (MAX_COMBOS); por encima, la ejecución se rechaza, no se recorta
Criterio de selección
SQN por defecto; Profit factor, Esperanza por operación o Sharpe por operación

Qué hace

Un barrido convierte una estrategia en una cuadrícula de configuraciones. Cada eje es una clave de parámetro y una lista de valores escrita como «10, 20, 40». El motor construye el producto cartesiano de todos los ejes sobre los parámetros base de la estrategia (expandSweep), y después ejecuta un backtest por combinación sobre las mismas barras, de forma secuencial, para que la interfaz siga usable mientras corre.

Dentro del walk-forward, la cuadrícula se reevalúa sobre la parte de entrenamiento de cada tramo; la configuración con la mejor puntuación se prueba después sobre la parte del tramo que no participó en la elección. El contador bajo los ejes dice «{n} combinaciones × {folds} tramos — unos {duration}», para que conozcas el coste antes de pulsar Lanzar.

Los ejes se proponen a partir del propio script. Un lector estático (parametresLus) recorre el código buscando params.get("clave", defecto), params["clave"], params.clave ?? defecto y los alias de una línea, lambda o flecha, que envuelven params. Los scripts en C++ no exponen params en la ABI v1, así que no se propone nada para ellos. Una clave que el script nunca lee muestra el aviso «Este script nunca lee “{key}”: barrerla devolvería resultados idénticos.»

Ajustes

Controles del bloque Parámetros a barrer y de la fila de walk-forward que tiene encima
AjustePor defectoQué cambia
Tramos4 (campo de 2 a 12)Número de pliegues consecutivos y sin solapamiento; cada pliegue entrena en su comienzo y prueba en su final
Proporción de entrenamiento0,7 (de 0,5 a 0,9, paso 0,05)Fracción de cada tramo usada para elegir la configuración; el resto es la prueba fuera de muestra
Criterio de selecciónSQNPuntuación usada para ordenar las combinaciones: SQN, Profit factor, Esperanza por operación o Sharpe por operación. El P&L bruto está ausente a propósito
Clave y valores del ejelookback, stopTicks, targetTicks con tres valores cada unoUna fila por parámetro; las entradas vacías o no numéricas se descartan en silencio
Añadir un parámetroAñade el siguiente parámetro que lee el script y que ningún eje usa todavía, con valores propuestos; si no, una fila vacía
Explorar todos los parámetros legibles (n)Sustituye los ejes por hasta cinco parámetros leídos del script, con valores alrededor de sus valores por defecto
Quitar este parámetroBorra la fila del eje
Operaciones mínimas10 (constante del motor)Una configuración con menos operaciones puntúa −∞ y nunca puede ser elegida

Cómo se construyen los valores propuestos

  • Un valor por defecto entero ≥ 2 se trata como una ventana o un recuento: la propuesta es la mitad, el valor y el doble (20 → 10, 20, 40).
  • Un valor por defecto en ]0, 1] se trata como una proporción: ±0,1, manteniéndose estrictamente entre 0 y 1.
  • Cualquier otro número se trata como un factor: ±25 %, redondeado a dos decimales.
  • qty, color y colour nunca se proponen: la cantidad multiplica el resultado sin cambiar ninguna decisión. Puedes escribirlos a mano igualmente.
  • Se proponen tres ejes por defecto, siguiendo el orden en que el script los lee; el botón del rayo amplía eso a cinco.

Límites y trampas

El tope de 400 combinaciones no es un ajuste de rendimiento. El panel lo dice sin rodeos: cada combinación extra es una tirada más sobre los mismos datos y, pasado ese punto, mides la suerte de un sobreajuste en lugar de una estrategia. Estrecha un rango, o barre menos parámetros a la vez.

El lector es estático. No puede ver una clave construida en tiempo de ejecución (params.get("hmm" + sufijo)) ni un bucle sobre un diccionario; esos parámetros hay que escribirlos a mano. A la inversa, los ejes dejan de seguir al script en cuanto los editas; una acción «releer el script» devuelve el control.

El número de pruebas que se pasa al Sharpe deflactado es el número de combinaciones, no combinaciones × tramos; validar limpiamente no se te cuenta en contra. En la página de pruebas de sobreajuste se explica cómo alimenta ese recuento al PSR, al DSR y al PBO.

Esta página en otros idiomas

Preguntas frecuentes

¿Por qué mi barrido devuelve resultados idénticos en todas las combinaciones?
La clave barrida no la lee el script. El panel ahora lo señala («Este script nunca lee…»); sustitúyela por uno de los parámetros propuestos a partir del código, o añade la llamada params.get a tu script.
¿Puedo barrer más de 400 combinaciones lanzando dos veces?
Puedes, pero cada ejecución es otro conjunto de tiradas sobre las mismas barras, y el Sharpe deflactado solo conoce las pruebas de la ejecución en curso. El tope existe para que la corrección siga siendo honesta; es preferible usar menos ejes con pasos más amplios.
¿El barrido se ejecuta en paralelo?
No. El motor ejecuta las combinaciones una tras otra e informa del progreso sobre la marcha, para que el panel siga legible mientras se recorre la cuadrícula. La estimación que aparece junto al número de combinaciones está para planificar la ejecución antes de empezarla.