Veo el error 'Pine no puede determinar la longitud de referencia de una serie. Intente usar max_bars_back'

Cuando se calcula un script de Pine, crea un búfer histórico de cierto tamaño para cada variable o función en el código. Ese búfer contiene información sobre los valores anteriores de la variable/función y se usa cuando el código se refiere a los valores pasados usando el operador de referencia de historial []. El tamaño del búfer especifica hasta qué punto del historial se puede solicitar este valor.

Pine determina automáticamente el tamaño de búfer requerido para todas las variables y funciones analizando las referencias pasadas hechas mientras calcula el script en las primeras 244 barras. Si no se detectan referencias pasadas, se asigna un tamaño de búfer predeterminado a la variable o función. Para las variables, el tamaño de búfer predeterminado es 300 barras, para las funciones es una barra.

Comúnmente surge un problema en las ramas de las declaraciones condicionales (if, iff o?) Cuando las referencias pasadas a una variable o función dentro de la declaración condicional se ejecutan por primera vez cuando la barra 244 ya ha pasado. En tales casos, Pine no podrá asignar un tamaño de búfer adecuado para esa función y se utilizará el tamaño de búfer predeterminado. Eche un vistazo al código a continuación. Devolverá el error mencionado anteriormente porque:

  • El valor de la variable var1 no se conoce en el momento de la compilación
  • La variable de prueba no solicita ningún dato pasado en las primeras 244 barras del gráfico.

Debido a esto, a la variable de prueba se le asigna un búfer predeterminado de 300 barras. Cuando el script solicita el valor de la barra 301 en el pasado, que está fuera del búfer de la variable, se produce un error.

//@version=4
study("max_bars_back var",overlay=true)
var1 = input(301)
test = 0.0
//max_bars_back(test, 301)
if bar_index > 244
    test := test[var1]
plot(test)

El parámetro max_bars_back y la función max_bars_back () existen para solucionar este problema. Le permiten especificar el tamaño de búfer correcto para las variables y funciones cuando el búfer predeterminado no es suficiente. Descomente la llamada a la función max_bars_back () en el código anterior. Se asignará un búfer de 301 a la variable de prueba y, como resultado, el script calculará correctamente.

A continuación se muestra un ejemplo de una llamada de función a la que se atribuye el tamaño de búfer de una barra predeterminado porque no se invoca en las primeras 244 barras. Si bien no se utiliza ninguna referencia explícita a valores pasados utilizando el operador [], la función requiere, no obstante, los últimos 20 valores para calcular. Por tanto, el script devolverá el error max_bars_back:

//@version=4
study("Requires max_bars_back")
test = 0.0
if bar_index > 1000
    test := vwma(close, 20)
plot(test)

La función max_bars_back () no se puede utilizar para asignar un tamaño de búfer específico a una función. Cuando necesite hacerlo, o cuando desee establecer el tamaño de búfer predeterminado para todas las variables y funciones en un script, agregue el parámetro max_bars_back al estudio del script o declaración de estrategia. Tenga en cuenta que el uso del parámetro aumentará el uso de recursos del script, por lo que este método solo debe usarse cuando sea necesario:

//@version=4
study("Requires max_bars_back", max_bars_back=20)
test = 0.0
if bar_index > 1000
    test := vwma(close, 20)
plot(test)

También puede resolver el problema eliminando la expresión problemática de la rama condicional, en cuyo caso no se requiere el parámetro max_bars_back:

//@version=4
study("Requires max_bars_back")
test = 0.0
vwma20 = vwma(close, 20)
if bar_index > 1000
    test := vwma20
plot(test)


Puede obtener más información sobre max_bars_back y el error relacionado en nuestro Manual de usuario.

Inicio Analizador de acciones Analizador de Forex Crypto Screener Calendario económico Cómo funciona Funcionalidades del gráfico Precios Recomendar a un amigo Normas Centro de ayuda Soluciones broker y sitio web Widgets Soluciones gráficas Biblioteca de gráficos ligeros Blog y Noticias Twitter
Perfil Opciones de configuración del perfil Cuenta y facturación Amigos referidos Monedas Mis solicitudes de asistencia Centro de ayuda Ideas publicadas Seguidores Siguiendo Mensajes privados Chat Cerrar sesión