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

NTSL — Módulo de Automação e Execução ao Vivo

Como configurar e usar o Módulo de Automação do Profit: modos de execução, horários de operação, limites de risco, controles de segurança, XRay, ConsoleLog e estratégias OCO.

NTSL — Módulo de Automação e Execução ao Vivo

O Módulo de Automação transforma uma estratégia de execução em um robô que opera ao vivo na sua conta. É o passo após o backtest — conecta o código NTSL à execução real na B3.

Fundamentos da linguagem: NTSL — Fundamentos | Funções de execução: Funções de Execução


Versões e Requisitos

VersãoBacktestingAutomação ao Vivo
Profit ChartNãoNão
Profit ProOHLCSim (módulo pago)
Profit UltraTick-a-tickSim (módulo pago)

O Módulo de Automação pode ser testado em trial de 7 dias antes da assinatura.


Criando uma Automação

  1. No Editor de Estratégias, abra sua estratégia de execução
  2. Clique em "Automatizar estratégia" na barra de ferramentas
  3. Configure os parâmetros na janela de criação de automação
  4. Selecione o ativo e a conta

A automação fica visível na Janela de Detalhes da Automação com abas: Gráfico, Resumo, XRay e Eventos.


Modos de Execução

Fechamento de Candle

O código é executado uma vez ao fechar cada candle. Mais conservador — evita ruído intracandle.

  • Adequado para estratégias de swing, tendência, cruzamentos
  • Menor volume de execuções — menor risco de ordens duplicadas

Condição Satisfeita

O código é executado a cada tick enquanto a condição for verdadeira. Mais reativo — indicado para scalping e estratégias rápidas.

  • Requer cuidado extra com lógica de controle (evitar abrir múltiplas ordens)
  • Verificar HasPosition e HasPendingOrders antes de cada ordem
// Proteção contra ordens duplicadas — essencial no modo "Condição Satisfeita"
begin
  if not HasPosition and not HasPendingOrders then
  begin
    if (Close > Media(21, Close)) then
      BuyAtMarket;
  end;
end;

Horários de Operação

Intervalo de Execução

Define o horário em que a automação pode enviar ordens:

Início: 09:00  |  Fim: 17:00

Intervalo de Suspensão

Define um período em que a automação fica pausada (ex: horário do leilão de abertura):

Suspensão: 09:00 às 09:05

Encerramento no Código

Complementar à configuração da interface, é boa prática incluir no código:

// Encerrar posição antes do fechamento do pregão
if (Time >= 1655) then
begin
  ClosePosition;
  exit;
end;

// Não operar nos primeiros 5 minutos
if (Time < 905) then exit;

Limites de Risco

Configuráveis na janela da automação:

ParâmetroDescrição
Objetivo de Ganho DiárioPara a automação quando lucro do dia atinge o alvo
Limite de Perda DiáriaPara a automação quando perda do dia atinge o limite
Perdas ConsecutivasPara após N trades negativos seguidos

Implementar no Código (complementar)

var
  dResult : Float;

begin
  dResult := DailyResult(True);

  // Stop diário
  if (dResult <= -300) then
  begin
    ClosePosition;
    exit;
  end;

  // Objetivo atingido
  if (dResult >= 600) then
  begin
    ClosePosition;
    exit;
  end;

  // Lógica normal da estratégia
  if not HasPosition then
  begin
    if (Close > Media(21, Close)) then
      BuyAtMarket;
  end;
end;

Controles de Segurança

Controle de Falha

Ação a tomar se a estratégia parar inesperadamente (ex: queda de conexão):

  • Fechar posição: encerra o trade e cancela ordens
  • Manter posição: deixa o trade aberto para monitoramento manual
  • Nenhuma ação: mantém ordens e posição

Controle de Leilão

Define o comportamento durante períodos de leilão (pré-abertura, circuito breaker):

  • Zerar posição automaticamente
  • Ignorar e aguardar retorno do pregão normal

Controle de Flood

Limita a quantidade de ordens enviadas em um intervalo de tempo para evitar floods de execução. Útil no modo "Condição Satisfeita".


ConsoleLog — Log em Tempo Real

A função ConsoleLog() registra mensagens na aba Eventos da Janela de Detalhes da Automação:

Procedimento ConsoleLog(Mensagem: String; Preco: Float): Void;
var
  sAvgFast, sAvgSlow, sPrevAvgFast, sPrevAvgSlow : Float;

begin
  sAvgFast     := Media(9,  Close);
  sAvgSlow     := Media(21, Close);
  sPrevAvgFast := sAvgFast[1];
  sPrevAvgSlow := sAvgSlow[1];

  if (sPrevAvgFast < sPrevAvgSlow) and (sAvgFast > sAvgSlow) then
  begin
    ConsoleLog("Cruzamento de compra detectado no preço " + FloatToStr(sPrevAvgFast), sPrevAvgFast);
    BuyLimit(Close, 1);
  end
  else if (sPrevAvgFast > sPrevAvgSlow) and (sAvgFast < sAvgSlow) then
  begin
    ConsoleLog("Cruzamento de venda detectado no preço " + FloatToStr(sPrevAvgSlow), sPrevAvgSlow);
    SellShortLimit(Close, 1);
  end;
end;

Os logs aparecem na aba Eventos com timestamp, tipo de evento e mensagem — excelente para depuração ao vivo.


XRay — Raio-X da Estratégia (Premium)

Disponível no Automação Premium ou superior. O XRay exibe visualmente no gráfico:

  • Estado atual de cada condição lógica do código
  • Quais condições estão sendo satisfeitas a cada tick
  • Depuração visual sem precisar adicionar ConsoleLog manualmente

Acesso: botão XRay na janela de detalhes da automação.


Padrão OCO — One Cancels Other

O Profit não tem OCO nativo, mas pode ser implementado com BuyStop + SellShortStop simultâneos:

input
  pCompra(136000);
  pVenda(134000);
  lote(1);

begin
  // Envia os dois lados simultaneamente
  if not HasPosition and not HasPendingOrders then
  begin
    BuyStop(pCompra, pCompra, lote);
    SellShortStop(pVenda, pVenda, lote);
  end;

  // Se compra foi executada, cancela a venda e vice-versa
  if HasPosition then
    CancelPendingOrders;
end;

Janela de Detalhes da Automação

AbaConteúdo
GráficoGráfico do ativo com sinais da automação plotados
ResumoStatus atual: posição, ordens, P&L, parâmetros
XRayAnálise visual das condições lógicas (Premium)
EventosLog de eventos: ConsoleLog, ordens, posições abertas/fechadas

O Resumo exibe em tempo real:

  • Lado da posição (Comprado/Vendido/Neutro)
  • Quantidade em aberto
  • Preço médio e resultado em aberto
  • Resultado do dia e acumulado

Termômetro de Estratégias

Ferramenta que monitora múltiplas automações simultaneamente no mesmo gráfico. Exibe visualmente quantas estratégias estão compradas, vendidas ou neutras — útil para sistemas com múltiplos robôs.

Disponível para usuários com Automação Premium ou superior.

Acesso: cabeçalho do gráfico → ícone do Termômetro, ou menu de contexto do gráfico.


Checklist Antes de Operar ao Vivo

  • Backtest com resultados positivos em período representativo (mínimo 1-2 anos)
  • Validação em conta simulada por pelo menos 1 mês
  • Stop diário configurado tanto na interface quanto no código
  • Modo de execução adequado à estratégia (candle close vs tick a tick)
  • Horários de operação configurados
  • ConsoleLog adicionado nos pontos críticos para monitoramento
  • Lote mínimo no início (1 contrato) para validar execução real
  • Contato da corretora anotado para emergências

Referências

Referências externas

On this page