Cuatro razones por las que un script que funciona deja de funcionar
Un script copiado que decepciona suele haber fallado por una de cuatro razones, y solo dos son culpa del script.
1. El backtest nunca medía algo posible
Fuga de futuro, un gráfico no estándar, o ningún coste. El resultado era ficción antes de que lo copiaras. Las comprobaciones de la siguiente sección lo detectan en unos dos minutos.
2. Se escribió para v5 y se pegó en un gráfico v6
Esta es la versión más confusa del problema, porque el script puede compilar y
comportarse distinto. En v6 el operador and hace cortocircuito, así que una
llamada ta.* tras una condición falsa se omite y su historial interno se
rompe; margin_long ahora vale 100 por defecto en lugar de 0, así que se aplica
margen donde antes no; y timeframe.period devuelve "1D" donde v5 devolvía
"D", así que una comparación con "D" nunca coincide.
Ninguno da error. Ver los cambios de v5 a v6 para la lista completa — la sección de cambios que no dan error es la relevante.
3. Lo estás ejecutando en otro instrumento
Es la causa más común y la menos discutida. Un script construido sobre un futuro
de índice líquido y aplicado a un par de divisas exótico no hereda ninguna de
las suposiciones con las que se ajustó: spread, tamaño de tick, horario de
sesión, rango típico. Un slippage = 1 que era honesto en un instrumento
subestima los costes en un orden de magnitud en otro, porque el slippage se mide
en ticks y un tick no mide lo mismo.
Nada en el script te avisa de esto. El instrumento del autor normalmente no queda ni registrado.
4. Estaba ajustado al historial en que se probó
Una estrategia con suficientes parámetros ajusta cualquier muestra. Este es el fallo que no deja rastro en el código: está limpio, los costes son reales, el backtest es honesto, y los parámetros resultan ser los que funcionaron en ese tramo exacto de historial.
La única defensa es evidencia fuera de muestra: ¿se sostiene en un rango de fechas que el autor no ajustó, y en un segundo instrumento? Si no puedes probarlo, no lo sabes.
Qué hacer con un script que quieres conservar
Reconstruir la lógica en lugar de reutilizar el archivo resuelve 1, 2 y 4 a la vez: obtienes salida v6 actual, costes que fijas a propósito y parámetros que eliges en lugar de heredar. No resuelve el 3 — eso no lo resuelve nada salvo probar en el instrumento que realmente operas.
Revisar un script que no escribiste
No necesitas leer un script publicado línea por línea para saber si su backtest es fiable. Cinco búsquedas de texto responden a la mayor parte, en este orden: lo más barato y decisivo primero.
1. Busca lookahead
Si aparece barmerge.lookahead_on, localiza la expresión solicitada y
comprueba si está desplazada. high[1] con lookahead activado es el patrón
seguro documentado; high con lookahead activado es una fuga de futuro, y la
mitad histórica del backtest tuvo precios que la mitad en vivo no puede
tener [2].
TradingView no permite publicar scripts que filtren datos futuros al historial [2], lo que indica con qué frecuencia se intenta.
2. Busca request.security
Incluso sin lookahead, una petición a temporalidad superior devuelve un valor sin confirmar en barras en tiempo real y uno confirmado en el historial [1]. No es fraude, pero significa que la curva que ves se produjo en condiciones distintas de las que vas a operar.
3. Busca strategy( y lee la declaración
Aquí se decide realmente el backtest, y cuesta diez segundos:
| Si ves | Entonces |
|---|---|
ningún commission_value ni slippage | el resultado viene de un mercado que no cobra nada |
default_qty_type = strategy.percent_of_equity | la curva compone, lo que favorece a una ventaja débil en un test largo |
pyramiding mayor que 1 | la estrategia acumula posiciones; comprueba si las cifras de riesgo lo tienen en cuenta |
calc_on_every_tick = true | la ejecución en tiempo real y en histórico difieren por diseño [1] |
process_orders_on_close = true | las ejecuciones asumen que puedes operar el cierre de cada barra |
Un script sin costes en su declaración no ha sido probado en ningún sentido significativo, diga lo que diga su factor de beneficio.
4. Comprueba el tipo de gráfico en que se publicó
Los gráficos no estándar — Heikin Ashi, Renko — producen resultados que TradingView describe como poco realistas por defecto [1]. Una captura de estrategia en un gráfico Heikin Ashi no es evidencia de nada operable.
5. Mira el número de operaciones y el rango de fechas
Menos de cien operaciones no es una muestra. Un resultado espectacular en seis meses y un solo símbolo es un régimen de mercado, no una estrategia.
Lo que nada de esto te dice
Que la estrategia sea rentable. Estas comprobaciones solo establecen si el backtest mide algo posible. Un script que pasa las cinco puede seguir estando sobreajustado al historial exacto en que se probó, y ese fallo no deja ningún rastro en el código.
La evidencia académica revisada sobre reglas técnicas es mucho más débil una vez incluidos los costes de transacción [3]. Un script publicado que muestre lo contrario está haciendo una afirmación fuerte, y la carga de la prueba es suya.
Tactix AI en este flujo
AlfaTactix incluye Tactix AI: usa Tactix Studio para describir tu idea en lenguaje natural y rellenar timeframes, señales, filtros y riesgo en el mismo formulario de seis pasos — o abre Tactix Guide en cualquier paso si solo necesitas explicar un campo. Revisa cada valor y luego exporta MQL5 o Pine Script desde Code Generator (form-first — no prompt-to-code sin probar).

