¿Qué es Pine Script?
Pine Script es un lenguaje creado para una sola tarea: convertir datos de precio y volumen en cálculos y dibujos sobre un gráfico de TradingView. TradingView lo describe como ligero a propósito, pensado para desarrollar indicadores y estrategias que después se pueden someter a backtesting, y dice que su objetivo es mantenerlo accesible para el público más amplio posible. No es un lenguaje de propósito general como Python o JavaScript: funciona en la nube, y los scripts se ejecutan en los servidores de TradingView, no en tu ordenador.
Se escribe en el Pine Editor, una pestaña en la parte inferior del gráfico. Al guardar un script, queda almacenado en los servidores de TradingView dentro de tu cuenta, y al añadirlo a un gráfico se ejecuta allí. La versión actual en el momento de escribir esto es la versión 6, y un script indica su versión en la primera línea para que el compilador sepa qué reglas aplicar.
- Pine Script
- El lenguaje de programación de TradingView para escribir indicadores, estrategias y bibliotecas. Los scripts se ejecutan en los servidores de TradingView y muestran sus resultados en los gráficos.
- Pine Editor (editor de Pine)
- El editor de código integrado en TradingView, que se abre desde una pestaña en la parte inferior del gráfico. En él se escriben los scripts, se guardan en tu cuenta y se añaden al gráfico.
Indicador, estrategia o biblioteca: ¿qué clases de scripts de Pine hay?
Todo script declara qué es, con exactamente una declaración. Hay tres clases, resumidas en el dibujo de abajo y en la lista que le sigue.
La diferencia entre las dos primeras importa a cualquier usuario. Un indicador te muestra información y te deja la decisión. Una estrategia, además, coloca órdenes hipotéticas según sus reglas e informa de cómo habrían ido con datos pasados, algo útil y fácil de malinterpretar, como explica la sección sobre los límites. Los mejores indicadores de TradingView repasa los indicadores integrados que conviene conocer.
- Indicador, declarado con indicator(): hace cálculos y los muestra como trazados, dibujos o alertas. Es la clase de script más común; el RSI integrado es un ejemplo.
- Estrategia, declarada con strategy(): simula órdenes y operaciones sobre los datos del gráfico para poder hacer backtesting de un sistema de trading y probarlo después en vivo. Añade un informe de estrategia con los resultados hipotéticos.
- Biblioteca, declarada con library(): una colección de funciones reutilizables que importan otros scripts. Es una herramienta para programadores, no algo que se añada a un gráfico para obtener señales.
- Indicador (Pine Script)
- Un script declarado con indicator() que hace cálculos con los datos del gráfico y los muestra como trazados, dibujos o alertas. No simula operaciones.
- Estrategia (Pine Script)
- Un script declarado con strategy() que simula órdenes y operaciones en velas históricas y en vivo e informa de los resultados hipotéticos. Se usa para el backtesting y las pruebas en vivo.
- Biblioteca (Pine Script)
- Un script declarado con library() que exporta funciones y otro código reutilizable para que lo importen indicadores, estrategias y otras bibliotecas.
¿Cómo es un script de Pine Script? Un ejemplo de cuatro líneas
El script del dibujo de la parte superior de la página está completo: pégalo en el Pine Editor, guárdalo y haz clic en Add to chart, y aparece en el gráfico de precios una media móvil simple de 20 velas. La lista de abajo lo recorre línea a línea.
Dos ideas que contiene valen para cualquier script. La primera: el script no recorre el gráfico por sí mismo, sino que TradingView ejecuta el script entero una vez en cada vela, de la más antigua a la más reciente, y close significa el precio de cierre de la vela que se está procesando. La segunda: las funciones con un prefijo como ta. vienen ya hechas, así que una llamada sustituye a la aritmética. Para qué se usa la media se explica en medias móviles.
- La línea 1, //@version=6, es una anotación para el compilador. Le dice a TradingView que el script está escrito en la versión 6 del lenguaje.
- La línea 2, indicator("Simple MA", overlay = true), es la declaración. El script es un indicador llamado Simple MA, y overlay = true lo dibuja sobre el gráfico de precios en lugar de en un panel aparte debajo.
- La línea 3, length = input.int(20, "Length", minval = 1), es un parámetro. Crea un ajuste de número entero con la etiqueta Length, un valor por defecto de 20 y un mínimo de 1, y guarda el valor elegido con el nombre length.
- La línea 4, plot(ta.sma(close, length), color = color.blue), es el cálculo y la salida. ta.sma() calcula la media móvil simple del precio de cierre de length velas, y plot() la dibuja como una línea azul.
¿Cómo leer los parámetros de un script sin saber programar?
Se puede saber mucho de un script sin leer una línea de código. Haz doble clic en su nombre en el gráfico, o pasa el cursor por el nombre y pulsa el botón de configuración (Settings), y se abre la ventana de configuración. Su pestaña Inputs enumera cada ajuste que el autor decidió hacer editable; la pestaña Style controla los colores y los estilos de línea; la pestaña Visibility fija las temporalidades en las que aparece el script.
Cada campo de esa ventana procede de una función input del código. En el ejemplo de arriba, input.int(20, "Length", minval = 1) es la razón de que la pestaña Inputs muestre un campo llamado Length con el valor 20. Cámbialo a 50 y el script vuelve a ejecutarse en todo el gráfico con el nuevo valor. Deja cerradas estas decisiones antes de crear alertas, como sugiere la mejor configuración de TradingView. En qué fijarse:
- Longitudes y periodos: cuántas velas hacia atrás mira cada cálculo.
- Fuentes: qué precio lee el script, normalmente el cierre.
- Temporalidades: si trae datos de una temporalidad superior, algo que importa para el repainting.
- Interruptores: qué partes de lo que se muestra, o qué señales, se pueden desactivar.
- La descripción en la página del script: qué hace y cómo usarlo, que es todo lo que tienes cuando el código está oculto.
- Parámetros del script (inputs)
- Los ajustes que el autor de un script hace editables, mostrados en la pestaña Inputs de la ventana de configuración del script. Cada uno lo crea una función input del código y tiene un valor por defecto que el usuario puede cambiar.
Scripts de código abierto, protegidos y solo por invitación: ¿en qué se diferencian?
Cuando un autor publica un script, elige quién puede ver el código y quién puede usarlo. TradingView tiene tres tipos de visibilidad, que muestra el dibujo de abajo.
Los scripts solo por invitación son los únicos scripts publicados por los que un autor puede cobrar; los de código abierto y los protegidos son de uso gratuito por definición, y TradingView indica que no interviene en esas ventas. UpTickFlow, el indicador que publica este sitio, es un script solo por invitación; está descrito en la página del indicador. Los pasos para añadir uno están en cómo agregar un script invite-only.
El código oculto no es por sí mismo una señal de alarma, pero cambia lo que puedes comprobar. Con un script de código abierto puedes leer exactamente qué calcula. Con uno cerrado dependes de la descripción, de los parámetros y de tus propias pruebas, así que pruébalo antes de fiarte.
- Código abierto (open-source): cualquiera puede leer el código y añadir el script a un gráfico. TradingView dice que aproximadamente la mitad de sus más de 150,000 scripts de la comunidad son de código abierto.
- Protegido (protected): el código está oculto para todos menos para el autor, pero cualquiera puede añadir el script y usarlo libremente. Solo pueden publicar así los autores con un plan de pago.
- Solo por invitación (invite-only): el código está oculto, y solo pueden añadir el script los usuarios a los que el autor ha dado acceso. Publicar así exige un plan Premium o superior.
- Script de código abierto
- Un script publicado en TradingView cuyo código de Pine Script puede leer cualquiera. Se puede estudiar, comprobar y, dentro de las reglas de reutilización de TradingView, usar como base.
- Script protegido (protected)
- Un script publicado cuyo código está oculto para todos menos para su autor, pero que cualquier usuario puede añadir a un gráfico y usar gratis.
- Script solo por invitación (invite-only)
- Un script publicado cuyo código está oculto y que solo pueden añadir a un gráfico los usuarios aprobados por el autor. Es la única clase de script por la que un autor puede cobrar.
¿Puede un script de Pine enviar alertas?
Sí, en dos pasos. El código del script define eventos de alerta: alertcondition() en los indicadores, alert() en indicadores y estrategias, y las ejecuciones de órdenes en las estrategias. Pero ningún código puede activar una alerta por sí solo; la alerta la creas tú desde el gráfico, eligiendo uno de esos eventos como condición. A partir de ahí funciona en los servidores de TradingView, tengas o no la sesión iniciada.
Dos detalles suelen sorprender. Las alertas solo se disparan en la vela en tiempo real, nunca en el histórico. Y cuando creas una, TradingView guarda una copia del script y de sus parámetros junto con el símbolo y la temporalidad del gráfico, así que los cambios posteriores en la configuración no llegan a una alerta en marcha: hay que borrarla y crear otra. Cómo poner alertas en TradingView recorre la ventana y las opciones de disparo.
¿Cuáles son los límites de Pine Script?
Pine Script es estrecho a propósito, y conocer sus bordes evita la mayoría de los malentendidos.
- Se ejecuta en los servidores de TradingView, sobre las velas del gráfico. Como cada script usa recursos de cálculo compartidos, TradingView limita el tiempo de ejecución, la memoria, el tamaño del script y los datos que puede solicitar. Un script puede usar como máximo 64 trazados contabilizados, por ejemplo, y el número de velas históricas que ve depende del plan, de 5,000 a 40,000.
- Se comporta distinto en la vela abierta. En las velas históricas un indicador se ejecuta una vez por vela, con precios definitivos. En la vela en tiempo real se ejecuta de nuevo con cada actualización del precio, así que sus valores pueden cambiar hasta que la vela cierra, como muestra el dibujo de abajo.
- Esa diferencia es el origen del repainting. La documentación de TradingView define el repainting como un comportamiento del script que hace que los cálculos o los trazados históricos y en tiempo real se comporten de forma distinta, y estima que más del 95% de los indicadores presentan alguna forma de él, a menudo inofensiva. El repainting en TradingView explica qué formas engañan y cómo comprobarlas.
- Los resultados de una estrategia son una simulación. Sus órdenes son hipotéticas: las ejecuta el emulador de TradingView con los propios datos del gráfico, no en un mercado. Un informe vistoso es un punto de partida para probar, no una prueba; consulta cómo hacer backtesting de una estrategia de trading y el sobreajuste del backtest.
- No opera por ti. Un script calcula, dibuja y genera eventos de alerta; qué haces con ellos es decisión tuya.
- Vela histórica
- Una vela cerrada del gráfico, cuyos precios son definitivos. Un indicador se ejecuta una vez en cada vela histórica.
- Vela en tiempo real
- La vela que todavía se está formando en el borde derecho del gráfico. Un script se ejecuta de nuevo con cada actualización de su precio, así que sus resultados pueden cambiar hasta que la vela cierra.
¿Hace falta aprender Pine Script?
La mayoría de los traders nunca escriben una línea. Los indicadores integrados y los scripts de la comunidad cubren las herramientas habituales, y leer los parámetros basta para usarlos bien. Aprender lo básico compensa en dos situaciones: cuando quieres comprobar qué hace de verdad un script de código abierto, y cuando quieres probar una regla propia en lugar de fiarte de la palabra de otro.
Si empiezas, el consejo de la propia TradingView es leer primero buen código: los indicadores integrados, cuyo código se abre con el icono de llaves junto a su nombre, y los scripts de código abierto elegidos por sus editores. Después cambia una sola cosa cada vez y observa el gráfico. Y practica en una cuenta de paper trading antes de que una regla que hayas programado toque dinero real.