Introducción
Sin las herramientas comerciales adecuadas, no se pueden realizar análisis técnicos eficaces. Una estrategia comercial sólida lo ayudará a evitar errores comunes, mejorar su gestión de riesgos y aumentar su capacidad para identificar y aprovechar oportunidades.
Para muchos, TradingView es la plataforma de gráficos a la que acudir. Millones de personas utilizan la poderosa aplicación web HTML5, que ofrece un centro de herramientas de análisis técnico, para rastrear los movimientos en los mercados de Forex, criptomonedas y acciones tradicionales.
TradingView tiene muchas características poderosas: nos permite rastrear activos en numerosas plataformas comerciales y publicar ideas comerciales dentro de su red social. En este artículo, nos centraremos en su personalización. Usaremos Pine Script, el lenguaje de programación propio de TradingView, que nos otorga un control granular sobre los diseños de nuestros gráficos.
¡Empecemos!
¿Qué es la escritura de pino?
Pine Script es un lenguaje de programación que se puede utilizar para modificar sus gráficos de TradingView. La plataforma ya te proporciona muchas funciones para hacerlo, pero Pine Script te permite ir un paso más allá. Ya sea que desee cambiar los colores de sus velas o probar una nueva estrategia, el Editor Pine le permitirá personalizar sus gráficos en tiempo real como mejor le parezca.
El código en sí está excelentemente documentado, así que asegúrese de consultar el manual del usuario para obtener más información. Nuestro objetivo en este tutorial es analizar algunos de los conceptos básicos e introducir indicadores que pueden resultar útiles para el comercio de criptomonedas.
Configurando
Es increíblemente sencillo comenzar con Pine Script. Cualquier código que escribimos se ejecuta en los servidores de TradingView, por lo que podemos acceder al editor y desarrollar nuestros scripts desde un navegador, sin necesidad de ninguna descarga o configuración adicional.
En este tutorial, vamos a trazar el par de divisas Bitcoin/Binance USD (BTCBUSD). Si aún no tiene una, continúe y cree una cuenta gratuita (también hay una suscripción profesional disponible, pero no es necesaria para esta guía).
Siga este enlace y verá un gráfico similar al siguiente:

El tuyo probablemente estará más actualizado.
Aquí queremos obtener el gráfico con todas las funciones: haga clic en el botón para acceder a él. Eso nos brinda una vista mucho más detallada, herramientas de dibujo y opciones para trazar líneas de tendencia, entre otras cosas.

El gráfico con todas las funciones. Puede ajustar el período de tiempo haciendo clic en las vistas encima de las pestañas resaltadas.
No discutiremos cómo utilizar 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 (delineada en la imagen), verá algunas pestañas diferentes: haga clic en Pine Editor.
El editor de pino

Este editor es donde ocurre la magia. Le diremos lo que queremos hacer y luego haremos clic en Agregar al gráfico para ver nuestras anotaciones aparecer arriba. Tenga en cuenta que las cosas pueden complicarse si incluimos varias anotaciones a la vez, por lo que las eliminaremos entre ejemplos (haga clic derecho en el gráfico > Eliminar indicadores).
Puedes ver que ya tenemos un par de líneas de código allí. Hagamos clic en Agregar al gráfico para ver qué sucede.

Se agrega un segundo gráfico debajo del original. El nuevo gráfico representa los mismos datos. Pase el cursor sobre My Script y haga clic en la cruz para eliminarlo. Ahora, profundicemos en el código.
estudiar("Mi guión")Esta primera línea simplemente configura nuestra anotación. Solo requiere el nombre con el que desea llamar al indicador ("My Script", en este caso), pero también hay algunos parámetros opcionales que podemos agregar. Uno de ellos es la superposición, que le indica a TradingView que coloque el indicador en el gráfico existente (en lugar de en un segmento nuevo). Como puede ver en nuestro primer ejemplo, el valor predeterminado es falso. Aunque no lo veremos en acción ahora, overlay=true agrega el indicador al gráfico existente.
trama (cerrar)Esta línea es la instrucción para trazar el precio de cierre de Bitcoin. plot simplemente nos proporciona un gráfico de líneas, pero también podemos mostrar velas y barras, como veremos en breve.
Ahora, intentemos lo siguiente:
//@versión=4
estudio ("Mi guión", superposición = verdadero)
trama (abierta, color = color.púrpura)Una vez que agregue esto, debería ver un segundo gráfico (que se parece al original desplazado hacia la derecha). En su lugar, todo lo que hemos hecho es trazar el precio de apertura y, dado que la apertura del día actual es el cierre del día anterior, tiene sentido que tengan una forma idéntica.
¡Bueno! Eliminemos las anotaciones actuales (recuerde, lo hacemos haciendo clic derecho y presionando Eliminar indicadores). Pase el cursor sobre Bitcoin/BUSD y haga clic en el botón Ocultar para borrar también el gráfico actual.
Muchos traders prefieren los gráficos de velas ya que nos brindan más información que un gráfico simple como el que acabamos de hacer. Agreguémoslos a continuación.
//@versión=4
estudio ("Mi guión", superposición = verdadero)
plotcandle(abierto, alto, bajo, cerrado)Es un buen comienzo, pero la falta de colores lo hace un poco soso. Idealmente, deberíamos tener velas rojas cuando la apertura es mayor que el cierre para el período de tiempo determinado, y velas verdes si el cierre excede la apertura. Agregaremos una línea encima de la función plotcandle():
//@versión=4
estudio ("Mi guión", superposición = verdadero)
colores = abrir > = cerrar? color.rojo : color.verde
plotcandle(abierto, alto, bajo, cerrado)Esto analiza cada vela y comprueba si la apertura es mayor o igual al cierre. Si es así, significa que los precios han caído durante el período, por lo que la vela se coloreará de rojo. De lo contrario, lo coloreará de verde. Modifique la función plotcandle() para pasar este esquema de color en:
//@versión=4
estudio ("Mi guión", superposición = verdadero)
colores = abrir > = cerrar? color.rojo : color.verde
plotcandle(abierto, alto, bajo, cerrado, color=colores)Elimine los indicadores actuales si aún no lo ha hecho y agregue este al gráfico. Ahora deberíamos tener algo parecido a un gráfico de velas normal.

¡Hermoso!
Trazar promedios móviles (MA)
Hemos aprendido algunos de los conceptos básicos. Pasemos a nuestro primer indicador personalizado: la media móvil exponencial o EMA. Esta es una herramienta valiosa ya que nos permite filtrar cualquier ruido del mercado y suavizar la acción del precio.
La EMA se diferencia ligeramente de la media móvil simple (SMA) en que otorga más peso a los datos más recientes. Tiende a ser más reactivo a movimientos repentinos y a menudo se utiliza para operaciones a corto plazo (en el trading intradía, por ejemplo).
La media móvil simple (SMA)
También podríamos trazar la SMA, para poder comparar las dos siguientes. Agregue esta línea a su secuencia de comandos:
trama(sma(cerrar, 10))Esto traza el promedio de los diez días anteriores. Modifique el número entre paréntesis para ver cómo cambia la curva al tener en cuenta diferentes longitudes.

La SMA, basada en los diez días anteriores.
La media móvil exponencial (EMA)
La EMA será un poco más complicada de entender, pero no te preocupes. Primero analicemos la fórmula:
EMA = (Cierre - EMA del día anterior) * Multiplicador - EMA del día anteriorEntonces, ¿qué nos dice esto? Bueno, para cada día calculamos una nueva media móvil basada en la del día anterior. El multiplicador es lo que “pesa” el periodo más reciente, y se calcula con la siguiente fórmula:
Multiplicador = 2 / (Longitud de EMA + 1)Al igual que con las medias móviles simples, debemos especificar la longitud de la EMA. Sintácticamente, la función para trazar EMA es similar a la de SMA. Tracéelo junto con el SMA para que pueda comparar los dos:
//@versión=4
estudio ("Mi guión", superposición = verdadero)
trama(sma(cerrar, 10))
trama(ema(cerrar,10))
Puede ver una ligera diferencia en los dos tipos de MA.
➠ ¿Quieres empezar a utilizar criptomonedas? ¡Compre Bitcoin en Binance!
Guiones incorporados
Hasta ahora, hemos escrito nuestro código manualmente para que pueda familiarizarse con él. Pero introduzcamos algo que puede ahorrarnos tiempo, especialmente si estamos escribiendo guiones más complejos y no queremos hacerlos desde cero.
En la parte superior derecha de su editor, haga clic en Nuevo. Obtendrá un menú desplegable con todo tipo de indicadores técnicos diferentes. Haga clic en Media móvil exponencial para ver el código fuente de un indicador EMA.

Continúe y agregue esto al cuadro.
Este es diferente al nuestro: notarás las funciones input(). Estos son buenos desde una perspectiva de usabilidad ya que puedes hacer clic en este cuadro...

...y cambiar fácilmente algunos de los valores en una ventana emergente haciendo clic en la rueda de Configuración.

Agregaremos un par de funciones input() en nuestro próximo script para demostrar esto.
Trazar el indicador del índice de fuerza relativa (RSI)
El índice de fuerza relativa (RSI) es otro indicador esencial en el análisis técnico. Se conoce como indicador de impulso, lo que significa que mide el ritmo al que se compran y venden los activos. Presentada en una escala de 0 a 100, una puntuación RSI intenta informar a los inversores si los activos están sobrecomprados o sobrevendidos. Normalmente, un activo puede considerarse sobrevendido si tiene una puntuación menor o igual a 30, y podría estar sobrecomprado con una puntuación mayor o igual a 70.
Si te diriges a Nuevo > Estrategia RSI, podrás verlo por ti mismo. El RSI generalmente se mide en períodos de 14 (es decir, 14 horas o 14 días), pero puedes modificar esa configuración para adaptarla a tu propia estrategia.
Agregue esto al cuadro. Deberías ver algunas flechas ahora (definidas por la función estrategia.entry() en el código). RsiLE indica una oportunidad potencial para posicionar el activo en largo, ya que puede estar sobrevendido. RsiSE destaca posibles puntos en los que vender el activo en corto cuando está sobrecomprado. Tenga en cuenta que, como ocurre con todos los indicadores, no necesariamente debe confiar en ellos como evidencia infalible de que los precios aumentarán o disminuirán.
Prueba retrospectiva
Existe una manera de probar nuestros indicadores personalizados. Aunque el rendimiento pasado no es garantía de resultados futuros, probar nuestros scripts puede darnos una idea de cuán efectivos son para captar señales.
A continuación daremos un ejemplo de un script simple. Vamos a crear una estrategia sencilla que entra en una posición larga cuando el precio de BTC cae por debajo de $11,000 y sale de la posición cuando el precio supera los $11,300. Entonces podemos ver cuán rentable habría sido históricamente esta estrategia.
//@versión=4
estrategia ("ToDaMoon", superposición = verdadero)
entrar = entrada(11000)
salida = entrada (11300)
precio = cerrar
si (precio <= ingresar)
estrategia.entrada("ComprarTheDip", estrategia.long, comentario="ComprarTheDip")
si (precio >= salida)
estrategia.close_all(comentario="VenderLasNoticias")Aquí hemos definido la entrada y la salida como variables; ambas son entradas, lo que significa que podemos cambiarlas en el gráfico más adelante. También configuramos la variable de precio, que toma el cierre de cada período. Entonces, tenemos algo de lógica 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, se omitirá.
Entonces, si el precio es menor o igual a nuestra entrada deseada, la primera expresión se evalúa como verdadera y abriremos una posición larga. Una vez que el precio iguale o supere la salida deseada, se activará el segundo bloque, cerrando todas las posiciones abiertas.
Anotaremos el gráfico con flechas que muestran dónde entramos/salimos, por lo que especificamos qué etiquetar estos puntos con el parámetro comentario (en este ejemplo, "BuyTheDip" y "SellTheNews"). Copie el código y agréguelo al gráfico.

Ahora puede ver los indicadores en el gráfico. Es posible que tengas que alejarte.
TradingView aplica automáticamente sus reglas a datos más antiguos. También notarás que cambia del Editor Pine a la pestaña Probador de estrategias. Esto le permite ver una descripción general de sus ganancias potenciales, una lista de operaciones y cada uno de sus desempeños individuales.

Posiciones en las que hemos entrado y salido.
atándolo juntos
Es hora de escribir nuestro propio guión utilizando algunos de los conceptos que hemos visto hasta ahora. Combinaremos EMA y RSI y usaremos sus valores para colorear las velas, generando información que podamos visualizar fácilmente.
Esto no debe interpretarse como un consejo financiero; no existe una forma objetivamente correcta de utilizar este indicador. Como ocurre con todos los demás, conviene utilizarlo con otras herramientas para desarrollar su propia estrategia.
Ahora trabajemos en nuestro nuevo script. Elimine todos sus indicadores del gráfico y oculte también el gráfico Bitcoin/BUSD, para que tengamos un lienzo limpio sobre el que trabajar.
Empecemos por definir nuestro estudio. Siéntete libre de ponerle el nombre que quieras, solo asegúrate de establecer overlay=true.
estudio (título = "Binance Academy Script", superposición = verdadero)Recuerde nuestra fórmula EMA de antes. Necesitamos proporcionar al multiplicador la longitud de la EMA. Convirtámoslo en una entrada que requiere un número entero (por lo tanto, sin decimales). También estableceremos un mínimo que puede ser (minval) y un valor predeterminado (defval).
estudio (título = "Binance Academy Script", superposición = verdadero)
emaLength = entrada(título="Longitud EMA", tipo=entrada.integer, defval=25, minval=0)Usando esta nueva variable, podemos calcular el valor de EMA para cada vela en nuestro gráfico:
estudio (título = "Binance Academy Script", superposición = verdadero)
emaLength = entrada(título="Longitud EMA", tipo=entrada.integer, defval=25, minval=0)
emaVal = ema(cerrar, emaLongitud)Excelente. Sobre el RSI. Le daremos una longitud de forma similar:
estudio (título = "Binance Academy Script", superposición = verdadero)
emaLength = entrada(título="Longitud EMA", tipo=entrada.integer, defval=25, minval=0)
emaVal = ema(cerrar, emaLongitud)
rsiLength = entrada(título="Longitud RSI", tipo=entrada.integer, defval=25, minval=0)Y ahora podemos calcularlo:
estudio (título = "Binance Academy Script", superposición = verdadero)
emaLength = entrada(título="Longitud EMA", tipo=entrada.integer, defval=25, minval=0)
emaVal = ema(cerrar, emaLongitud)
rsiLength = entrada(título="Longitud RSI", tipo=entrada.integer, defval=25, minval=0)
rsiVal = rsi(cerrar, rsiLongitud)En esta etapa, armemos la lógica que colorea las velas dependiendo de los valores de EMA y RSI. Tomemos una situación en la que (a) el precio de cierre de la vela supera la EMA y (b) donde el RSI está por encima de 50.
¿Por qué? Bueno, podrías decidir que estos indicadores se pueden utilizar en conjunto para indicarte cuándo comprar o vender Bitcoin. Por ejemplo, se podría pensar que cumplir ambas condiciones significa que es un buen momento para entrar en una posición larga. O por el contrario, puede usarlo para informarle cuándo no debe ponerse en corto, incluso si otros indicadores dicen lo contrario.
Entonces, nuestra siguiente línea se verá así:
estudio (título = "Binance Academy Script", superposición = verdadero)
emaLength = entrada(título="Longitud EMA", tipo=entrada.integer, defval=25, minval=0)
emaVal = ema(cerrar, emaLongitud)
rsiLength = entrada(título="Longitud RSI", tipo=entrada.integer, defval=25, minval=0)
rsiVal = rsi(cerrar, rsiLongitud)
colores = cerrar > emaVal y rsiVal > 50? color.verde : color.rojoSi traducimos esto al lenguaje sencillo, simplemente estamos diciendo que si el valor de la EMA excede el precio de cierre y la puntuación del RSI excede 50, colorearemos la vela de verde. De lo contrario, lo colorearemos de rojo.
A continuación, trace la EMA:
estudio (título = "Binance Academy Script", superposición = verdadero)
emaLength = entrada(título="Longitud EMA", tipo=entrada.integer, defval=25, minval=0)
emaVal = ema(cerrar, emaLongitud)
rsiLength = entrada(título="Longitud RSI", tipo=entrada.integer, defval=25, minval=0)
rsiVal = rsi(cerrar, rsiLongitud)
colores = cerrar > emaVal y rsiVal > 50? color.verde : color.rojo
trama(emaVal, "EMA")Por último, traza las velas, asegurándote de incluir el parámetro de color:
estudio (título = "Binance Academy Script", superposición = verdadero)
emaLength = entrada(título="Longitud EMA", tipo=entrada.integer, defval=25, minval=0)
emaVal = ema(cerrar, emaLongitud)
rsiLength = entrada(título="Longitud RSI", tipo=entrada.integer, defval=25, minval=0)
rsiVal = rsi(cerrar, rsiLongitud)
colores = cerrar > emaVal y rsiVal > 50? color.verde : color.rojo
trama(emaVal, "EMA")
plotcandle(abierto, alto, bajo, cerrado, color=colores)¡Y ese es el guión! Agréguelo al gráfico para verlo en acción.

Un gráfico BTC/BUSD con el indicador EMA/RSI.
Pensamientos finales
En este artículo, analizamos algunos ejemplos básicos de lo que puede hacer con el Editor Pine de TradingView. A estas alturas, debería tener confianza para realizar anotaciones sencillas en los gráficos de precios para obtener información adicional a partir de sus propios indicadores.
Aquí solo nos hemos interesado en un par de indicadores, pero es fácil crear otros más complejos, ya sea seleccionando los scripts incorporados en Nuevo o escribiéndolos usted mismo.
¿Te falta inspiración? Los siguientes artículos pueden brindarle algunas ideas para su próximo proyecto:
Una breve guía sobre el indicador SAR parabólico
Una guía para dominar el retroceso de Fibonacci
Indicadores adelantados y rezagados explicados
Indicador MACD explicado

