Sintaxe
Variáveis, tipos, operadores e controle de fluxo do NeuroScript.
NeuroScript usa indentação para delimitar blocos (como Python, sem : nem
{}). Todo script começa com a linha de versão e a declaração do indicador —
veja Primeiros passos para a anatomia completa.
Comentários
// comentário de linha — tudo após // é ignorado
length = input.int(14, "Período") // também funciona no fim da linhaVariáveis
Declare com = e reatribua com :=:
media = ta.sma(close, 20) // declara
media := ta.sma(close, 50) // reatribui (a variável já existe)O tipo é inferido pelo valor, mas você pode declará-lo explicitamente:
int periodo = 14
float fator = 2.0
ativo = true // bool inferido
texto = "RSI" // string inferidaTipos da linguagem: int, float, bool, string, color. Valores de mercado
como close são séries (series<float>) — uma sequência com um valor por
candle (veja Dados de mercado).
var e varip — estado entre candles
Por padrão a variável é recalculada a cada candle. Use var para inicializar
uma vez e manter o valor entre os candles:
var contador = 0
contador := contador + 1 // acumula ao longo do gráficovarip é parecido, mas o valor persiste também entre ticks dentro do mesmo
candle (intrabar).
Operadores
| Categoria | Operadores |
|---|---|
| Aritméticos | + - * / % |
| Comparação | == != < > <= >= |
| Lógicos | and or not |
| Ternário | condição ? valorSeVerdadeiro : valorSeFalso |
| Histórico | série[n] — valor de n candles atrás |
variacao = close - close[1] // histórico: candle anterior
alta = close > open and volume > 0 // lógicos
cor = close >= open ? color.green : color.red // ternárioControle de fluxo
if / else
Blocos por indentação — sem : (Python) e sem {} (C):
tendencia = 0
if close > open
tendencia := 1
else
tendencia := -1for
Laço numérico com to (passo opcional com by, ex.: for i = 0 to 100 by 10):
soma = 0.0
for i = 0 to 9
soma := soma + close[i] // soma dos últimos 10 fechamentosPara percorrer um array, use for ... in:
valores = array.from(1, 2, 3)
total = 0
for v in valores
total := total + vwhile
i = 0
while i < 10
i := i + 1switch
Escolhe um valor entre vários casos (=>), com um caso padrão no fim:
sinal = switch
close > open => 1
close < open => -1
=> 0Regras do indicador
- A primeira linha do script deve ser
//@version=6. plot()dentro de umifsó desenha nos candles em que o ramo executa (nos demais o valor ficana). Para sinais, mantenha oplot()no nível superior comcondição ? valor : na,style=plot.style_circles(oustyle_triangleup/style_triangledown) e cor condicional, ou useplotshape(condição, style=shape.triangleup, location=location.belowbar)para um marcador ancorado no candle.plotchar()eplotarrow()não desenham nada no gráfico.offset=emplot()/plotshape()desloca o desenho em barras (positivo para a frente, negativo para trás); a projeção além do último candle não é desenhada.linestyle=plot.linestyle_dashed|dottedtraceja a linha.- NeuroScript não tem
returnno nível superior.