Kaique Mitsuo Silva Yamamoto
Mercado financeiroAutomação de EstratégiasProfit / Nelogica NTSL

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.

TópicoDescrição
Fundamentos da LinguagemTipos, séries, arrays, constantes, funções e estrutura do código
Controle de Fluxoif/then/else, loops, operadores e fluxo candle a candle
Multi-Ativo com Asset()Correlacionar ativos externos, filtros com outros mercados
Funções de ExecuçãoOrdens a mercado, limite, stop, gestão de posição e resultados
Automação e Execução ao VivoMódulo de automação, modos, horários, risco e ConsoleLog
Backtesting e OtimizaçãoOHLC vs Tick a Tick, relatório de performance, overfitting
Indicadores TécnicosMédias, osciladores, volatilidade, tendência e volume
Block BuilderCriar estratégias visualmente sem escrever código

Versões do Profit

VersãoAutomaçãoBacktestingOtimizaçãoDestaques
Profit ChartEditor de Estratégias (indicadores e coloração)NãoNãoGráficos e análise técnica
Profit ProMódulo de Automação completoOHLCNãoRobôs ao vivo (módulo pago)
Profit UltraMódulo de Automação completoTick-a-tickAté 100.000 combinaçõesMarket 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êsInglêsDescriçãoExemplo
RealFloatNúmeros decimais3.14
InteiroIntegerNúmeros inteiros42
BooleanoBooleanVerdadeiro/FalsoTrue, False
StringStringTexto"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êsInglêsDescrição
AberturaOpenPreço de abertura
FechamentoClosePreço de fechamento
MaximaHighMáxima do período
MinimaLowMínima do período
VolumeVolumeVolume 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áfico
  • NoPlot(numero) — omite plotagem de um ponto
  • SetPlotColor(plotNum, cor) — cor dinâmica
  • SetPlotWidth(plotNum, largura) — espessura da linha
  • PaintBar(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 comprada
  • SellShortAtMarket — abre posição vendida
  • ClosePosition — fecha qualquer posição aberta

Ordens de stop e limite:

  • BuyStop(preco, precoOffset) — ordem de compra stop
  • BuyLimit(preco) — ordem de compra limitada
  • SellShortStop(preco, precoOffset) — ordem de venda stop
  • SellShortLimit(preco) — ordem de venda limitada

Gestão de posição:

  • HasPosition / IsBought / IsSold — verifica posição atual
  • BuyPrice / SellPrice — preço de entrada
  • Position — quantidade da posição
  • DailyResult(incluirAberta) — P&L do dia
  • MinPriceIncrement — 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 baixo

Backtesting

O Profit oferece dois modos de backtest:

ModoDisponibilidadePrecisãoVelocidade
OHLCPro e UltraModeradaRápido
Tick-a-tickUltra apenasAltaMais 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

  1. Escolha o plano: Profit Pro (mínimo para automação) ou Ultra (recomendado)
  2. Abra o Editor de Estratégias: via menu ou barra de ferramentas
  3. Escolha o tipo: indicador, coloração, execução, seleção ou alarme
  4. Escreva o código NTSL: use a estrutura de três seções
  5. Compile: corrija erros de sintaxe até compilar com sucesso
  6. Backtest: rode em dados históricos e analise o relatório
  7. Otimize (Ultra): encontre as melhores combinações de parâmetros
  8. Simule: teste em conta simulada antes de operar ao vivo
  9. Ative o módulo de automação: necessário para conta real (trial de 7 dias)
  10. 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

Comunidade e cursos

Repositórios no GitHub

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.

Fale com a RedBlock


Aviso Legal: Conteúdo educativo. Não constitui recomendação de investimento. Resultados passados em backtesting não garantem resultados futuros.

On this page