Linguagem
Explore os blocos de construção e recursos do NeuroScript®
Linguagem NeuroScript®
Estrutura Básica de um Script
Todo script NeuroScript segue esta estrutura:
// 1. Declaração do indicador
indicator("Nome do Indicador", overlay=true)
// 2. Parâmetros de entrada (opcional)
length = input.int(14, "Período")
// 3. Cálculos
value = ta.sma(close, length)
// 4. Visualização
plot(value, "SMA")
// 5. Return (opcional)
return valueDeclaração de Indicador
A função indicator() é obrigatória e define as propriedades do script:
indicator(title, shorttitle="", overlay=true)Parâmetros:
title(string): Nome completo do indicadorshorttitle(string): Nome abreviado (opcional)overlay(bool): Se true, plota sobre o gráfico de preços. Se false, cria painel separado
Exemplos:
// Indicador sobre o gráfico
indicator("SMA 20", overlay=true)
// Indicador em painel separado
indicator("RSI", shorttitle="RSI", overlay=false)Variáveis
Declaração
// Variáveis simples
length = 20
multiplier = 2.0
showSignals = true
label = "SMA"
// Variáveis calculadas
sma = ta.sma(close, length)
upper = sma + multiplier * ta.stdev(close, length)var e const
Use var para variáveis que persistem entre barras e const para valores constantes:
// var persiste o valor entre barras (não reseta a cada candle)
var counter = 0
counter += 1 // incrementa a cada barra
// const não pode ser reatribuído
const period = 20Assignment Operators
x = 10
x += 5 // x = 15
x -= 3 // x = 12
x *= 2 // x = 24
x /= 4 // x = 6Built-in Variables
NeuroScript fornece variáveis automáticas com dados do candle:
| Variável | Tipo | Descrição |
|---|---|---|
open | series | Preço de abertura |
high | series | Preço máximo |
low | series | Preço mínimo |
close | series | Preço de fechamento |
volume | series | Volume negociado |
bar_index | int | Índice da barra atual (0, 1, 2...) |
time | int | Timestamp da barra (Unix) |
Exemplo:
indicator("OHLC Info", overlay=true)
// Usar variáveis built-in
candleSize = high - low
bodySize = close - open
isGreen = close > open
plot(candleSize, "Tamanho do Candle")Acesso Histórico (Séries)
Acesse valores de barras anteriores com [n]:
// close[0] = preço atual (mesmo que close)
// close[1] = preço da barra anterior
// close[2] = preço de 2 barras atrás
indicator("Variação", overlay=false)
variacao = close - close[1]
plot(variacao, "Variação", color=variacao > 0 ? color.green : color.red)Funciona com qualquer variável ou série:
sma = ta.sma(close, 20)
smaAnterior = sma[1] // SMA da barra anterior
mudou = sma > sma[1] // SMA subindo?Tipos de Dados
Tipos Básicos
int - Números inteiros
length = 14
maxBars = 500float - Números decimais
multiplier = 2.5
threshold = 0.618bool - Booleanos
showLabels = true
useEMA = falsestring - Textos
title = "Meu Indicador"
label = "SMA"color - Cores
lineColor = color.blue
fillColor = color.red
customColor = #FF5733Tipos Series
Valores que mudam a cada barra:
sma = ta.sma(close, 20) // series<float>
rsi = ta.rsi(close, 14) // series<float>Operadores
Aritméticos
soma = 10 + 5 // 15
sub = 10 - 5 // 5
mult = 10 * 5 // 50
div = 10 / 5 // 2
mod = 10 % 3 // 1Comparação
igual = 10 == 10 // true
diferente = 10 != 5 // true
maior = 10 > 5 // true
menor = 5 < 10 // true
maiorIgual = 10 >= 10 // true
menorIgual = 5 <= 10 // trueLógicos
e = true and false // false
ou = true or false // true
nao = not true // falseOperador Ternário
// Sintaxe: condição ? valorSeVerdadeiro : valorSeFalso
cor = close > open ? color.green : color.red
tamanho = volume > 1000 ? 3 : 1Exemplo prático:
indicator("Cor Dinâmica", overlay=true)
sma20 = ta.sma(close, 20)
// Cor baseada em tendência
trendColor = close > sma20 ? color.green : color.red
plot(sma20, "SMA", color=trendColor, linewidth=2)Condicionais (if/else)
indicator("Sinais", overlay=true)
sma = ta.sma(close, 20)
rsi = ta.rsi(close, 14)
if close > sma and rsi < 30
plot(low, "Compra", color=color.green)
else if close < sma and rsi > 70
plot(high, "Venda", color=color.red)
else
plot(close, "Neutro", color=color.gray)Loops
for
indicator("Soma Customizada", overlay=false)
// Soma os últimos 10 closes
var soma = 0.0
for i = 0 to 9
soma += close[i]
media = soma / 10
plot(media, "Média Custom")while
indicator("Contagem", overlay=false)
var count = 0
var i = 0
while i < 20 and close[i] > ta.sma(close, 50)
count += 1
i += 1
plot(count, "Barras acima da SMA")Arrays
Arrays permitem armazenar coleções de valores:
indicator("Array Example", overlay=false)
// Criar array de floats com 5 elementos
var prices = array.new<float>(5, 0.0)
// Adicionar valores
array.set(prices, 0, close)
array.push(prices, high)
// Ler valores
firstPrice = array.get(prices, 0)
maxPrice = array.max(prices)
minPrice = array.min(prices)
total = array.size(prices)
plot(maxPrice, "Máximo")
plot(minPrice, "Mínimo")Funções de array disponíveis:
| Função | Descrição |
|---|---|
array.new<float>(size, val) | Cria array de floats |
array.new<int>(size, val) | Cria array de inteiros |
array.new<bool>(size, val) | Cria array de booleanos |
array.set(arr, index, val) | Define valor no índice |
array.get(arr, index) | Obtém valor do índice |
array.push(arr, val) | Adiciona ao final |
array.pop(arr) | Remove do final |
array.size(arr) | Retorna tamanho |
array.max(arr) | Retorna maior valor |
array.min(arr) | Retorna menor valor |
Comentários
// Comentário de linha única
// Comentários podem explicar código
length = 20 // Período da média
/* Comentário de
múltiplas linhas */Expressões e Cálculos
Expressões Simples
// Aritmética básica
resultado = (high + low) / 2
// Usando funções
media = ta.sma(close, 20)
desvio = ta.stdev(close, 20)
// Combinando
upperBand = media + 2 * desvioExpressões Condicionais
// Detectar cruzamentos
crossUp = close > sma and close[1] <= sma[1]
crossDown = close < sma and close[1] >= sma[1]
// Ou usar funções built-in
crossUp = ta.crossover(close, sma)
crossDown = ta.crossunder(close, sma)
// Múltiplas condições
compra = close > sma20 and rsi < 70 and volume > ta.sma(volume, 20)Limitações Atuais
As seguintes features do Pine Script v6 ainda não são suportadas:
strategy.entry()/strategy.close()— execução real de ordens (backtesting)request.security()— acesso a dados de outro timeframealert()— notificações em tempo real- Strings dinâmicas (concatenação)
plotshape()— renderização visual (stub implementado)
- Conceitos - Aprenda funções disponíveis por tema
- Guia Rápido - Seu primeiro indicador
- Exemplos - Scripts prontos para usar