profitchart:youtube:codigos:automacao_oco

Automação com OCO + Realização Parcial e Breakeven

Download

Vídeos


Resumo

📋 Descrição

Automação com lógica OCO nativa: entrada por cruzamento de médias móveis, saída por stop ou alvo com break-even automático e realização parcial. Ao atingir o alvo intermediário, metade da posição é realizada e o stop move para o preço de entrada, deixando o restante correr até o alvo final.


🎯 O que é OCO

OCO significa “One Cancels the Other” — um par de ordens vinculadas onde o disparo de uma cancela automaticamente a outra.

Na prática, é a combinação de stop loss (proteção) e take profit (alvo): quando o mercado atinge um dos dois, o outro é cancelado imediatamente.

Na automação NTSL, o par OCO é gerenciado nativamente pela plataforma.

Ao enviar SellToCoverStop e SellToCoverLimit juntas, a plataforma cria o par OCO automaticamente.

Quando uma das ordens é atingida, a outra é cancelada sem nenhuma instrução adicional no código.

A cada novo candle, a plataforma atualiza os preços do par OCO conforme os valores enviados pelo código.

Diagrama OCO — Stop e Alvo na Posição Comprada


🔄 O que é Breakeven

Breakeven é mover o stop loss para o preço de entrada após o mercado andar a favor.

Se o preço voltar, a operação fecha no zero a zero — sem lucro, sem prejuízo.

O risco original da operação é eliminado.

Breakeven: Stop Move para Entrada


✂️ O que é Realização Parcial

Realização parcial é encerrar parte da posição no lucro e deixar o restante correr.

Garante um ganho concreto enquanto mantém exposição ao movimento maior.

Realização Parcial


⚙️ Como Funciona

1️⃣ Entrada: detecta cruzamento de médias móveis (rápida acima da lenta). Se não há posição, envia BuyAtMarket com uma quantidade de contratos.

2️⃣ Fase 1 — OCO com alvo intermediário:

Com posição aberta a plataforma recebe o par OCO:

  • Stop em BuyPrice - StopPontos para o total de contratos e
  • Uma ordem Limite para um alvo intermediário em BuyPrice + AlvoIntermediario para o fechamento parcial.

Se o stop for atingido primeiro, toda a posição é encerrada.

3️⃣ Fase 2 — Breakeven + alvo final:

Ao atingir o alvo intermediário, o fechamento parcial é realizado com lucro parcial.

O stop move automaticamente para BuyPrice (break-even) e o alvo passa a ser o alvo final em BuyPrice + AlvoPontos — ambos para os contrato restante.

A partir deste ponto, a operação é “de graça”: o pior cenário é sair com o lucro parcial.

4️⃣ Saída e recomeço: Os contratos restantes saem pelo alvo final (lucro máximo) ou pelo breakeven (zero a zero).

Sem posição, o código volta a monitorar cruzamento de médias para nova entrada.

Entrada: Cruzamento de Médias


🎛️ Constantes e Parâmetros

Constantes (OCO e gestão de saída):

Constante Valor Descricao
StopPontos 800 Distância do stop em relação ao preço de entrada, em pontos
AlvoPontos 1000 Distância do alvo final em relação ao preço de entrada, em pontos
AlvoIntermediario 200 Distância do alvo intermediário que aciona breakeven e realização parcial
PosicaoTotal 3 Tamanho total da posição
FechamentoParcial 1 Tamanho do fechamento parcial

Parâmetros (sinal de entrada):

Parametro Padrao Descricao
PeriodoMediaRapida 9 Período da média móvel rápida usada no sinal de entrada
PeriodoMediaLenta 21 Período da média móvel lenta usada no sinal de entrada

💻 Código NTSL

// ========== OCO COM BREAKEVEN E REALIZAÇÃO PARCIAL ==========
// Entrada por cruzamento de médias móveis.
// Fase 1: stop + alvo intermediário. Ao atingir alvo intermediário,
// realiza fechmaneto parcial e move stop para breakeven.
// Fase 2: stop no breakeven + alvo final para a posição restante.
const
  StopPontos        = 800;
  AlvoPontos        = 1400;
  AlvoIntermediario = 1000;
  PosicaoTotal      = 3;
  FechamentoParcial = 1;
 
parametro
  PeriodoMediaRapida(9);
  PeriodoMediaLenta(21);
 
var
  mediaRapida, mediaLenta, stopAtual : real;
  breakevenAtivado, condicaoCompra : booleano;
 
inicio
  mediaRapida := Media(PeriodoMediaRapida, Fechamento);
  mediaLenta  := Media(PeriodoMediaLenta, Fechamento);
 
  condicaoCompra := (mediaRapida > mediaLenta) e (mediaRapida[1] <= mediaLenta[1]);
 
  se nao HasPosition entao
  inicio
    breakevenAtivado := falso;
    se condicaoCompra entao
      BuyAtMarket(PosicaoTotal);
  fim;
 
  se IsBought entao
  inicio
    se (Fechamento >= BuyPrice + AlvoIntermediario) entao
      breakevenAtivado := verdadeiro;
 
    se breakevenAtivado entao
      stopAtual := BuyPrice
    senao
      stopAtual := BuyPrice - StopPontos;
 
    se (BuyPosition = PosicaoTotal) entao
    inicio
      SellToCoverStop(stopAtual, stopAtual, BuyPosition);
      SellToCoverLimit(BuyPrice + AlvoIntermediario, FechamentoParcial);
    fim
    senao se (BuyPosition < PosicaoTotal) entao
    inicio
      SellToCoverStop(stopAtual, stopAtual, BuyPosition);
      SellToCoverLimit(BuyPrice + AlvoPontos, BuyPosition);
    fim;
  fim;
fim;

🔍 Como Interpretar

Situacao Significado
BuyPosition = PosicaoTotal, stop e alvo intermediário visíveis Fase 1 ativa — aguardando alvo intermediário ou stop
Alvo intermediário atingido, BuyPosition cai Realização parcial executada, lucro parcial garantido
Stop moveu para BuyPrice, alvo final visível Fase 2 ativa — operação “de graça” (pior caso: zero a zero)
Stop atingido na Fase 1 Perda total: 2 contratos × StopPontos
Alvo final atingido na Fase 2 Lucro máximo: parcial (intermediário) + restante (alvo final)

➕ Mais informações

profitchart/youtube/codigos/automacao_oco.txt · Última modificação: por 127.0.0.1