tradingview:logica_programacao:funcoes_e_anotacoes
Tabela de conteúdos
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