Programando Robôs para Daytrade com NTLS no Profit Pro: Guia Prático com Médias Móveis

Introdução

O Profit Pro, da Nelogica, é uma das plataformas de trading mais utilizadas no Brasil para operar na B3. Uma das suas funcionalidades mais poderosas é a linguagem NTLS (Nelogica Trading Language Script), que permite criar robôs (Expert Advisors) automatizados para executar estratégias de daytrade sem intervenção manual.

Neste post, vamos construir juntos um robô simples baseado em cruzamento de médias móveis, cobrindo os principais elementos de uma estratégia: definição de posição, quantidade de contratos, entradas e saídas com StopGain e StopLoss.


O que é NTLS?

NTLS é a linguagem de programação proprietária do Profit Pro. Com ela você pode:

  • Criar indicadores personalizados
  • Programar robôs de execução automática
  • Definir alertas e sinais de entrada/saída
  • Fazer backtest de estratégias diretamente na plataforma

A linguagem tem sintaxe similar ao Pascal e é executada diretamente no gráfico, com acesso a preços, volumes e indicadores em tempo real.


Estrutura do Robô: Médias Móveis

A estratégia de cruzamento de médias móveis é um dos sistemas mais clássicos do trading algorítmico:

  • Quando a média curta cruza para cima a média longa → Compra
  • Quando a média curta cruza para baixo a média longa → Venda

Código NTLS Comentado


{=============================================
  Robô de Médias Móveis - Daytrade
  Plataforma: Profit Pro (Nelogica)
  Linguagem: NTLS
=============================================}

{ ---- PARÂMETROS CONFIGURÁVEIS ---- }
input
  Posicao      : Integer = 1;     { 1 = Comprado, -1 = Vendido, 0 = Sem filtro }
  Contratos    : Integer = 1;     { Quantidade de contratos por operação }
  PeriodoCurta : Integer = 9;     { Período da média móvel rápida }
  PeriodoLonga : Integer = 21;    { Período da média móvel lenta }
  StopGain     : Float   = 150;   { Objetivo de lucro em pontos }
  StopLoss     : Float   = 75;    { Limite de perda em pontos }

{ ---- VARIÁVEIS ---- }
var
  MediaCurta   : Float;
  MediaLonga   : Float;
  CruzouCima   : Boolean;
  CruzouBaixo  : Boolean;

begin
  { Calcula as médias móveis simples }
  MediaCurta := MediaMovel(PeriodoCurta, Close);
  MediaLonga := MediaMovel(PeriodoLonga, Close);

  { Detecta cruzamento para cima (compra) }
  CruzouCima := (MediaCurta[1] <= MediaLonga[1]) and (MediaCurta > MediaLonga);

  { Detecta cruzamento para baixo (venda) }
  CruzouBaixo := (MediaCurta[1] >= MediaLonga[1]) and (MediaCurta < MediaLonga);

  { ---- LÓGICA DE COMPRA ---- }
  { Entra comprado se houve cruzamento de alta e posição permite compra }
  if CruzouCima and (Posicao >= 0) and not IsBought then
  begin
    BuyAtMarket(Contratos);
    SetStopGain(StopGain);
    SetStopLoss(StopLoss);
  end;

  { ---- LÓGICA DE VENDA ---- }
  { Entra vendido se houve cruzamento de baixa e posição permite venda }
  if CruzouBaixo and (Posicao <= 0) and not IsSold then
  begin
    SellShortAtMarket(Contratos);
    SetStopGain(StopGain);
    SetStopLoss(StopLoss);
  end;

  { ---- REVERSÃO DE POSIÇÃO ---- }
  { Fecha compra ao cruzar para baixo }
  if CruzouBaixo and IsBought then
    SellAtMarket(Contratos);

  { Fecha venda ao cruzar para cima }
  if CruzouCima and IsSold then
    BuyToCoverAtMarket(Contratos);

end;


Explicação dos Principais Elementos

🔧 Parâmetros (input)

ParâmetroTipoDescrição
PosicaoIntegerDefine se o robô opera comprado (1), vendido (-1) ou nos dois lados (0)
ContratosIntegerQuantidade de contratos por ordem
PeriodoCurtaIntegerPeríodo da MM rápida (ex: 9)
PeriodoLongaIntegerPeríodo da MM lenta (ex: 21)
StopGainFloatPontos de objetivo de lucro
StopLossFloatPontos máximos de perda permitida

📈 Funções NTLS Utilizadas

  • MediaMovel(Periodo, Preco) — calcula a média móvel simples
  • BuyAtMarket(n) — envia ordem de compra a mercado com n contratos
  • SellShortAtMarket(n) — envia ordem de venda a descoberto
  • SellAtMarket(n) — fecha posição comprada
  • BuyToCoverAtMarket(n) — fecha posição vendida
  • SetStopGain(pontos) — define o alvo de lucro em pontos
  • SetStopLoss(pontos) — define o stop de proteção em pontos
  • IsBought / IsSold — verifica se há posição aberta

Como Adicionar o Robô no Profit Pro

  1. Abra o Profit Pro e acesse Ferramentas → Editor de Estratégias
  2. Clique em Novo e selecione o tipo Expert Advisor (Robô)
  3. Cole o código acima e clique em Compilar
  4. Aplique o robô em um gráfico do ativo desejado (ex: WINM25, WDOM25)
  5. Configure os parâmetros conforme sua estratégia e ative a execução automática

Dicas para Otimizar o Robô

  • 🔍 Backtest sempre: antes de operar ao vivo, rode o backtest com dados históricos no próprio Profit Pro
  • ⏱️ Escolha o timeframe certo: para daytrade, os gráficos de 1min, 5min ou 15min costumam funcionar melhor
  • 💰 Gestão de risco: calibre o StopLoss de acordo com o seu risco máximo diário
  • 📊 Combine com filtros: adicione filtros de tendência (ex: IFR, Bandas de Bollinger) para reduzir sinais falsos
  • 🚫 Horários críticos: considere não operar nos primeiros e últimos 30 minutos do pregão

Conclusão

Programar um robô de daytrade no Profit Pro com NTLS é mais acessível do que parece. Com poucos parâmetros e uma lógica clara, já é possível automatizar uma estratégia completa com entradas, saídas, StopGain e StopLoss. O exemplo de médias móveis serve como uma excelente base para evoluir para estratégias mais sofisticadas.

Tem dúvidas ou quer ver um robô mais avançado? Deixa nos comentários! 👇


Comentários

Deixe uma resposta

Descubra mais sobre Sousa Invest

Assine agora mesmo para continuar lendo e ter acesso ao arquivo completo.

Continuar lendo