FuturaDevelopers

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 linha

Variá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 inferida

Tipos 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áfico

varip é parecido, mas o valor persiste também entre ticks dentro do mesmo candle (intrabar).

Operadores

CategoriaOperadores
Aritméticos+ - * / %
Comparação== != < > <= >=
Lógicosand or not
Ternáriocondição ? valorSeVerdadeiro : valorSeFalso
Históricosé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ário

Controle de fluxo

if / else

Blocos por indentação — sem : (Python) e sem {} (C):

tendencia = 0
if close > open
    tendencia := 1
else
    tendencia := -1

for

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 fechamentos

Para percorrer um array, use for ... in:

valores = array.from(1, 2, 3)
total = 0
for v in valores
    total := total + v

while

i = 0
while i < 10
    i := i + 1

switch

Escolhe um valor entre vários casos (=>), com um caso padrão no fim:

sinal = switch
    close > open => 1
    close < open => -1
    => 0

Regras do indicador

  • A primeira linha do script deve ser //@version=6.
  • plot() dentro de um if só desenha nos candles em que o ramo executa (nos demais o valor fica na). Para sinais, mantenha o plot() no nível superior com condição ? valor : na, style=plot.style_circles (ou style_triangleup/style_triangledown) e cor condicional, ou use plotshape(condição, style=shape.triangleup, location=location.belowbar) para um marcador ancorado no candle. plotchar() e plotarrow() não desenham nada no gráfico.
  • offset= em plot()/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|dotted traceja a linha.
  • NeuroScript não tem return no nível superior.

Próximo

Nesta página