Profit / Nelogica — Automação com NTSL
Guia completo para automação de estratégias na plataforma Profit da Nelogica usando a linguagem NTSL: fundamentos, robôs, indicadores, backtesting e otimização.
Profit / Nelogica — Automação com NTSL
O Profit é a principal plataforma de trading profissional do Brasil, desenvolvida pela Nelogica. Este guia cobre desde os fundamentos da linguagem NTSL até a criação de robôs de execução, indicadores personalizados e backtesting.
Navegação por Tópico
| Tópico | Descrição |
|---|---|
| Fundamentos da Linguagem | Tipos, séries, arrays, constantes, funções e estrutura do código |
| Controle de Fluxo | if/then/else, loops, operadores e fluxo candle a candle |
| Multi-Ativo com Asset() | Correlacionar ativos externos, filtros com outros mercados |
| Funções de Execução | Ordens a mercado, limite, stop, gestão de posição e resultados |
| Automação e Execução ao Vivo | Módulo de automação, modos, horários, risco e ConsoleLog |
| Backtesting e Otimização | OHLC vs Tick a Tick, relatório de performance, overfitting |
| Indicadores Técnicos | Médias, osciladores, volatilidade, tendência e volume |
| Block Builder | Criar estratégias visualmente sem escrever código |
Versões do Profit
| Versão | Automação | Backtesting | Otimização | Destaques |
|---|---|---|---|---|
| Profit Chart | Editor de Estratégias (indicadores e coloração) | Não | Não | Gráficos e análise técnica |
| Profit Pro | Módulo de Automação completo | OHLC | Não | Robôs ao vivo (módulo pago) |
| Profit Ultra | Módulo de Automação completo | Tick-a-tick | Até 100.000 combinações | Market Replay, Trade Plan |
Para automação completa com execução ao vivo, é necessário o Profit Pro ou Ultra com o módulo de automação ativado.
NTSL — Nelogica Trading System Language
NTSL é a linguagem proprietária do Profit, baseada em Pascal e inspirada em EasyLanguage (TradeStation). Suporta palavras-chave em português e inglês.
Tipos de dados
| Português | Inglês | Descrição | Exemplo |
|---|---|---|---|
Real | Float | Números decimais | 3.14 |
Inteiro | Integer | Números inteiros | 42 |
Booleano | Boolean | Verdadeiro/Falso | True, False |
String | String | Texto | "PETR4" |
Estrutura básica de um código NTSL
Todo código NTSL segue três seções:
// 1. PARÂMETROS (inputs configuráveis pelo usuário)
Parametro
Periodo(21);
Desvio(2.0);
// 2. DECLARAÇÃO DE VARIÁVEIS
Var
fMedia1 : Real;
fMedia2 : Real;
iSinal : Inteiro;
// 3. CORPO DO CÓDIGO
Inicio
fMedia1 := Media(9, Fechamento);
fMedia2 := Media(21, Fechamento);
Se (fMedia1 > fMedia2) entao
Plot(fMedia1);
Fim.Séries de preço (OHLCV)
| Português | Inglês | Descrição |
|---|---|---|
Abertura | Open | Preço de abertura |
Fechamento | Close | Preço de fechamento |
Maxima | High | Máxima do período |
Minima | Low | Mínima do período |
Volume | Volume | Volume negociado |
Para acessar valores anteriores, use indexação: Fechamento[1] = fechamento do candle anterior, Fechamento[2] = dois candles atrás.
Operadores
- Matemáticos:
+,-,*,/,Mod() - Comparação:
>,<,>=,<=,=,<> - Lógicos:
E(AND),OU(OR)
Estruturas de controle
// Condicional
Se (condicao) entao
Inicio
// código
Fim
Senao
Inicio
// código
Fim;
// Loop For
Para i := 1 ate 10 faca
Inicio
// código
Fim;
// Loop While
Enquanto (condicao) faca
Inicio
// código
Fim;Funções personalizadas
Funcao calcAlvo(max : real; min : real) : real;
Inicio
calcAlvo := max - min;
Fim;Tipos de estratégia no Profit
1. Indicadores
Plotam linhas, histogramas e sinais no gráfico. Usam as funções Plot, Plot2 até Plot99.
Parametro
Periodo(9);
Var
fMedia : Real;
Inicio
fMedia := Media(Periodo, Fechamento);
Plot(fMedia);
Fim.Funções de plotagem úteis:
Plot(valor)— plota ponto no gráficoNoPlot(numero)— omite plotagem de um pontoSetPlotColor(plotNum, cor)— cor dinâmicaSetPlotWidth(plotNum, largura)— espessura da linhaPaintBar(cor)— colore o candle inteiro
Exemplo: indicador com coloração dinâmica
Var
fHiLoInd : Real;
fHiLoTend : Real;
Inicio
fHiLoInd := HiloActivator(3)|0|;
fHiLoTend := HiloActivator(3)|1|;
Plot(fHiLoInd);
Se (fHiLoTend = 1) entao
SetPlotColor(1, clGreen)
Senao
SetPlotColor(1, clRed);
Fim.2. Coloração
Colorem candles condicionalmente para análise visual rápida.
Se (Fechamento > Media(20, Fechamento)) entao
PaintBar(clVerde)
Senao
PaintBar(clVermelho);3. Seleção / Screening
Filtram ativos do mercado usando a função Select:
// Selecionar ativos com RSI sobrevendido
Se (RSI(10) < 30) entao
Select;4. Alarmes
Disparam alertas quando condições são atendidas.
5. Execução (Robôs)
Estratégias completas de trading automatizado com entrada, saída e gestão de risco.
Criando um robô de execução
Funções de ordem
Ordens a mercado:
BuyAtMarket— abre posição compradaSellShortAtMarket— abre posição vendidaClosePosition— fecha qualquer posição aberta
Ordens de stop e limite:
BuyStop(preco, precoOffset)— ordem de compra stopBuyLimit(preco)— ordem de compra limitadaSellShortStop(preco, precoOffset)— ordem de venda stopSellShortLimit(preco)— ordem de venda limitada
Gestão de posição:
HasPosition/IsBought/IsSold— verifica posição atualBuyPrice/SellPrice— preço de entradaPosition— quantidade da posiçãoDailyResult(incluirAberta)— P&L do diaMinPriceIncrement— tick mínimo do instrumento
Exemplo completo: robô de cruzamento de médias
Var
condicao_compra, condicao_venda : booleano;
status : inteiro;
stop_loss, stop_gain : real;
Inicio
// Determinar tendência
Se (Fechamento > Media(20, Maxima)) entao
Inicio
Status := 1;
PaintBar(clVerde);
Fim
Senao
Inicio
Se (Fechamento < Media(20, Minima)) entao
Inicio
Status := -1;
PaintBar(clVermelho);
Fim
Senao
Inicio
Status := 0;
PaintBar(clBranco);
Fim;
Fim;
// Gestão de ordens
Se (IsSold) entao
Inicio
stop_loss := SellPrice + 200;
stop_gain := SellPrice - 200;
BuyLimit(stop_gain);
BuyStop(stop_loss, stop_loss);
Fim
Senao
Inicio
Se (IsBought) entao
Inicio
stop_loss := BuyPrice - 200;
stop_gain := BuyPrice + 200;
SellShortLimit(stop_gain);
SellShortStop(stop_loss, stop_loss);
Fim
Senao
Inicio
condicao_compra := (status[1] = 0) E (status = 1);
condicao_venda := (status[1] = 0) E (status = -1);
Se (condicao_compra) entao
BuyAtMarket;
Se (condicao_venda) entao
SellShortAtMarket;
Fim;
Fim;
// Encerramento no fim do pregão
Se (Time >= 2000) entao
ClosePosition;
Fim.Padrões comuns de detecção de cruzamento
// Cruzamento simples entre duas séries
Se (fMedia1 > fMedia2) E (fMedia1[1] <= fMedia2[1]) entao
iCruzamento := 1; // Cruzamento para cima
Se (fMedia1 < fMedia2) E (fMedia1[1] >= fMedia2[1]) entao
iCruzamento := -1; // Cruzamento para baixoBacktesting
O Profit oferece dois modos de backtest:
| Modo | Disponibilidade | Precisão | Velocidade |
|---|---|---|---|
| OHLC | Pro e Ultra | Moderada | Rápido |
| Tick-a-tick | Ultra apenas | Alta | Mais lento |
O backtest tick-a-tick reproduz fielmente o fluxo real de preços, essencial para estratégias com stops apertados.
Após o backtest, o Relatório de Performance apresenta:
- Total de trades, taxa de acerto
- Profit factor, drawdown máximo
- Curva de equity
Otimização de parâmetros (Profit Ultra)
O Otimizador de Parâmetros testa até 100.000 combinações diferentes, classificando-as por performance histórica. Acesse pelo Editor de Estratégias após rodar um backtest.
Profit IA Code Builder
Ferramenta de IA integrada que traduz descrições em português natural para código NTSL. Ideal para traders sem experiência em programação que querem criar estratégias descrevendo a lógica em texto livre.
Loja de Estratégias
O marketplace dentro do Profit permite comprar e vender estratégias. Cresceu de 563 (janeiro 2023) para mais de 1.900 estratégias disponíveis.
Guia passo a passo para iniciantes
- Escolha o plano: Profit Pro (mínimo para automação) ou Ultra (recomendado)
- Abra o Editor de Estratégias: via menu ou barra de ferramentas
- Escolha o tipo: indicador, coloração, execução, seleção ou alarme
- Escreva o código NTSL: use a estrutura de três seções
- Compile: corrija erros de sintaxe até compilar com sucesso
- Backtest: rode em dados históricos e analise o relatório
- Otimize (Ultra): encontre as melhores combinações de parâmetros
- Simule: teste em conta simulada antes de operar ao vivo
- Ative o módulo de automação: necessário para conta real (trial de 7 dias)
- Opere ao vivo: monitore de perto, comece com lotes mínimos
Estratégias mais populares
- Cruzamento de médias móveis (a mais comum para iniciantes)
- Reversão por RSI/IFR
- Bollinger Bands (breakout e reversão)
- HiLo Activator trend following
- Cruzamento de MACD
- Estratégias baseadas em VWAP
- Scalping com stops apertados (tick-a-tick)
Fontes de aprendizado
Documentação oficial
- Documentação NTSL — compilado de funções
- Manual NTSL (PDF)
- Editor de Estratégias
- Módulo de Automação
- Como montar uma estratégia
- Estratégia de Execução
- Estratégia de Seleção
- Backtest Tick-a-Tick
- Otimização de Parâmetros
- Relatório de Performance
- Profit IA Code Builder
- Loja de Estratégias
Comunidade e cursos
- NeoTraderBot — material para iniciantes (gratuito)
- NeoTraderBot — curso de automação em NTSL (módulos gratuitos no YouTube)
- NeoTraderBot — fórum da comunidade
- NeoTraderBot — snippets de código
- ScApp Wiki — programação ProfitChart
Repositórios no GitHub
- smota/Profit — extensões e estratégias open source
- b2tradingclub/profitchart-estrategias — coleção de estratégias da comunidade
- httpsDeni/NTSL-Language — scripts para B3 e BM&F
Precisa de desenvolvimento profissional?
Se você busca desenvolvimento customizado de robôs, indicadores e estratégias automatizadas para o Profit ou qualquer outra plataforma, a RedBlock é especialista em engenharia de software para o mercado financeiro — do backtesting à execução ao vivo.
Aviso Legal: Conteúdo educativo. Não constitui recomendação de investimento. Resultados passados em backtesting não garantem resultados futuros.
Automação de Estratégias: guia completo por plataforma
Guia prático para automação de estratégias de trading no Profit (Nelogica), MetaTrader, TradingView e NinjaTrader.
NTSL — Fundamentos da Linguagem
Tipos de dados, séries de preço, variáveis, arrays, constantes, funções, procedimentos e padrões fundamentais de programação em NTSL para o Profit Nelogica.