Tabela de conteúdos

Fundamentos

Versões

Linguagem

Documentação

Comentários

// @version=4
study("Teste")
// Está uma linha de comentário
a = close // Este também é um comentário
plot(a)

Quebra de Linha

a = open + high + low + close
 
a = open +
	high +
		low +
			close

Identificadores

myVar
_myVar
my123Var
MAX_LEN
max_len

Tipos de Dados

int Inteiro Números inteiros são descritos sem notação decimal

Exemplos:
1
750
100
float Decimal Números ponto flutuante possuem um delimitador ( . )
Também podem conter o símbolo e ou E - que significa multiplicar por 10. Elevado a potência x, onde x é o número após e.

Exemplos:
3.1415
6.02e23
1.6e-19
3.0
bool Booleano Apenas dois literals representam valores bool
true = Verdadeiro
false = Falso
color Cor
Hexadecimal
Cores tem o seguinte formato
#6 a 8 dígitos hexadecimal, representando valores RGB ou RGBA
R = Red = Vermelho
G = Green = Verde
B = Blue = Azul
[0-255 em decimal] <conversor> [00-FF em Hexa]

Exemplos:
#000000 = preto
#FF0000 = vermelho
#00FF00 = verde
#0000FF = azul
#FFFFFF = branco
#808080 = cinza
#3FF7A0 = uma cor aleatória
#FF000080 = 50% transparente vermelho
#FF0000FF = mesmo que #FF0000, vermelho opaco
#FF000000 = completamente transparente

Notação hexadecimal não são sensíveis a maiúsculas ou minúsculas.

Variáveis nativas para chamar uma cor:
color.silver, color.gray, color.white, color.maroon, color.red, color.purple, color.fuchsia, color.green, color.lime, color.olive, color.yellow, color.navy, color.blue, color.teal, color.aqua, color.orange

Transparência: É possível alterar a transparência da cor usando uma função nativa color.new.
Exemplo: color.new(color.blue, 80)
string Texto As literals de string (texto) podem ser referenciadas com aspas simples ou aspas dupla

Exemplos:
“Este é um texto dentro de aspas dupla”
'Este é um texto dentro de aspas simples'

Exemplo de mistura de aspas:
“It's an example”
'The “Star” indicator'

Se você usar o mesmo delimitador, é necessário usar \ antes do delimitador
'It\'s an example'
“The \”Star\“ indicator”
line / label Linha Objetos de desenho introduzidos no Pine v4.
Estes objetos são criados através das funções

line.new → Linha
label.new - > Label

Ambas do formato Série
plot / hline Plotagem Anotações que retornam valores que representam objetos criados no gráfico.

A função plot - Retorna um objeto do tipo plot, representado como uma linha ou diagrama no gráfico.

A função hline - Retorna um objeto do tipo hline, representado como uma linha horizontal.

Estes objetos podem ser passados para a função fill para colorir a área entre eles.
Literal Literal Notação para representar um valor fixo (literalmente):
literal float ( 3.14, 6.02E-23, 3e8 )
literal int ( 42 )
literal bool ( true, false )
literal string ( “Um texto literal” )
literal color ( #FF55C6 )

Nota: identificadores nativos como open, high, low, close, volume, time hl2, hlc3, ohlc4 - não são literals. Estes são dados do formato Série.
Const Constante São pré determinados ou podem ser calculados durante compilação.
Não podem ser alterados durante execução.
c1 = 0
c2 = c1 + 1
c3 = c1 + 1
if open > close
	c3 := 0 

c1 : é uma const int porque é inicializada com uma expressão literal int.
c2 : é uma const int porque é inicializada com uma expressão aritmética do tipo const int.
c3 : é uma series int porque é alterada durante execução.

Input Parâmetro Não é alterado durante a execução e não são conhecidos durante compilação e é originado por uma função input
p = input(10, title="Periodo")

p : é uma variável do tipo input integer.

Simple Simples Não é alterado durante execução do script.
Não são conhecidos durante compilação.

São valores que vêm das informações do ativo do gráfico principal.

Por exemplo, syminfo.mintick é uma variável nativa simple float.

Nota : A palavra simple é normalmente omitida quando se referindo a este formato, por tanto nos referimos apenas como float.
Series Série Podem ser alterados durante execução.
Armazenam uma sequência histórica de valores associados as barras do ativo no gráfico principal.

Dados são acessados usando o operador [ ]
Nota : O dado associado a última barra está disponível para leitura / escrita.

Exemplos de séries nativas são as variáveis: open, high, low, close, volume e time.
O tamanho da série é igual a quantidade de barras disponíveis no ativo atual e na sua respectiva resolução (timeframe).

Séries devem conter valores numéricos ou um valor especial : na - significando que não há um valor disponível.

Qualquer expressão que contém uma série também será tratada como série, exemplo:
a = open + close // Adição de duas séries
b = high / 2 // Divisão de uma série por um int literal constant
c = close[1] // Se refere ao close anterior 

IMPORTANTE: O par “formato tipo” é normalmente referenciado como o tipo apenas.

Outros

myVar = na // Erro
float myVar = na // Correto
myVar = float(na) // Correto
myClose = na(myVar) ? 0 : close
calcSumAndMul(a, b) =>
    sum = a + b
    mul = a * b
    [sum, mul]
[s, m] = calcSumAndMul(high, low)

Casting de Tipos

s = sma(close, len) // Erro
s = sma(close, int(len)) // Correto