Indicador frente a estrategia en Pine Script: diferencias y cuándo usar cada uno
6 min de lectura · Actualizado
En TradingView, un indicador y una estrategia se ven casi iguales en el Pine Editor. Un indicador dibuja en tu gráfico. Una estrategia simula operaciones e informa de lo que habrían ganado. Confundir ambos es la razón más común de que un script que se ve genial en el historial decepcione en real. Esta guía cubre las diferencias que cambian tus resultados, además del tercer tipo de script, la librería.
Indicador, estrategia y librería: para qué sirve cada uno
- Indicador (
indicator()): calcula y traza. Úsalo para niveles, señales dibujadas conplotshape(), paneles, sesgo de mercado y alertas creadas conalertcondition(). - Estrategia (
strategy()): todo lo que un indicador puede dibujar, más órdenes simuladas mediantestrategy.entry,strategy.exitystrategy.close. TradingView ejecuta esas órdenes y rellena el Strategy Tester con las estadísticas de las operaciones. - Librería (
library()): un conjunto de funciones reutilizables que publicas y luegoimportasen otros scripts. Una librería nunca se añade sola a un gráfico.
Un solo script declara exactamente uno de los tres, así que un mismo script no puede ser a la vez indicador y estrategia. Una configuración habitual es una librería con tu lógica compartida, un indicador para el gráfico y las alertas, y una estrategia para probar.
La diferencia en una línea
La primera línea de un script de Pine declara de qué tipo es. Un script que empieza con indicator() solo puede calcular y trazar: líneas, colores, etiquetas, rellenos. No tiene concepto de posición, de precio de fill ni de beneficio. Un script que empieza con strategy() añade un motor de simulación de órdenes: puede llamar a funciones como strategy.entry y strategy.exit, y TradingView ejecuta esas órdenes contra barras históricas para producir el informe del Strategy Tester: beneficio neto, drawdown máximo, porcentaje de acierto, factor de beneficio y la lista de operaciones simuladas.
Así que la división es esta: un indicador describe condiciones; una estrategia afirma lo que esas condiciones habrían ganado. La segunda afirmación pesa mucho más que la primera, porque en cuanto simulas órdenes heredas una pila de supuestos sobre cuándo y a qué precio se ejecutaron esas órdenes.
Dónde hace supuestos en silencio el motor de backtest
La curva de capital de una estrategia es tan fiable como los supuestos de fill que tiene debajo. Cuatro valores por defecto hacen casi todo el daño:
- Evaluación al cierre de barra. Por defecto el tester evalúa tu lógica cuando cierra una barra. Si una condición hace referencia al propio máximo, mínimo o cierre de la barra, el "fill" histórico puede usar información que una operación real no habría tenido hasta después de completarse la barra.
- Fills en la apertura de la barra siguiente. Una orden a mercado colocada con una señal se ejecuta en la apertura de la barra siguiente en la simulación. En una apertura rápida, ese precio impreso puede estar a varios ticks, o puntos, de donde realmente te ejecutarían.
- Cero fricción. Si
commissionyslippagese dejan en cero en la llamada astrategy(), cada operación simulada sale gratis, mientras que cada operación real paga comisión y deslizamiento. - Tamaño de la muestra. El tester informará encantado de una curva preciosa construida sobre doce operaciones. Doce aciertos son ruido disfrazado de ventaja.
Un ejemplo práctico
Supón que una estrategia muestra +4200 US$ en 40 operaciones de futuros de ES con los costes en cero. Añade una comisión de ida y vuelta de unos 5 US$, las comisiones minoristas de futuros varían mucho según el bróker, así que usa la tuya, más un tick de deslizamiento por lado. En ES un tick son 0.25 puntos, que valen 12,50 US$, así que un tick en cada sentido son 25 US$. Son unos 30 US$ de fricción por operación, unos 1200 US$ en 40 operaciones, que arrastran un +4200 US$ de titular hacia ~3000 US$. Y esa es la versión amable: si las entradas se agrupan en aperturas volátiles, el deslizamiento real es mayor que un tick y la diferencia crece. Nada de esa fricción aparece en la versión de indicador de la misma lógica, porque un indicador nunca afirma un fill. Para más sobre cómo separar una ventaja real de una ajustada, consulta cómo detectar sistemas de trading sobreajustados.
Señales: plotshape en un indicador, órdenes en una estrategia
Un indicador marca una señal con plotshape() o plotchar(), un triángulo o una etiqueta en la barra donde tu condición era verdadera. No se compra nada, así que el indicador no tiene estadísticas de operaciones. Una estrategia convierte esa misma condición en una orden con strategy.entry(), y el Strategy Tester informa entonces de beneficio neto, porcentaje de acierto, drawdown y la lista completa de operaciones. Para medir la precisión de la señal, pasa la condición a una estrategia, añade costes realistas y lee la lista de operaciones.
Probar señales: al cierre frente a intrabarra
Por defecto una estrategia calcula una vez por barra, al cierre, y una orden a mercado se ejecuta en la apertura de la barra siguiente. Tres ajustes cambian eso:
process_orders_on_close = trueejecuta las órdenes en el cierre de la barra de la señal.calc_on_every_tick = truerecalcula en cada tick en vivo. El historial solo tiene barras terminadas, así que los resultados en vivo e históricos pueden diferir.use_bar_magnifier = trueusa datos de un marco temporal inferior para decidir cuál de los precios de una barra llegó primero cuando un stop y un objetivo están ambos dentro de una misma barra.
Las señales confirmadas al cierre de la barra dan la correspondencia más cercana entre los resultados del backtest y los reales.
Las señales intrabarra siguen teniendo su lugar. Una estrategia de ruptura que debe actuar en el momento en que el precio cruza un nivel puede usar calc_on_every_tick en vivo, siempre que pruebes primero la versión en vivo hacia delante en una cuenta de paper trading, porque el backtest no puede mostrar cómo se comporta la señal dentro de una barra. En los indicadores, la misma división se aplica a las alertas: "Una vez por cierre de barra" espera a la barra confirmada, y "Una vez por barra" salta la primera vez que la condición se vuelve verdadera dentro de la barra, aunque luego la barra cierre en sentido contrario. Las preguntas frecuentes de Pine Script cubren los ajustes de alertas con más detalle.
¿Qué tipo de script funciona en el Pine Screener?
El Pine Screener ejecuta indicadores. Para filtrar por el setup de una estrategia, pon la condición en un indicador y traza el valor por el que quieres filtrar.
Qué significa realmente el repainting
Se le echa la etiqueta de "repainting" a cualquier script que muestre en retrospectiva valores distintos de los que mostró en tiempo real, pero la etiqueta suele aplicarse mal. La prueba honesta es una pregunta: ¿se podría haber tomado esta decisión con la misma información, en el mismo momento, en vivo? Una señal que solo se confirma al cierre de la barra te pide simplemente que esperes al cierre. Los casos realmente engañosos son las señales trazadas en la barra aún en formación que luego saltan cuando termina, o los datos de un marco temporal superior traídos con lookahead. Evaluar la lógica en una barra confirmada mantiene honestos entre sí tu backtest y tu experiencia en real, ya construyas un indicador o una estrategia.
Cómo encaja esto en los Planes de trading
Los Planes de trading esquivan a propósito el problema del repainting entregándote niveles fijos y planificados de antemano. Los niveles diarios, los niveles de ES, SPY, NQ y QQQ, se calculan después del cierre anterior y no se mueven durante la sesión. No hay nada que repintar: cada nivel se fija antes de las 9:30 ET y se queda quieto. MyLinedChart, que dibuja esas líneas, funciona como un indicador. Traza los niveles y no simula nada, así que no arrastran ninguno de los supuestos de fill o de comisión de arriba. Si un nivel publicado discrepa de lo que te dice tu propia estrategia, esa discrepancia es información, y a menudo la respuesta es esperar.
Construir una estrategia a partir de tus propios niveles
La mayoría de las estrategias operan alrededor de precios que un trader ya dibujó a mano: soporte, resistencia, un pivote. MyLinedChart exporta cada línea, nivel, nota e indicador de tu gráfico como JSON, CSV o XLSX. Pásale ese archivo a ChatGPT, a Claude o a tu propio código y pídele una estrategia de Pine Script que opere esos precios exactos. Tú y tu IA decidís cómo entra y sale la estrategia.
Una breve lista de comprobación antes de fiarte de cualquiera de los dos tipos de script
- Sabe cuál tienes entre manos:
indicator()solo dibuja;strategy()simula órdenes y produce el informe del Strategy Tester. - En una estrategia, fija una
commissiony unslippagerealistas para el instrumento que realmente operas antes de leer una sola cifra de beneficio. - Confirma la lógica en barras cerradas para que el historial y el real compartan el mismo momento de decisión.
- Juzga los resultados con suficientes operaciones para que cuenten.
- Mantén las superposiciones de contexto (como los niveles publicados) separadas de la autoridad de ejecución: el gráfico informa la decisión; la toman tus reglas escritas.
Usados así, un indicador es una lente y una estrategia es una hipótesis. Prueba ambos con fills reales antes de fiarte de ellos.
Lecturas relacionadas
- Preguntas frecuentes de Pine Script: backtests y alertas
- Cómo detectar sistemas de trading sobreajustados
- Glosario de los Planes de trading
Fuentes
- Documentación de Pine Script de TradingView: estrategias
- Documentación de Pine Script de TradingView: repintado
- CFTC: aviso sobre fraude en sistemas de trading
Solo contenido educativo. No es asesoramiento de inversión.
Solo contenido educativo. No es asesoramiento de inversión.