junio 25, 2019

Presentamos Pine Script v4!

¡Conozca la nueva versión del lenguaje de programación Pine Script v4! Incluye muchas características nuevas. Mejoramos la estructura del lenguaje y solucionamos varios problemas. Sin embargo, la característica más importante y esperada es la compatibilidad con los objetos de dibujo.

Vamos a mencionar brevemente las nuevas características en esta publicación del blog. Lea la documentación y el manual de referencia si desea conocer los detalles (tenga en cuenta que puede ir directamente a la sección de descripción de objetos de dibujo). 

Etiqueta de objeto de dibujo

La función label.new le permite dibujar etiquetas en el gráfico, incluidas las que contienen texto arbitrario. Aquí hay un ejemplo de un script que dibuja una etiqueta que contiene el cierre de la última barra:

//@version=4
study("Last Bar Price", overlay=true)

l = label.new(bar_index, na, 'last price is '+tostring(close), 
  color=close >= open ? color.green : color.red, 
  textcolor=color.white,
  style=label.style_labeldown, yloc=yloc.abovebar)

label.delete(l[1])

Puede editar y eliminar el objeto de etiqueta después de crearlo utilizando la familia de funciones label. *. Este es un ejemplo de una secuencia de comandos más compleja que utiliza la etiqueta: puntos de pivote Máximo/Mínimo.

Objeto de dibujo lineal

La función line.new le permite dibujar líneas en el gráfico. Aquí hay un ejemplo de un script simple que dibuja una línea que conecta el máximo de la barra actual y el mínimo de una décima barra histórica:  

//@version=4
study("Line", overlay=true)
l = line.new(bar_index, high, bar_index[10], low[10], width = 4)
line.delete(l[1])


Los objetos de línea se pueden editar y eliminar utilizando las funciones apropiadas de la familia linea. *. Aquí hay un ejemplo de un script más complejo que utiliza objetos de línea: Zig Zag

Tenga en cuenta que actualmente podemos mostrar un total de aproximadamente 50–55 dibujos de un solo tipo (etiqueta o línea) por script en la tabla. Esta es una limitación diseñada para evitar el uso excesivo del servidor.

Los nuevos tipos de datos de línea y la etiqueta mejoran en gran medida las capacidades de Pine Script, y le permiten implementar una lógica compleja en los indicadores populares en los scripts de usuario. Se pueden encontrar ejemplos en la documentación.

Series String

Ahora admitimos variables de un tipo de datos de cadena de serie. Aquí hay un ejemplo del uso de cadenas de series en etiquetas:

//@version=4
study("Series string", overlay = true)
draw_label(title) =>
    label.new(bar_index, high, text=title)
t = close >= open ? "green" : "red"
draw_label(t)

 

Var palabra clave

//@version=4
study("My Script")
var s = 0.0
if close >= open
    s := s + 1
plot(s)

 

Cada vez que se cumple la condición de cierre>= apertura, el valor de la variable s aumentará en uno. El valor de inicialización puede ser cualquier expresión aritmética.

La sintaxis para declarar variables con la palabra clave var evita el uso del siguiente código: s: = nz (s [1], s). Declarar variables con el modificador var puede ser muy útil cuando se trabaja con dibujos.

Cambio de nombre de constantes, variables y funciones incorporadas

En Pine Script v4, las siguientes constantes, variables y funciones incorporadas fueron renombradas:

  1. Las constantes de color (por ejemplo, rojo) se mueven al color. * Espacio de nombres (por ejemplo, color.red).
  2. La función de color ha sido renombrada a color.new.
  3. Las constantes para los tipos de entrada (por ejemplo, un entero) se mueven a la input. * Espacio de nombres (por ejemplo, input.integer).
  4. The plot style constants (e.g. histogram style) are moved to the plot.style_* namespace (e.g. plot.style_histogram).
  5. Style constants for the hline function (e.g. the dotted style) are moved to the hline.style_* namespace (e.g. hline.style_dotted).
  6. Constants of days of the week (e.g. sunday) are moved to the dayofweek.* namespace (e.g.  dayofweek.sunday).
  7. The variables of the current chart timeframe (e.g. period, isintraday) are moved to the timeframe.* namespace (e.g. timeframe.period, timeframe.isintraday).
  8. The interval variable was renamed to timeframe.multiplier.
  9. The ticker and tickerid variables are renamed to syminfo.ticker and syminfo.tickerid respectively.
  10. The n variable that contains the bar index value has been renamed to bar_index.

La razón detrás de cambiar el nombre de todo lo anterior fue estructurar las herramientas de lenguaje estándar y facilitar el trabajo con el código. Los nuevos nombres se agrupan de acuerdo con las asignaciones de los prefijos comunes. Por ejemplo, verá una lista con todas las constantes de color disponibles si escribe «color» en el editor y presiona Ctrl + Espacio.

Declaración explícita de tipo de variable

In Pine Script v4 it’s no longer possible to create variables with an unknown data type at the time of their declaration (see na value). This was done to avoid a number of issues that arise when the variable type changes after its initialization with the na value. From now on, you need to explicitly specify their type using keywords or type functions (for example, float) when declaring variables with the na value:

//@version=4
study("NA", overlay=true)
float a = na
a := if close >= open
    high
else
    low
plot(a)

¡Pruebe el nuevo Pine Script v4! Algunos usuarios ya han probado nuevas funciones y han escrito varios guiones impresionantes utilizando dibujos.

For example, Ricardo Santos has written a series of scripts that you can see below:

Joris Duyck escribió el script Trendlines, ilustrando las posibilidades de las líneas de dibujo.

¡Esperamos que estos ejemplos le inspiren! Puede hacer preguntas, discutir problemas y compartir comentarios en nuestro chat. Queremos agradecer a todos los miembros de la comunidad de Pinescripters, que participaron en las pruebas beta y nos ayudaron mucho. También puede hacer preguntas relacionadas con el código en nuestra página Stack Overflow .