Vejo o erro 'Pine não pode determinar o comprimento de referência de uma série. Tente usar o max_bars_back'

Quando um script Pine é calculado, ele cria um buffer histórico de um determinado tamanho para cada variável ou função no código. Esse buffer contém informações sobre valores anteriores da variável/função e é usado quando o código se refere aos valores anteriores usando o operador de referência a histórico []. O tamanho do buffer especifica até que ponto no histórico esse valor pode ser solicitado.

O Pine determina automaticamente o tamanho do buffer necessário para todas as variáveis e funções, analisando referências anteriores feitas ao calcular o script nas primeiras 244 barras. Se nenhuma referência anterior for detectada, um tamanho de buffer padrão será atribuído à variável ou função. Para variáveis, o tamanho padrão do buffer é 300 barras, para funções é uma barra.

Um problema geralmente surge nas ramificações de instruções condicionais (if, iff ou ?) Quando referências anteriores a uma variável ou função dentro da instrução condicional são executadas pela primeira vez quando a 244ª barra já passou. Nesses casos, o Pine não poderá atribuir um tamanho de buffer adequado para essa função e o tamanho padrão do buffer será usado. Dê uma olhada no código abaixo. Ele retornará o erro mencionado acima porque:

  • O valor da variável var1 não é conhecido no momento da compilação
  • A variável de teste não solicita nenhum dado passado nas primeiras 244 barras do gráfico

Devido a isso, a variável de teste recebe um buffer padrão de 300 barras. Quando o script solicita o valor da 301ª barra no passado, que está fora do buffer da variável, ocorre um erro.

//@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)

O parâmetro max_bars_back e a função max_bars_back() existem para solucionar esse problema. Eles permitem que você especifique o tamanho correto do buffer para variáveis e funções quando o buffer padrão não é suficiente. Remova o comentário da chamada de função max_bars_back() no código acima. Um buffer de 301 será atribuído à variável de teste e, como resultado, o script será calculado corretamente.

Aqui está um exemplo de uma chamada de função à qual o tamanho padrão do buffer de uma barra é atribuído porque não é chamado nas primeiras 244 barras. Embora nenhuma referência explícita aos valores passados usando o operador [] seja usada, a função requer os 20 valores passados para calcular. O script retornará, assim, o erro max_bars_back:

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

A função max_bars_back() não pode ser usada para atribuir um tamanho de buffer específico a uma função. Quando você precisar fazer isso ou quando desejar definir o tamanho padrão do buffer para todas as variáveis e funções em um script, adicione o parâmetro max_bars_back à declaração de estudo ou declaração de estratégia do script. Observe que o uso do parâmetro aumentará o uso de recursos do script; portanto, esse método deve ser usado apenas quando necessário:

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

Você também pode resolver o problema removendo a expressão problemática da ramificação condicional. Nesse caso, o parâmetro max_bars_back não é necessário:

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

Você pode aprender mais sobre max_bars_back e o erro relacionado em nosso Manual do Usuário.

Início Rastreador de Fundamentos Rastreador Forex Rastreador de Criptomoedas Calendário Econômico Como Funciona Recursos gráficos Preços Indique um Amigo Regras da Casa Central de Ajuda Soluções para Sites & Corretoras Widgets Soluções em Gráficos Biblioteca de Gráficos Lightweight Blog & Notícias Twitter
Perfil Configurações de perfil Conta e Cobrança Amigos indicados Moedas Meus Tíquetes de Suporte Central de Ajuda Ideias Publicadas Seguidores Seguindo Mensagens Privadas Conversa Deslogar