Ferramentas do usuário

Ferramentas do site


tradingview:depuracao:introducao

Introdução

  • A integração entre a ferramenta gráfica e o Pine permite depurar o script de inúmeras maneiras.
  • Uma vez que você conheça as possibilidades e as técnicas mais apropriadas para cada ocasião - ficará fácil identificar problemas no seu script.
  • Este capítulo irá demonstrar alguns métodos.
  • IMPORTANTE: Para entender depuração é fundamental entender o modelo de execução do Pine - para entender como o código deveria estar se comportando.

Plotagem de Valores

  • A forma mais simples de depurar um script para confirmar valores númericos é através de uma plotagem - mesmo que essa não seja o objetivo do script.
  • Existem 4 formas de visualizar na interface gráfica um valor sendo plotado:
  1. Próximo ao título (nome) do script.
    1. Configurações > Status da linha > Valores do indicadores
  2. No painel onde o script está sendo plotado.
    1. Nova Janela.
    2. Sobreposto.
  3. Na escala de preços (eixo y) - rótulo.
    1. Configurações > Escalas > Mostrar último valor do indicador
    2. É o valor mais recente.
  4. Na aba “Janela de Dados” (Data Window) - Quarto ícone.

  • Notas:
    • Mover a cruz no painel do gráfico altera o valor sendo mostrado.
    • Alterar o título da plot() - altera o título na “Janela de Dados”.
    • Precisão do valor sendo mostrado é configurado no script ou herdado da configuração do gráfico.

Preservando a Escala

  • Plotando múltiplos valores para fins de depuração nem sempre é possível pois podem pertencer a escalas diferentes. O que torna a plotagem ilegível e a depuração difícil.
  • Vamos analisar um exemplo para propormos uma alternativa.
  • Precisamos plotar um valor de preço e ao mesmo tempo confirmar a indexação de uma barra.
//@version=4
study("Plotar RSI e 'bar_index'")
r = rsi(close, 20)
plot(r, "RSI", color.black)
plot(bar_index, "Bar Index")
  • Rodando esse script notamos que leitura da plotagem é difícil pois os valores pertencem a escalas diferentes.
  • Para preservarmos a escala do RSI e ainda assim permitir a inspeção do valor de bar_index - podemos fazer uma alteração de plot() para plotchar()
//@version=4
study("Plotar RSI e 'bar_index'")
r = rsi(close, 20)
plot(r, "RSI", color.black)
plotchar(bar_index, "Bar index", "", location.top)
  • Porque o valor de bar_index não está mais sendo plotado no painel do script - a escala volta a comportar o valor do RSI.
  • Ainda é possível inspecionar o valor de bar_index na “Janela de Dados” e no título do script.
  • Note que ao chamarmos plotchar() não especificamos um texto - o argumento é uma string vazia ( “ ” ). E especificamos location para location.top assim não colocamos nenhum símbolo.

Mostrando strings

  • Podemos usar rótulos para “plotar” texto.
  • Nota: Valores “plotados” em rótulos não são apresentados na “Janela de Dados” e nenhum outro lugar a não ser o próprio painel do script.
//@version=4
study("Rótulo Simples", "", true)
label.new(bar_index, high, syminfo.ticker)
  • Por padrão - apenas rótulos das últimas 50 barras são desenhados.
    • É possível aumentar esse valor para no máximo 500 usando o argumento max_labels_count na anotação study() ou strategy()
study("Rótulo Simples", "", true, max_labels_count = 500)
  • Alternativa - mostrando o rótulo apenas na última barra é um método eficaz e comum de confirmar um texto para fins de depuração - mesmo que este não seja o objetivo do script.
//@version=4
study("f_print()", "", true)
f_print(_text) =>
    // Criar rótulo na primeira barra.
    var _label = label.new(bar_index, na, _text, xloc.bar_index, yloc.price, color(na), label.style_none, color.gray, size.large, text.align_left)
    // Atualizar os valores na barras seguintes
    label.set_xy(_label, bar_index, highest(10)[1])
    label.set_text(_label, _text)
 
f_print("Multiplicador = " + tostring(timeframe.multiplier) + "\nPeriod = " + timeframe.period + "\nHigh = " + tostring(high))
f_print("Hello world!\n\n\n\n")


tradingview/depuracao/introducao.txt · Última modificação: 05/04/2023 08:25 por 127.0.0.1