Introducción
Sin herramientas comerciales confiables, es imposible realizar análisis técnicos de alta calidad. Una estrategia comercial sólida lo ayudará a evitar errores comunes, administrar el riesgo de manera más efectiva y encontrar y ejecutar más oportunidades comerciales.
Para la mayoría de los operadores, TradingView es una plataforma popular para el análisis de gráficos. Una aplicación web HTML5 rica en funciones que ofrece una variedad de herramientas de análisis técnico, es utilizada por millones de usuarios para rastrear movimientos en los mercados de divisas, criptomonedas y acciones tradicionales.
TradingView ofrece una gama de potentes funciones que le permiten realizar un seguimiento de los activos en múltiples plataformas comerciales y compartir ideas comerciales en la propia red social de TradingView. En este artículo veremos las opciones para personalizar TradingView. Usaremos Pine Script, un lenguaje de programación de TradingView que proporciona control granular sobre los diseños de gráficos.
¡Vamos a empezar!
¿Qué es la escritura de pino?
Pine Script es un lenguaje de programación que le permite personalizar gráficos en TradingView. La plataforma ya ofrece muchas funciones para esto, pero Pine Script le permite ampliar las capacidades. Ya sea que quieras cambiar los colores de las velas o probar una nueva estrategia, puedes personalizar tus gráficos en tiempo real como quieras con el editor Pine.
La documentación detallada está disponible en el sitio, por lo que siempre puede consultar el manual del usuario para obtener instrucciones detalladas. En este artículo nos gustaría cubrir los conceptos básicos de Pine Script y mostrar cómo crear indicadores que pueden resultar útiles al operar con criptomonedas.
Configuración
Comenzar a usar Pine Script es muy fácil. Todo el código que escribimos se ejecuta en servidores de TradingView, tenemos acceso a un editor de código y podemos escribir scripts directamente en el navegador, sin necesidad de descargar aplicaciones de terceros ni configurar nada.
En este tutorial, trazaremos el par de divisas Bitcoin/Binance USD (BTCBUSD). Si aún no está registrado en TradingView, cree una cuenta gratuita (también está disponible una suscripción profesional, pero no es necesaria para este artículo).
Sigue este enlace y verás un gráfico como este:

Tu agenda necesita estar más actualizada.
Necesitamos un cronograma detallado; para acceder a él, haga clic en el botón indicado. Veremos gráficos más detallados, herramientas de dibujo y herramientas de línea de tendencia.

Horario detallado. En el panel encima de las pestañas seleccionadas puede establecer los períodos de tiempo deseados.
Ahora no discutiremos el uso de las diversas herramientas disponibles, pero si se toma en serio el análisis técnico, le recomendamos encarecidamente que se familiarice con ellas. En la parte inferior izquierda (resaltada en la imagen) hay varias pestañas; haga clic en Pine Editor.
Editor de pino

Este editor es donde ocurre la verdadera magia. Para ver el resultado, debe escribir las instrucciones en el editor y luego hacer clic en el botón "Agregar al gráfico". Tenga en cuenta: si aplica varios indicadores personalizados al mismo tiempo, el gráfico puede volverse desordenado, por lo que los eliminaremos entre ejemplos (botón derecho del mouse en el gráfico > Eliminar indicadores).
Como puedes ver, ya tenemos un par de líneas de código. Hagamos clic en el botón "Agregar al gráfico" y veamos qué sucede.

Un segundo apareció debajo del gráfico original. El nuevo gráfico presenta los mismos datos. Para eliminar el segundo gráfico, coloque el cursor sobre My Script y haga clic en la cruz. Ahora veamos el código.
estudiar("Mi guión")La primera línea especifica el nombre del gráfico. Esto requiere sólo el nombre del indicador (en este caso "Mi script"), pero también puede configurar parámetros adicionales. Uno de ellos es la superposición. Significa colocar el indicador en un gráfico existente (no en un segmento nuevo). Como podemos ver en el primer ejemplo, está configurado en falso de forma predeterminada. No probaremos esto ahora, pero configurar overlay=true agregará el indicador al gráfico existente.
trama (cerrar)Esta línea es una instrucción para trazar el precio de cierre de Bitcoin; El gráfico especifica un gráfico de líneas, pero podemos agregar velas y barras.
Consideremos ahora el siguiente ejemplo:
//@versión=4 estudio("Mi guión", superposición=verdadero) trazado(abierto, color=color.púrpura)Al agregar esta línea al editor, debería ver un segundo gráfico (que se parece al original, pero desplazado hacia la derecha). Hemos trazado el precio de apertura y, dado que la apertura del día actual es el cierre del día anterior, es lógico que los gráficos tengan la misma forma.
¡Excelente! Eliminemos los gráficos que creamos (recuerde que para hacer esto debe hacer clic derecho en el gráfico y seleccionar "Eliminar indicadores"). Para borrar el gráfico actual, coloque el cursor sobre el gráfico Bitcoin/BUSD y haga clic en el botón Ocultar.
Muchos traders utilizan gráficos de velas porque proporcionan más información que los gráficos normales (como el que acabamos de crear). Ahora agreguemos velas al gráfico.
//@versión=4 estudio("Mi script", overlay=true) plotcandle(abrir, alto, bajo, cerrar)Es mejor, pero debido a la falta de colores el gráfico es inexpresivo. Idealmente, debemos dibujar velas en rojo si el precio de apertura en el período de tiempo es mayor que el precio de cierre, y en verde si el precio de cierre es mayor que el precio de apertura. Agreguemos una línea encima de la función plotcandle():
//@versión=4 estudio("Mi script", overlay=true) colores = abrir >= cerrar? color.red : color.green plotcandle(abierto, alto, bajo, cerrado)En esta línea revisamos todas las velas y comprobamos: ¿el precio de apertura es mayor o igual que el precio de cierre? Si es así, entonces el precio ha caído durante el período y la vela será roja. De lo contrario, verde. Para agregar una combinación de colores, modifique la función plotcandle() como se muestra a continuación:
//@versión=4 estudio("Mi script", overlay=true) colores = abrir >= cerrar? color.red: color.green plotcandle(abierto, alto, bajo, cerrado, color=colores)Si aún no lo ha hecho, elimine el gráfico anterior y agregue uno nuevo. Ahora deberíamos tener un gráfico de velas normal.

¡Maravilloso!
Construyendo promedios móviles (MA)
Hemos cubierto algunos conceptos básicos. Pasemos a crear nuestro primer indicador personalizado, la media móvil exponencial o EMA. Este es un indicador valioso porque filtra el ruido del mercado y suaviza los movimientos de precios.
La EMA se diferencia de la media móvil simple (SMA) en que da más peso a los datos recientes. La EMA reacciona más activamente a movimientos inesperados del mercado y se utiliza a menudo en estrategias a corto plazo (por ejemplo, operaciones intradiarias).
Media móvil simple (SMA)
Podemos trazar la SMA y luego compararla con la EMA. Agregue la siguiente línea al script:
trama(sma(cerrar, 10))Esta línea mostrará el promedio de los 10 días anteriores. Puede establecer diferentes valores de período entre paréntesis y ver cómo cambia la curva.

SMA de los 10 días anteriores
Media móvil exponencial (EMA)
La EMA es un poco más difícil de entender, pero no te preocupes. Primero veamos la fórmula:
EMA = (precio de cierre - EMA del día anterior) * multiplicador - EMA del día anterior¿Qué dice esta fórmula? Para cada día calculamos una nueva media móvil basada en la anterior. El multiplicador es el “peso” del período anterior, el cual se calcula mediante la siguiente fórmula:
multiplicador = 2 / (período EMA + 1)Como en el caso de una media móvil simple, es necesario especificar el período para construir la EMA. La sintaxis de la función EMA es similar a la función SMA. Para mayor claridad, tracemos un gráfico de EMA junto a SMA:
//@versión=4 estudio("Mi guión", overlay=true) plot(sma(close, 10)) plot(ema(close,10))
Diferencia entre SMA y EMA
➟ ¿Estás pensando por dónde empezar a trabajar con criptomonedas? ¡Compre Bitcoin en Binance!
Guiones incorporados
Hasta ahora, escribíamos el código manualmente para entenderlo con más detalle. Pero exploremos una herramienta que nos ahorrará tiempo, especialmente si escribimos scripts más complejos y no queremos hacerlo desde cero.
En la esquina superior derecha del editor, haga clic en el botón "Nuevo". Aparecerá un menú desplegable con varios indicadores técnicos. Para ver el código fuente del indicador EMA, haga clic en el elemento "Promedio móvil exponencial".

Agregar código al gráfico
El código de la plantilla será diferente de lo que escribimos; preste atención a las funciones input(). Son convenientes porque puede hacer clic en la esquina superior izquierda del gráfico...

...y en la ventana emergente es fácil cambiar algunos valores presionando la rueda de configuración.

Para demostrar esto, agregaremos dos funciones input() al siguiente script.
Construcción del indicador del índice de fuerza relativa (RSI)
El índice de fuerza relativa (RSI) es otro indicador clave del análisis técnico. Se le conoce como indicador de impulso. Esto significa que muestra el ritmo al que se compran y venden los activos. El índice RSI, que oscila entre 0 y 100, indica a los operadores si un activo está sobrecomprado o sobrevendido. Generalmente, un activo se considera sobrevendido si el RSI es menor o igual a 30, y sobrecomprado si el RSI es mayor o igual a 70.
Puede comprobarlo usted mismo: vaya al menú Nuevo > Estrategia RSI. El RSI normalmente se mide en períodos de 14 unidades (es decir, 14 horas o 14 días), pero puedes personalizar este parámetro para adaptarlo a tu propia estrategia.
Agréguelo al gráfico. Deberías ver algunas flechas (definidas en el código por la función Strategy.entry()). RsiLE indica el potencial de una posición larga en un activo, ya que puede revenderse. RsiSE también indica la posibilidad de vender un activo en corto, ya que puede estar sobrecomprado. Tenga en cuenta: como ocurre con todos los indicadores, no debe confiar en ellos como garantía de que los precios subirán o bajarán.
Estrategias de prueba
Podemos probar nuestros propios indicadores. Si bien el rendimiento con datos históricos no es garantía de resultados futuros, probar scripts con datos históricos puede darle una idea de cuán efectivos son para rastrear señales.
Tomemos como ejemplo un script simple. Creemos una estrategia simple en la que ingresaremos una posición larga cuando el precio de BTC caiga por debajo de $11,000 y cerraremos la posición cuando el precio supere los $11,300. Podemos observar cuán rentable es esta estrategia cuando se aplica a la historia del mercado.
//@versión=4 estrategia("ToDaMoon", overlay=true) enter = input(11000) exit = input(11300) precio = cerrar if (precio <= enter) strategy.entry("BuyTheDip", estrategia.long , comentario="BuyTheDip") if (precio >= salida) estrategia.close_all(comment="SellTheNews")Aquí hemos definido los niveles de entrada y salida como variables; ambos son de entrada, lo que significa que luego podemos cambiarlos en el gráfico. También creamos una variable de precio que toma el valor de cierre de cada período. La lógica se presenta en forma de declaraciones if. Si la parte entre paréntesis es verdadera, entonces se ejecutará el bloque con sangría debajo. De lo contrario será ignorado.
Entonces, si el precio es menor o igual que el valor de entrada deseado, la primera expresión se evalúa como verdadera y entramos en largo. Cuando el precio iguale o supere el valor de salida deseado, se activará el segundo bloque, cerrando todas las posiciones abiertas.
Además, en el gráfico mostramos con flechas los lugares de entrada a posiciones y salidas de ellas. Marcamos estos puntos con un parámetro de comentario (en este ejemplo, "BuyTheDip" y "SellTheNews"). Copie el código y agréguelo al gráfico.

Indicadores en el gráfico. Puedes alejar
TradingView aplica automáticamente sus reglas a datos más antiguos. Tenga en cuenta que ha cambiado del Editor Pine a la pestaña Probador de estrategias. Aquí puede analizar el beneficio potencial, ver la lista de operaciones y el rendimiento de cada operación.

Posiciones abiertas y cerradas
resumámoslo
Ahora podemos escribir nuestro propio script utilizando herramientas familiares. Combinaremos la EMA y el RSI en el mismo gráfico y luego usaremos sus valores para colorear las velas y crear información que se pueda visualizar fácilmente.
Los resultados del gráfico no constituyen asesoramiento financiero; no existe una forma objetivamente correcta de utilizarlo. Al igual que otros indicadores, debe utilizarse junto con otras herramientas para desarrollar su propia estrategia.
Escribamos nuestro nuevo guión. Para tener un espacio despejado para trabajar, elimine los indicadores anteriores del gráfico y oculte el gráfico Bitcoin/BUSD.
Empecemos por definir nuestro estudio. Nómbralo como desees, solo asegurándote de que overlay=true.
estudio (título = "Binance Academy Script", superposición = verdadero)Recordemos la fórmula EMA que describimos anteriormente. Necesitamos determinar el multiplicador para el período EMA. Convirtámosla en una variable (entrada) que sea un número entero (es decir, sin decimales). También estableceremos el valor mínimo (minval) y predeterminado (defval).
estudio(título="Binance Academy Script", superposición=true) emaLength = input(título="Longitud EMA", tipo=input.integer, defval=25, minval=0)Usando esta nueva variable, podemos calcular el valor de EMA para cada vela:
estudio(título="Binance Academy Script", superposición=true) emaLength = input(título="Longitud EMA", tipo=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength)Bien. Ahora pasemos al RSI. Establezcamos su período de manera similar:
estudio(título="Binance Academy Script", superposición=true) emaLength = input(title="Longitud EMA", tipo=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = entrada (título="Longitud RSI", tipo=entrada.integer, defval=25, minval=0)Ahora podemos calcularlo:
estudio(título="Binance Academy Script", superposición=true) emaLength = input(title="Longitud EMA", tipo=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = entrada (título="Longitud RSI", tipo=input.integer, defval=25, minval=0) rsiVal = rsi(cerrar, rsiLength)En esta etapa, establezcamos la lógica que colorea las velas según los valores de EMA y RSI. Considere la situación en la que el precio de cierre de la vela supera la EMA (a) y cuando el RSI está por encima de 50 (b).
¿Por qué exactamente estas condiciones? Estos indicadores se pueden utilizar juntos para indicarle cuándo tomar posiciones largas o cortas en Bitcoin. Por ejemplo, si se cumplen ambas condiciones, puede significar que ahora es un buen momento para abrir una posición larga. O, por el contrario, puede utilizar este indicador para saber cuándo no quedarse corto, incluso si otros indicadores dicen lo contrario.
La siguiente línea de nuestro script se verá así:
estudio(título="Binance Academy Script", superposición=true) emaLength = input(title="Longitud EMA", tipo=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = entrada (título="Longitud RSI", tipo=input.integer, defval=25, minval=0) rsiVal = rsi(close, rsiLength) colores = cerrar > emaVal y rsiVal > 50? color.verde : color.rojoSi traducimos el código al lenguaje normal, resulta que si el valor de la EMA excede el precio de cierre y el valor del RSI excede 50, coloreamos la vela de verde. De lo contrario el color será rojo.
Añadir EMA:
estudio(título="Binance Academy Script", superposición=true) emaLength = input(title="Longitud EMA", tipo=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = entrada (título="Longitud RSI", tipo=input.integer, defval=25, minval=0) rsiVal = rsi(close, rsiLength) colores = cerrar > emaVal y rsiVal > 50? color.verde: color.rojo trazado(emaVal, "EMA")Finalmente, dibujemos las velas agregando un parámetro de color:
estudio(título="Binance Academy Script", superposición=true) emaLength = input(title="Longitud EMA", tipo=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = entrada (título="Longitud RSI", tipo=input.integer, defval=25, minval=0) rsiVal = rsi(close, rsiLength) colores = cerrar > emaVal y rsiVal > 50? color.verde: color.rojo plot(emaVal, "EMA") plotcandle(abierto, alto, bajo, cerrado, color=colores)¡Aquí está nuestro guión completo! Para verlo en acción, agréguelo a su gráfico.

Gráfico BTC/BUSD con indicador EMA/RSI.
Resumen
En este artículo, analizamos algunos ejemplos sencillos del uso del Editor Pine de TradingView. A estas alturas, si ha completado nuestros ejemplos, ya puede crear títulos simples para gráficos de precios y obtener información adicional de sus propios indicadores.
En este artículo, abordamos solo un par de indicadores, pero usted mismo puede analizar los más complejos, ya sea seleccionando scripts integrados de la lista Nuevo o escribiéndolos usted mismo.
¿Buscas inspiración? Puede obtener ideas para su próximo proyecto de los siguientes artículos:
Una guía rápida para utilizar un sistema SAR parabólico
Una guía para usar las líneas de Fibonacci
Indicadores adelantados y rezagados
¿Qué es el indicador MACD?

