Una línea decide lo que tu script puede hacer
Todo script de Pine se declara como uno de unos pocos tipos, y la declaración es la segunda línea del archivo [2]. Dos de esos tipos importan aquí:
//@version=6
indicator("Mi indicador") // dibuja en el gráfico
//@version=6
strategy("Mi estrategia") // dibuja, y además opera
La explicación habitual es «las estrategias se pueden backtestear». Es cierto y se salta el mecanismo, que es más útil conocer.
strategy() enciende el emulador de bróker
strategy() no añade un botón de backtest. Acopla un bróker simulado a tu
script. Todo lo que se asocia con una estrategia existe porque ese emulador está
funcionando:
| Lo que obtienes | Porque |
|---|---|
| el panel Strategy Tester | ahora hay una cuenta simulada de la que informar |
strategy.entry(), strategy.exit(), strategy.close() | hay algo a lo que enviar órdenes |
| una curva de capital y una cifra de drawdown | el emulador lleva un saldo |
| la List of Trades | el emulador registra sus propias ejecuciones |
el estado de la posición y strategy.closedtrades | el emulador mantiene posiciones |
Por eso no puedes añadirle un backtest a un indicador. Un script indicator()
no tiene cuenta, ni órdenes, ni posición — no porque se le haya negado la
función, sino porque no hay un bróker al otro lado.
El emulador es un modelo, y conviene conocer sus suposiciones
Como tus resultados salen de una simulación, las reglas de la simulación forman parte de tus resultados. Las dos más importantes están documentadas:
- En una barra cuyo rango contiene tu stop y tu objetivo, el emulador deduce cuál llegó primero según dónde esté la apertura respecto al máximo y al mínimo [1]. Es una regla determinista, no una medición — el detalle está en gestión de riesgo.
- Si el precio cruza el nivel de una orden dentro de un hueco entre barras, el emulador asume que no existen datos intrabarra en el hueco [1]. Así que un stop dentro de un hueco de fin de semana no se ejecuta a tu precio de stop.
Ninguna es un defecto. Es lo que un simulador tiene que hacer cuando solo tiene barras. Pero significan que «el backtest dice» es siempre una abreviatura de «el emulador, bajo estas suposiciones, dice».
Dos consecuencias prácticas
Un indicator() vendido como bot no lo es. Puede dibujar flechas y lanzar
alertas; no puede mantener una posición ni informar de un drawdown. Si la segunda
línea de un script publicado dice indicator(, ninguna curva de capital que
muestre salió de ese script.
Convertir un indicador en estrategia no es renombrarlo. Tienes que decidir
cosas que el indicador nunca necesitó: cuándo entrar, cuándo salir, cuánto, y qué
pasa con una posición abierta cuando la señal se repite. Pine pone pyramiding
en 1 por defecto [1], así que esa última tiene respuesta la elijas o no.
Esas decisiones son el trabajo de verdad, y son las mismas que convertir una estrategia manual obliga a sacar a la luz.
Lo que no es una estrategia de TradingView
La palabra estrategia está haciendo tres trabajos distintos en este tema, y confundirlos es caro:
- un script de Pine cuya declaración es
strategy() - un plan de trading — reglas, tamaño, cuándo no vas a operar
- un sistema automatizado que coloca órdenes en un bróker
Un script strategy() es el primero. Con frecuencia se vende como el tercero.
No coloca órdenes
Este es el límite que merece precisión. Una estrategia puede lanzar alertas, y una alerta creada desde una estrategia puede configurarse para que los eventos de ejecución de órdenes también la disparen [5]. Pero una alerta es una notificación. Pasar de una alerta disparada a una posición abierta requiere una integración con el bróker, y el retardo entre ambas es tuyo: no está en el emulador, que asumió que la ejecución ocurrió al precio que modeló.
Y un detalle que sorprende a casi todos:
Las alertas solo se disparan en la barra en tiempo real. [5]
Así que un backtest que muestra doscientas operaciones produce cero alertas. Cada ejecución del informe es una reproducción del historial; una alerta es un evento en tiempo real. Nada en la parte histórica del gráfico disparó nunca una, y ninguna configuración lo cambia. El comportamiento completo, incluida la constante de frecuencia que por defecto dispara intrabarra y no al cierre, está en ejecutar y mantener una estrategia.
No es un plan de trading
Un script strategy() contiene entradas, salidas y tamaño. Un plan de trading
contiene además las partes que nunca se vuelven código: cuánto de tu capital
recibe esta idea, qué haces cuando está en drawdown, cuándo la abandonarías, y
qué más estás ejecutando en paralelo.
El script no puede contenerlas, y un backtest no puede probarlas. Por eso una estrategia con buena curva de capital y sin plan alrededor sigue fracasando, y no porque el código estuviera mal.
No es evidencia por sí solo
Un script strategy() que compila, se ejecuta e informa de un beneficio ha
demostrado que el emulador, bajo sus suposiciones, en esta porción de
historial, con estos parámetros, produjo esta curva. Cada cláusula de esa frase
es una salvedad:
| Cláusula | Por qué limita la afirmación |
|---|---|
| las suposiciones del emulador | el orden intrabarra se deduce, los huecos se tratan como vacíos [1] |
| esta porción de historial | cuánta te dan depende de tu plan de cuenta [6] |
| estos parámetros | si probaste diez conjuntos, el mejor es una estimación sesgada |
| este instrumento | el slippage va en ticks, y un tick no mide lo mismo en otro sitio |
Nada de eso vuelve inútil el backtesting. Lo convierte en un filtro y no en un pronóstico: puede decirte que una idea está rota, y no puede decirte que una idea sea buena.
¿Para qué sirve entonces?
Para especificar una idea con precisión suficiente para que pueda estar equivocada. Suena modesto y es todo el valor. Una regla que puedes enunciar, probar y auditar es una que puedes mejorar; una sensación discrecional es una sobre la que solo puedes discutir.
Tactix AI — Studio vs Guide
Tactix AI es la marca del asistente de AlfaTactix (abrir Tactix AI).
- Tactix Studio convierte una descripción de estrategia en una frase en un borrador de Timeframe, Señales, Filtros y Riesgo en el Strategy Builder visual. Revisas y editas cada campo antes de que Code Generator escriba MQL5 o Pine Script.
- Tactix Guide explica el paso en el que estás — qué rellenar, qué significa un control o cómo formular una regla — sin volcar código sin probar.
Es automatización form-first: el LLM no sustituye a Code Generator, y conservas límites de plan y validación en tiempo real.

