tradingview:logica_programacao:funcoes_e_anotacoes

Funções & Anotações

Diferenças e Similaridades

  • Ambas são blocos de código para execução de tarefas pré-definidas.
  • Sintaticamente similares:
    • Nós chamamos com um nome e uma lista de argumentos entre parênteses.
      • funcao(argumentos)
  • Porém servem propósitos diferentes
    • Funções: geralmente usadas para calcular valores e retornar resultados;
    • Anotações: são mais utilizadas pelos seus efeitos colaterais e apenas ocasionalmente retornam resultados.
      • Neste contexto efeito colateral quer dizer uma tarefa sendo realizada mas que não necessariamente retornará um resultado.
  • Argumentos podem ser declarados de duas formas:
  • Com palavras chave
  • study(title='Example', shorttitle='Ex', overlay=true)
  • Por Posição
  • study('Example', 'Ex', true)

Funções

  • Funções podem ou não ser nativas (usuários podem criar suas próprias funções).

Anotações

  • Anotações serão sempre nativas.
    • Atribuir um nome ou outras propriedades globais a um script usando study() ou strategy()
    • Determinar os parâmetros de um script usando input()
    • Determinar as saídas ou resultados de um script usando plot()
  • Algumas anotações como plot e hline também retornam um resultado que pode ser usado ou não.
    • Porém este resultado só pode ser utilizado em outras anotações e não pode fazer parte dos cálculos do script.
    • Anotação fill

Declarando Funções

Função de linha única

  • Funções simples podem normalmente ser escritas em apenas uma linha
    • <identificador> (<lista de argumentos>) ⇒ <expressão>
    • f(x, y) => x + y
  • Após a função f ser declarada, pode ser usada de diversas maneiras:
a = f(open, close)
b = f(2, 2)
c = f(open, 2)
  • O tipo do valor retornado pela função f é determinado automaticamente e depende do tipo de argumentos usados na função.
    • A variável a será uma series, porque os argumentos são também series.
    • A variável b será uma integer, porque os argumentos são também integers.
    • A variável c será uma series, porque a soma de uma series e uma literal integer produz uma integer.

Função de múltiplas linhas

  • Funções complexas podem ser escritas com mais de uma linha
<identificador> (<lista de argumentos>) =>
<declaração de variável>
...
<declaração de variável ou expressão>
  • O corpo consiste de várias instruções
  • Cada declaração deve ser precedida por 1 tabulação - este recúo indica que ela faz parte do corpo da função e não do escopo global do script.
  • Uma expressão ou uma variável declarada deve ser a última instrução do corpo da função.
    • O resultado desta expressão (ou variável) será o resultado da chamada da função. Por exemplo:
geom_average(x, y) =>
    a = x*x
    b = y*y
    sqrt(a + b)

Escopo nos Scripts

  • Cada função tem seu próprio escopo local.
    • Todas as variáveis ​​declaradas dentro da função, bem como os argumentos da função, pertencem ao escopo daquela função, o que significa que é impossível referenciá-las de fora - por exemplo, do escopo global ou do escopo local de outra função.
    • Por outro lado, uma vez que é possível referir-se a qualquer variável ou função declarada no escopo global a partir do escopo de uma função, pode-se dizer que o escopo local está embutido no escopo global.
  • Funções que retornam vários resultados
  • Na maioria dos casos, uma função retorna apenas um resultado, mas é possível retornar uma lista de resultados (um resultado semelhante a uma tupla ):
fun(x, y) =>
    a = x+y
    b = x-y
    [a, b]
[res0, res1] = fun(open, close)
plot(res0)
plot(res1)


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