Funções
Funções definidas pelo usuário e built-in
Neste capítulo
Funções do Usuário
Definindo Funções
Funções permitem reutilizar código e tornam o script mais organizado:
nomeFuncao(param1, param2) =>
// corpo da função
resultado // última expressão é o retorno
// Com tipo de retorno explícito
nomeFuncao(param1, param2) =>
resultadoFunções com Múltiplos Retornos
Pine Script permite retornar múltiplos valores usando tuplas:
minhaFuncao() =>
valor1 = calcular1()
valor2 = calcular2()
[valor1, valor2]
[a, b] = minhaFuncao()Função Customizada
Criando uma função de canal de preço
1//@version=6
2indicator("Canal de Preço Customizado", overlay=true)
3
4// Função que retorna canal superior e inferior
5priceChannel(src, length) =>
6 upper = ta.highest(src, length)
7 lower = ta.lowest(src, length)
8 middle = (upper + lower) / 2
9 [upper, middle, lower]
10
11// Parâmetros
12len = input.int(20, "Período do Canal")
13
14// Usando a função
15[channelHigh, channelMid, channelLow] = priceChannel(close, len)
16
17// Plotando
18p1 = plot(channelHigh, "Superior", color.green)
19plot(channelMid, "Médio", color.gray, style=plot.style_linebr)
20p2 = plot(channelLow, "Inferior", color.red)
21
22// Preenchimento entre linhas
23fill(p1, p2, color.new(color.blue, 90))Funções Built-in Principais
Funções de Média
| Função | Descrição |
|---|---|
`ta.sma()` | Média Móvel Simples |
`ta.ema()` | Média Móvel Exponencial |
`ta.wma()` | Média Móvel Ponderada |
`ta.vwma()` | Média Ponderada por Volume |
Funções de Volatilidade
| Função | Descrição |
|---|---|
`ta.atr()` | Average True Range |
`ta.stdev()` | Desvio Padrão |
`ta.bb()` | Bandas de Bollinger |
Funções de Momentum
| Função | Descrição |
|---|---|
`ta.rsi()` | Índice de Força Relativa |
`ta.macd()` | MACD |
`ta.stoch()` | Estocástico |
`ta.cci()` | Commodity Channel Index |
Funções de Cruzamento
| Função | Descrição |
|---|---|
`ta.crossover()` | Cruza para cima |
`ta.crossunder()` | Cruza para baixo |
`ta.cross()` | Qualquer cruzamento |
Indicador com Funções Built-in
RSI com média móvel e sinais
1//@version=6
2indicator("RSI Avançado", overlay=false)
3
4// Parâmetros
5rsiLength = input.int(14, "Período RSI")
6maLength = input.int(9, "Período Média do RSI")
7overbought = input.int(70, "Sobrecomprado")
8oversold = input.int(30, "Sobrevendido")
9
10// Cálculos
11rsiValue = ta.rsi(close, rsiLength)
12rsiMA = ta.sma(rsiValue, maLength)
13
14// Sinais
15crossUp = ta.crossover(rsiValue, rsiMA) and rsiValue < oversold
16crossDown = ta.crossunder(rsiValue, rsiMA) and rsiValue > overbought
17
18// Plots
19plot(rsiValue, "RSI", color.blue, 2)
20plot(rsiMA, "RSI MA", color.orange)
21hline(overbought, "Sobrecomprado", color.red)
22hline(oversold, "Sobrevendido", color.green)
23hline(50, "Linha Central", color.gray)
24
25// Sinais visuais
26plotshape(crossUp, "Compra", shape.triangleup, location.bottom, color.green, size=size.small)
27plotshape(crossDown, "Venda", shape.triangledown, location.top, color.red, size=size.small)