Indicador vs 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 trades y reporta cuánto habrían ganado. Confundir los dos es la razón más común por la que un script que se ve genial en el historial decepciona en vivo. Esta guía cubre las diferencias que cambian tus resultados, además del tercer tipo de script, la biblioteca.
Indicador, estrategia y biblioteca: para qué sirve cada uno
- Indicador (
indicator()): calcula y dibuja. Ú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 constrategy.entry,strategy.exitystrategy.close. TradingView ejecuta esas órdenes y llena el Strategy Tester con estadísticas de los trades. - Biblioteca (
library()): un conjunto de funciones reutilizables que publicas y luego importas conimporten otros scripts. Una biblioteca nunca se agrega sola a un gráfico.
Un solo script declara exactamente uno de los tres, así que un script no puede ser indicador y estrategia a la vez. Una configuración común es una biblioteca con tu lógica compartida, un indicador para el gráfico y las alertas, y una estrategia para hacer pruebas.
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 dibujar: líneas, colores, etiquetas, rellenos. No tiene concepto de posición, precio de ejecución ni ganancia. Un script que empieza con strategy() agrega un motor de simulación de órdenes: puede llamar funciones como strategy.entry y strategy.exit, y TradingView ejecuta esas órdenes sobre barras históricas para producir el reporte del Strategy Tester: ganancia neta, drawdown máximo, tasa de acierto, factor de ganancia y la lista de operaciones simuladas.
Entonces la división es: un indicador describe condiciones; una estrategia afirma cuánto habrían ganado esas condiciones. La segunda afirmación pesa mucho más que la primera, porque en cuanto simulas órdenes heredas un montón de supuestos sobre cuándo y a qué precio se ejecutaron esas órdenes.
Dónde el motor de backtest hace supuestos sin avisar
La curva de capital de una estrategia es tan confiable como los supuestos de ejecución que tiene debajo. Cuatro valores por defecto hacen la mayor parte del daño:
- Evaluación al cierre de la barra. Por defecto, el tester evalúa tu lógica cuando cierra una barra. Si una condición usa el máximo, el mínimo o el cierre de esa misma barra, la "ejecución" histórica puede usar información que una operación en vivo solo habría tenido después de que la barra terminara.
- Ejecución en la apertura de la siguiente barra. Una orden a mercado colocada con una señal se ejecuta en la apertura de la siguiente barra en la simulación. En una apertura rápida, ese precio impreso puede quedar varios ticks, o puntos, lejos de donde realmente te ejecutarían.
- Fricción cero. Si la
comisióny elslippagese quedan en cero en la llamadastrategy(), cada operación simulada es gratis, mientras que cada operación real paga comisión y slippage. - Tamaño de la muestra. El tester te reporta con gusto una curva preciosa construida sobre doce operaciones. Doce ganancias son ruido disfrazado de ventaja.
Un ejemplo resuelto
Digamos que una estrategia muestra +USD 4200 en 40 operaciones en futuros de ES con los costos en cero. Agrega una comisión de ida y vuelta de unos USD 5 (las comisiones de futuros para minoristas varían mucho según el bróker, así que usa la tuya) más un tick de slippage por lado. En ES un tick es 0.25 puntos y vale USD 12.50, así que un tick de cada lado son USD 25. Eso da más o menos USD 30 de fricción por operación, cerca de USD 1200 en 40 operaciones, lo que arrastra el +USD 4200 del titular hacia ~USD 3000. Y esa es la versión amable: si las entradas se concentran en aperturas volátiles, el slippage real supera un tick y la diferencia crece. Nada de esa fricción aparece en la versión indicador de la misma lógica, porque un indicador nunca afirma una ejecución. Para saber más sobre cómo separar una ventaja real de una ajustada, lee 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 se cumplió tu condición. No se compra nada, así que el indicador no tiene estadísticas de trades. Una estrategia convierte esa misma condición en una orden con strategy.entry(), y entonces el Strategy Tester reporta la ganancia neta, el porcentaje de aciertos, el drawdown y la lista completa de trades. Para medir la precisión de una señal, pasa la condición a una estrategia, agrega costos realistas y lee la lista de trades.
Probar señales: al cierre o intrabarra
Por defecto una estrategia calcula una vez por barra, al cierre, y una orden de mercado se ejecuta en la apertura de la siguiente barra. Tres ajustes cambian eso:
process_orders_on_close = trueejecuta las órdenes al 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 y los históricos pueden diferir.use_bar_magnifier = trueusa datos de una temporalidad menor para decidir cuál de los precios de una barra llegó primero cuando un stop y un objetivo caen dentro de la misma barra.
Las señales confirmadas al cierre de la barra dan la coincidencia más cercana entre el backtest y los resultados en vivo.
Las señales intrabarra todavía tienen 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 primero pruebes la versión en vivo con forward testing en una cuenta de paper, porque el backtest no puede mostrar cómo se comporta la señal dentro de una vela. En los indicadores, la misma división aplica a las alertas: "Once Per Bar Close" espera a la vela confirmada, y "Once Per Bar" se dispara la primera vez que la condición se vuelve verdadera dentro de la vela, aunque la vela termine cerrando para el otro lado. Las preguntas frecuentes de Pine Script cubren con más detalle los ajustes de alertas.
¿Qué tipo de script funciona en el Pine Screener?
El Pine Screener ejecuta indicadores. Para filtrar el setup de una estrategia, pon la condición en un indicador y dibuja el valor por el que quieres filtrar.
Qué significa de verdad repintar
"Repintar" se le dice a cualquier script que muestra valores distintos en retrospectiva de los que mostró en tiempo real, pero la etiqueta muchas veces se usa mal. La prueba honesta es una pregunta: ¿se pudo 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 simplemente te pide esperar al cierre. Los casos realmente engañosos son señales dibujadas en la barra que todavía se está formando y que luego saltan cuando termina, o datos de una temporalidad mayor tomados con lookahead. Evaluar la lógica en una barra confirmada mantiene tu backtest y tu experiencia en vivo honestos entre sí, ya sea que construyas un indicador o una estrategia.
Cómo se aplica esto a los Planes de Trading
Los Planes de Trading evitan a propósito el problema del repintado al darte niveles fijos y planeados 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. Dibuja los niveles y no simula nada, así que no carga ninguno de los supuestos de ejecución o comisión de arriba. Si un nivel publicado contradice lo que te dice tu propia estrategia, esa contradicción es información, y muchas veces la respuesta es esperar.
Cómo armar una estrategia con 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. Dale ese archivo a ChatGPT, Claude o a tu propio código y pídele una estrategia en Pine Script que opere esos precios exactos. Tú y tu IA deciden cómo entra y sale la estrategia.
Una lista corta antes de confiar en cualquiera de los dos tipos de script
- Ten claro cuál tienes:
indicator()solo dibuja;strategy()simula órdenes y produce el reporte del Strategy Tester. - En una estrategia, configura una
comisióny unslippagerealistas para el instrumento que realmente operas antes de leer una sola cifra de ganancia. - Confirma la lógica en barras cerradas para que el histórico y el vivo compartan el mismo momento de decisión.
- Juzga los resultados con suficientes trades para que cuenten.
- Mantén las capas de contexto (como los niveles publicados) separadas de la autoridad de ejecución: el gráfico informa la decisión; tus reglas escritas la toman.
Usado así, un indicador es un lente y una estrategia es una hipótesis. Prueba los dos con ejecuciones reales antes de confiar en 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 fraudes con sistemas de trading
Contenido educativo. No es asesoría de inversión.
Contenido solo educativo. No es asesoría de inversión.