¿Qué es la escritura de pino?

Pine Script es un lenguaje de programación que se utiliza para modificar sus gráficos en la plataforma TradingView. La plataforma le ofrece muchas funciones para hacer esto, pero Pine Script le permite avanzar hacia su objetivo. Ya sea que desee cambiar los colores de los gráficos de acción del precio o probar una nueva estrategia, el editor Pine lo ayudará a personalizar sus gráficos en tiempo real como mejor le parezca.

El código está muy bien documentado, así que asegúrese de consultar la guía del usuario para obtener más información. A través de este tutorial, nuestro objetivo es analizar algunos conceptos básicos y proporcionar indicadores que pueden ser útiles en el comercio de monedas digitales.

preparación

Es muy fácil empezar a utilizar Pine Script. Cualquier código que escribimos se ejecuta en los servidores de TradingView, por lo que podemos usar el editor y desarrollar scripts desde el navegador, sin necesidad de descargas ni configuraciones adicionales.

En este tutorial, crearemos un gráfico para el par de divisas Bitcoin/Binance USD (BTCBUSD). Si aún no tiene una cuenta, puede continuar y crear una de forma gratuita (también está disponible una suscripción profesional, pero no es necesaria para esta guía).

Siga este enlace y verá un gráfico similar al siguiente:

Es probable que su gráfico sea más sofisticado.

Aquí nos gustaría un gráfico con todas las funciones: haga clic en el botón para acceder a él. Esto nos brinda una descripción general más detallada y herramientas de dibujo, así como opciones para dibujar líneas de tendencia, entre otras características.

Gráfico con todas las funciones. Puede editar 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 está interesado en el análisis técnico, le recomendamos encarecidamente que las consulte para familiarizarse con ellas. En la parte inferior izquierda (resaltada en la imagen), encontrará algunas pestañas diferentes: haga clic en Pine Editor.

Editor de pino

Este editor le ofrece un conjunto de características encantadoras. Le diremos lo que queremos hacer y luego haremos clic en Agregar al gráfico para ver nuestros comentarios aparecer en la parte superior. Tenga en cuenta que el gráfico puede quedar desordenado si ingresa varios comentarios a la vez, por lo que los eliminaremos entre ejemplos (haga clic derecho en el gráfico > Eliminar indicadores).

Puedes ver que ya tenemos dos líneas de códigos. Hagamos clic en Agregar al gráfico para ver qué sucede.

Se agrega un segundo gráfico debajo del gráfico original. El nuevo gráfico representará los mismos datos. Mueva el mouse sobre el botón Mi script y haga clic en los puntos suspensivos para eliminarlo. Analicemos el código con más detalle.

estudiar("Mi guión")

La primera línea configura nuestros comentarios. Solo requiere el nombre con el que desea que se llame el indicador ("My Script", en este caso), pero también hay algunas variables opcionales que podemos agregar. Una de esas variables es la superposición, que le indica a la plataforma que coloque el indicador en el gráfico actual (en lugar de en un nuevo sector). Como puede ver en el primer ejemplo, el valor predeterminado es falso. Por lo tanto, no lo veremos ejecutándose ahora, overlay=true agrega el indicador al gráfico actual.

trama (cerrar)

Esta línea es la instrucción para trazar el precio de cierre de Bitcoin. El gráfico nos proporciona un gráfico de líneas, pero también podemos mostrar gráficos de acción del precio y de barras, como veremos en un momento.

Ahora intentemos lo siguiente:

//@versión=4 estudio("Mi guión", superposición=verdadero) trazado(abierto, color=color.púrpura)

Una vez que agregue este símbolo, debería ver un segundo gráfico (parece que el gráfico original se ha desplazado hacia el lado derecho). En su lugar, todo lo que hicimos fue trazar el precio de apertura. Dado que el precio de apertura del día actual es el precio de cierre del día anterior, tiene sentido que tengan una forma similar.

¡Bien! Eliminemos los comentarios existentes (recuerde que hacemos esto haciendo clic derecho y presionando Eliminar indicadores). Mueva el mouse sobre BTC/BUSD y luego haga clic en el botón Ocultar para eliminar también el gráfico actual.

Muchos traders prefieren los gráficos de acción del precio, ya que nos brindan más información que un simple dibujo como el que acabamos de hacer. Agreguémoslos a continuación.

//@versión=4 estudio("Mi script", overlay=true) plotcandle(abrir, alto, bajo, cerrar)

Un buen comienzo, pero la falta de color lo hace un poco aburrido. Idealmente, deberíamos tener velas rojas cuando el precio de apertura sea mayor que el precio de cierre durante un período de tiempo específico, y velas verdes cuando el precio de cierre exceda el precio de apertura. Agregaremos una línea encima de la propiedad gráfico de velas():

//@versión=4 estudio("Mi script", overlay=true) colores = abrir >= cerrar? color.red : color.green plotcandle(abierto, alto, bajo, cerrado)

Esto sucede en cada gráfico de acción del precio, además de verificar si el precio de apertura es mayor o igual al precio de cierre. En este caso, significa que los precios han caído durante un período específico, por lo que el gráfico de acción del precio se coloreará de rojo. De lo contrario, será de color verde. Modifique la función drawcandle() para ingresar el esquema de color:

//@versión=4 estudio("Mi script", overlay=true) colores = abrir >= cerrar? color.red: color.green plotcandle(abierto, alto, bajo, cerrado, color=colores)

Elimine los indicadores existentes si aún no los ha eliminado y agregue este indicador al gráfico. Deberíamos tener algo que represente un gráfico normal de acción del precio.

Dibujo de medias móviles (MA)

Tenemos algunos conceptos básicos a continuación. Pasemos al primer indicador personalizado: la media móvil exponencial o EMA. Es una herramienta valiosa que nos permite eliminar las distracciones del mercado y facilitar la comprensión de los movimientos del mercado.

La media móvil exponencial es ligeramente diferente de la media móvil simple (SMA), ya que esta media se centra en los datos más recientes. Suele reaccionar ante movimientos bruscos y suele utilizarse en operaciones a corto plazo (day trading, por ejemplo).

Media móvil simple (SMA)

También podríamos dibujar una media móvil simple, por lo que deberíamos compararlas más adelante. Agregue esta línea a su secuencia de comandos:

trama(sma(cerrar, 10))

Esto representa el promedio de los 10 días anteriores. Ajuste el número entre paréntesis para ver cuánto cambia la curva cuando se tienen en cuenta diferentes períodos.

La media móvil simple se basa en los 10 días anteriores.

Media móvil exponencial (EMA)

La media móvil exponencial puede resultar un poco difícil de entender, pero no te preocupes. Consideremos la ecuación en detalle:

EMA = (Cierre - EMA del día anterior) * Multiplicador - EMA del día anterior

Entonces, ¿qué nos dice eso? Bueno, el nuevo promedio móvil de cada día se calcula en función del promedio móvil del día anterior. El multiplicador es el "peso de los datos" durante el período más reciente y se calcula mediante la siguiente ecuación:

Multiplicador = 2 / (Longitud de EMA + 1)

Para promedios móviles simples, necesitamos determinar cuánto durará el promedio móvil exponencial. En términos de estructura, el gráfico de media móvil exponencial es similar al gráfico de media móvil simple. Dibújalo junto a la media móvil simple para poder compararlos:

//@versión=4 estudio("Mi guión", overlay=true) plot(sma(close, 10)) plot(ema(close,10))

Puede ver una ligera diferencia entre los dos tipos de medias móviles.

Guiones integrados

Hasta ahora hemos escrito el código a mano para que esté familiarizado con él. Pero ofrezcamos algo que le ayudará a ahorrar tiempo, especialmente si escribimos guiones más complejos y no queremos hacerlo desde cero.

Haga clic en el botón Nuevo ubicado en la parte superior derecha de su editor. Verás un menú desplegable con todos los diferentes tipos de indicadores técnicos. Haga clic en Media móvil exponencial para ver el código fuente del indicador de media móvil exponencial.

Luego agréguelo al gráfico.

Esto es diferente de nuestros propios códigos: notará las propiedades input(). Es excelente para usar ya que puede hacer clic en este cuadro...

También puedes cambiar fácilmente algunos de los valores en la ventana emergente haciendo clic en la rueda de configuración.

Agregaremos dos propiedades input() en el siguiente script para demostrar cómo hacer esto.

Gráfico del índice de fuerza relativa (RSI)

El índice de fuerza relativa (RSI) es uno de los indicadores básicos 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. Calificada en una escala que va de 0 a 100, la puntuación RSI intenta indicar a los inversores si un activo está sobrecomprado o sobrevendido. Normalmente, un activo se considera sobrevendido si su puntuación es menor o igual a 30, y se considera sobrecomprado si su puntuación es mayor o igual a 70.

Si va a Nuevo > Estrategia RSI, podrá comprobarlo usted mismo. El RSI se mide en 14 períodos (es decir, 14 horas o 14 días), pero usted tiene la libertad de ajustar esta configuración para adaptarla a su propia estrategia.

Agregue eso al cuadro. Ahora deberías ver algunas flechas (identificadas por la propiedad enter.strategy() en el código). RsiLE indica posibles oportunidades de compra para el activo, ya que puede encontrarse en una zona de sobreventa. Mientras que RsiSE destaca los posibles puntos de venta del activo cuando se encuentra en la zona de sobrecompra. Tenga en cuenta que, como todos los indicadores, no se debe confiar en ellos como evidencia definitiva de un aumento o una caída de los precios.

Realizar una prueba retrospectiva

Existe una forma que nos permite probar indicadores personalizados. Aunque el rendimiento pasado no es garantía de resultados futuros, el proceso de realizar pruebas retrospectivas de los scripts nos da una idea de cuán efectivos son para recibir señales.

A continuación se muestra un ejemplo de un script simple. Crearemos una estrategia simple para ingresar a una operación larga cuando el precio de Bitcoin caiga por debajo de $11,000 y salir de la operación cuando el precio supere los $11,300. Así, podemos saber qué tan rentable ha sido históricamente esta estrategia.

//@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 puntos de entrada y salida como variables; ambos son entradas, lo que significa que podemos cambiarlos en el gráfico más adelante. También hemos establecido una variable de precio, que registra el precio de cierre de cada período. Por tanto, hay algo lógico en el uso de declaraciones if. Si la parte entre corchetes es verdadera, se activará el bloque sangrado. De lo contrario, se omitirá.

Además, si el precio baja o es igual al precio de entrada deseado, la expresión se evaluará como verdadera y abriremos una operación de compra. Una vez que el precio iguale o supere el precio de salida requerido, se activará el segundo bloque, además de cerrar todas las operaciones abiertas.

Agregaremos comentarios al gráfico usando flechas para indicar los puntos de entrada y salida, por lo que hemos nombrado estos puntos en el marco de comentarios (en este ejemplo, "Comprar caída" y "Vender en noticias"). Copie el símbolo y agréguelo al gráfico.

Ahora puede ver los indicadores en el gráfico. Es posible que tengas que alejarte para echar un vistazo.

TradingView aplica sus reglas a datos más antiguos. También notarás una transición del editor Pine a la pestaña Probador de estrategias. Esto le permite ver una descripción general de las ganancias potenciales, una lista de operaciones y su desempeño respectivo.

Operaciones en las que entramos y salimos.

Vincular elementos juntos

Es hora de escribir nuestro propio programa utilizando algunos de los conceptos descritos hasta ahora. Combinaremos tanto la media móvil exponencial como el RSI utilizando su valor para colorear los gráficos de acción del precio y obtener información concebible.

Esto no debe interpretarse como un asesoramiento financiero, ya que no existe una forma correcta definida objetivamente de utilizar este indicador. Al igual que todos los demás indicadores, este indicador debe utilizarse junto con otras herramientas para desarrollar su estrategia de inversión.

Empecemos a trabajar en el nuevo guión. Elimine todos los indicadores del gráfico y oculte también el gráfico BTC/BUSD, de modo que tengamos un gráfico en blanco con el que empezar a trabajar.

Empecemos por definir el estudio. Puede usar cualquier nombre que desee, solo asegúrese de configurar overlay=true.

estudio (título = "Binance Academy Script", superposición = verdadero)

Recuerde la ecuación de media móvil exponencial de la que hablamos antes. Necesitamos proporcionar al multiplicador datos para el período que tomará la media móvil exponencial. Convirtámoslo en un campo de entrada que requiere un número entero (por lo tanto, sin decimales). También especificaremos un valor mínimo (minval) y un valor predeterminado (defval).

estudio(título="Binance Academy Script", superposición=true) emaLength = input(título="Longitud EMA", tipo=input.integer, defval=25, minval=0)

Podemos calcular el valor de EMA para cada vela en el gráfico usando la nueva variable:

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)

asombroso. Respecto al Índice de Fuerza Relativa (RSI). Entraremos en el período de forma 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 calcular esto:

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 este punto, debes tener en cuenta que los colores de los gráficos de acción del precio dependen de los valores de EMA y RSI. Consideremos un ejemplo cuando (a) el precio de cierre de la vela cruza la EMA y (b) el RSI está por encima de 50.

¿Por qué? Bueno, puede decidir que estos indicadores se pueden utilizar en conjunto para indicarle cuándo comprar o vender Bitcoin. Por ejemplo, puede pensar que cumplir ambas condiciones significa que es un buen momento para iniciar una operación larga. Alternativamente, puede utilizar indicadores para recordarle cuándo no debe vender, incluso si otros indicadores muestran lo contrario.

Entonces, la siguiente línea se ve 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.rojo

Si traducimos esto al lenguaje sencillo, significa que si la EMA excede el precio de cierre y la puntuación del RSI cruza 50, colorearemos la vela de verde. De lo contrario, se coloreará de rojo.

Luego, traza la media móvil exponencial:

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, dibuja las velas, asegurándote de incluir la variable 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)

¡Y ya terminaste con el guión! Agréguelo a su gráfico para verlo en acción.

Gráfico BTC/BUSD utilizando EMA/RSI.

Pensamientos concluyentes

En este artículo hemos visto algunos ejemplos básicos de lo que se puede hacer usando el Editor Pine de TradingView. Debería poder hacer comentarios sencillos en el gráfico de precios para obtener información adicional de sus indicadores.

Aquí solo hemos resaltado dos indicadores, pero es fácil crear indicadores más complejos, ya sea definiendo nuevos scripts integrados o escribiéndolos usted mismo.

¿Necesitas ideas inspiradoras? Los siguientes artículos pueden ayudarle a obtener algunas ideas para su próximo proyecto: