April 9, 2021
¿Qué hay nuevo en Pine?

No todas las actualizaciones de Pine justifican una entrada de blog separada, pero nunca se sabe cuándo una nueva característica puede ser útil para la codificación de sus scripts. Esta entrada muestra las mejoras recientes que pueden haber pasado desapercibidas.

La palabra clave varip es útil para cuando quieras hacer un seguimiento de algunos datos y cómo cambian dentro de la barra de tiempo real. Todas las variables regulares de Pine están sujetas a lo que se conoce como rollback, donde en cada nuevo tick de datos, el estado de la variable se restablece a su valor en la barra anterior antes de evaluar los nuevos datos. La palabra clave varip evita esto y le permite comparar el valor actual de una variable con su valor en el tick anterior (en lugar de la barra anterior), lo que abre todo un nuevo mundo de posibilidades. Echa un vistazo a un gráfico de ticks creado por uno de nuestros Creadores de Pine, LonesomeTheBlue:

https://www.tradingview.com/script/ygNO2G1V-Tick-Chart/

Para saber más, lee el tutorial en profundidad sobre varip de PineCoders:

https://www.tradingview.com/script/ppQxBISk-Using-varip-variables-PineCoders/

Para aquellos que querían más matemáticas en Pine, ahora tenemos un conjunto de nuevas funciones y constantes relacionadas con las matemáticas:

  • Nuevas constantes math.pi, math.phi, math.rphi and math.e
  • New round() nueva funcionalidad – la función ahora permite especificar la precisión del redondeo, en lugar de redondear siempre al entero más cercano
  • median()
  • mode()
  • range()
  • todegrees()
  • toradians()
  • random()

Aquí hay una estrategia para los que también les gusta vivir peligrosamente: todas las entradas y salidas son aleatorias basadas en los porcentajes que se especifican en la sección de Entradas, todo gracias a la función random():

//@version=4
strategy("I’m feeling lucky", overlay=true)
seed = input(1, "Seed, increase to recalculate the strategy", minval=1)
entryPerc = input(20.0, "Entry chance, %", minval=0.0, maxval=100.0)
exitPerc = input(10.0, "Exit chance, %", minval=0.0, maxval=100.0) 
roll = random(0, 100, seed)
positionSize = floor(random(1, (strategy.equity / close), seed))
if roll < entryPerc
    strategy.entry("My Long Entry Id", strategy.long, qty=positionSize)
if roll < exitPerc
    strategy.close_all()

Por otra parte, el operador de asignación := se ha fusionado con los operadores aritméticos para crear los nuevos operadores de asignación +=, -=, *=, /= y, %=. Estos permiten ordenar y acortar los scripts: en lugar de utilizar a := a + 1 se puede escribir simplemente a += 1. Una pequeña, pero muy conveniente, mejora.

Si alguna vez has necesitado convertir una cadena en un número, la nueva función tonumber() te permite hacerlo. Por ejemplo, en el siguiente script, tonumber(), junto con otras funciones relacionadas con las cadenas, como str.split() y str.replace_all(), permite que un solo campo de entrada de cadena devuelva varios valores enteros que luego se utilizan como longitudes para los cálculos del SMA. No hay ninguna razón de peso para hacerlo de esta manera en lugar de la manera correcta y conveniente de «una entrada separada para cada uno de los SMA»… Pero si lo necesitas, está aquí:

//@version=4
study("My SMAs", overlay=true)
sma_lengths = input("5, 10, 20, 30, 50", title = "SMA Lengths (separated by comma)")
sma_lengths_array = str.split(str.replace_all(sma_lengths, " ", ""), ",")
sma_len(index) =>
    index > array.size(sma_lengths_array) - 1 ? 10 :
     int(tonumber(array.get(sma_lengths_array, index)))
sma0 = sma(close, sma_len(0))
sma1 = sma(close, sma_len(1))
sma2 = sma(close, sma_len(2))
sma3 = sma(close, sma_len(3))
sma4 = sma(close, sma_len(4))
plot(sma0, color=color.blue)
plot(sma1, color=color.red)
plot(sma2, color=color.green)
plot(sma3, color=color.orange)
plot(sma4, color=color.purple)

Hemos añadido una variable time_tradingday, que devuelve la marca de tiempo UNIX del comienzo del día de negociación. Esto será muy útil cuando se analicen símbolos que se negocian durante la noche, como el EURUSD, donde la negociación comienza el Domingo, aunque técnicamente, el día de negociación es en realidad el lunes.

La nueva función time_close() permite obtener la hora de cierre de una barra a partir de un marco temporal y una sesión determinados (a diferencia de la variable time_close existente anteriormente, que sólo funciona con el marco temporal/sesión del gráfico). Esto es especialmente útil para los dibujos, ya que permite dibujar líneas y etiquetas en el futuro con mayor precisión. Para verlo en acción, consulte la opinión de JayRogers sobre el indicador Pivot Points:

https://www.tradingview.com/script/7EwXUkBE-Pivotal-Multi-Pivot-Selector/

Con el nuevo parámetro format.percent de study(), la salida de su script puede ahora formatearse automáticamente como un porcentaje. Véalo en acción con nuestro indicador Aroon incorporado:

//@version=4
study(title="Aroon", shorttitle="Aroon", overlay=false, format=format.percent, precision=2, resolution="")
length = input(14, minval=1)
upper = 100 * (highestbars(high, length+1) + length)/length
lower = 100 * (lowestbars(low, length+1) + length)/length
plot(upper, "Aroon Up", color=#FF6A00)
plot(lower, "Aroon Down", color=#0094FF)

Tres nuevas variables, session.ismarket, session.ispremarket y session.ispostmarket, permiten comprobar la parte de la sesión intradía con la que está relacionada la barra actual. Tenga en cuenta que las horas extendidas sólo aparecen en los gráficos intradía, y sólo cuando la opción está explícitamente activada a través de los ajustes.

Si quieres enterarte de las actualizaciones de Pine tan pronto como se produzcan, sigue las Notas de la Versión en nuestro Manual de Usuario. Los PineCoders también difunden noticias sobre las actualizaciones en su canal Squawk Box Telegram, en Twitter y en el chat público de Pine Script en TradingView.

Esperamos que estas mejoras le resulten útiles. Por favor, siga enviándonos sus comentarios. Construimos TradingView para nuestros usuarios y nos encanta escuchar sus comentarios.

La manera más rápida de seguir los mercados

Abrir gráfico