Strasmore Research
Aprendizado Matt ConnorPor Matt Connor · data as of August 15, 2026 · refreshed weekly

Bracket order e OCO: como funcionam

Entenda a bracket order, o alvo de lucro e o stop de proteção ligados como OCO, os efeitos do preenchimento parcial e onde essa relação é mantida.

Uma bracket order é uma única instrução que envia três ordens em uma relação fixa: uma entrada e um par de saídas vinculadas, posicionadas em lados opostos da entrada. Esse par é o OCO, abreviação de one cancels the other. Uma ordem limite de realização de lucro fica acima do preço de entrada, e um stop de proteção fica abaixo dele. A execução de qualquer uma das pernas cancela automaticamente a outra. Na prática, uma bracket é uma pequena máquina de estados. A maioria das surpresas ocorre nos intervalos entre esses estados.

O que é uma bracket order?

Imagine um trader que queira comprar 200 ações perto de US$ 50, encerrar a posição perto de US$ 53 se a operação der certo e sair perto de US$ 48,50 se der errado. Como ordens separadas, isso exige três tickets e uma tarefa manual: cancelar o stop no momento em que o alvo for executado. Caso contrário, o trader corre o risco de vender 200 ações duas vezes. A bracket reúne a mesma intenção em uma única submissão. A entrada é uma ordem a mercado ou ordem limite comum. As duas saídas são suas ordens-filhas: uma ordem limite para encerrar a posição no alvo e uma ordem stop ou stop-limit para encerrar a posição no nível de proteção.

A terminologia varia. Bracket, attached order, OCO bracket e OTOCO descrevem essa estrutura. OTOCO, one triggers a one-cancels-the-other, é o nome mais literal para a sequência: a entrada ativa o par, e depois o par se reduz a uma única ordem por meio do cancelamento da outra.

O que significa OCO em uma bracket order?

OCO é um par de ordens pendentes com um vínculo de cancelamento entre elas. As duas permanecem ativas no livro ao mesmo tempo. Quando uma é executada, a outra é retirada. Quando uma é executada parcialmente, a outra é reduzida pela quantidade executada, em vez de ser retirada por completo. Essa redução mantém a posição e sua proteção correspondentes ação por ação.

A sequência completa de uma bracket comprada de 200 ações funciona assim.

  1. A entrada trabalha sozinha. O alvo e o stop existem dentro do sistema da corretora, mas ainda não são ordens ativas. Portanto, uma negociação acima do preço-alvo enquanto a entrada não foi executada não produz efeito algum.
  2. A entrada é executada para 200 ações. As duas ordens-filhas ficam ativas, cada uma para 200 ações.
  3. A negociação atinge o preço do stop. O stop se converte em uma ordem de venda ativa e passa a trabalhar no livro.
  4. O stop executa 120 ações antes de o mercado se afastar. A ordem limite do alvo é reduzida de 200 para 80 ações, correspondendo ao tamanho restante da posição.
  5. As 80 ações restantes são executadas posteriormente no alvo, ainda durante a sessão. As 80 ações remanescentes do stop são canceladas, e a bracket é encerrada.

As execuções parciais da entrada são o ponto em que as plataformas mais divergem. Algumas corretoras ativam imediatamente as ordens-filhas na quantidade executada e aumentam esse volume à medida que o restante da entrada é concluído. Outras aguardam a execução integral da entrada, deixando a posição sem proteção nesse intervalo. As regras variam entre corretoras em aspectos que não são meramente cosméticos: se as ordens-filhas são ativadas após uma execução parcial da entrada e se a edição de uma ordem-filha rompe o vínculo de cancelamento da outra.

Qual é a distância entre as duas pernas?

As duas pernas precisam ficar fora do ruído que o ativo costuma apresentar em um dia normal, mas dentro da distância que ele efetivamente consegue percorrer. A amplitude diária é a primeira medida, ainda rudimentar, para essa análise. O painel abaixo analisa seis nomes conhecidos ao longo do último ano: a mediana da amplitude entre a máxima e a mínima, como percentual da abertura, ao lado da mediana do movimento absoluto entre a abertura e o fechamento.

QueryFaixa diária típica e variação da abertura ao fechamento, últimos 12 meses
O SQL exato por trás de cada número
SELECT
    ticker,
    round(quantileDeterministic(0.5)(
        (toFloat64(high) - toFloat64(low)) / toFloat64(open) * 100,
        toUInt32(date)), 2)                                   AS median_range_pct,
    round(quantileDeterministic(0.5)(
        abs(toFloat64(close) - toFloat64(open)) / toFloat64(open) * 100,
        toUInt32(date)), 2)                                   AS median_open_to_close_pct
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'KO', 'JNJ')
  AND date >= today() - 370
  AND date <  today() - 2
GROUP BY ticker
ORDER BY median_range_pct DESC
Run this yourself

NVDA apresenta a maior amplitude típica de sessão entre os seis, em 2.72%, e SPY apresenta a menor, em 0.86%. Observe como a segunda coluna fica abaixo da primeira em todas as linhas. Um ativo típico percorre uma distância consideravelmente maior durante a sessão do que a variação líquida entre a abertura e o fechamento, e as duas pernas da bracket ficam dentro desse percurso. Um alvo e um stop podem ser atingidos no mesmo dia normal.

Com que frequência uma perna da bracket é tocada?

A distância em relação à entrada é o parâmetro que o trader realmente controla. O painel seguinte fixa a análise em três anos específicos de sessões do SPY e pergunta, para um conjunto de distâncias em relação ao preço de abertura, qual parcela das sessões atingiu essa distância para baixo e qual parcela atingiu essa distância para cima em algum momento do dia.

QueryPercentual de sessões do SPY que atingiram determinada distância da abertura (ago. 2023 a jul. 2026)
O SQL exato por trás de cada número
SELECT
    concat(toString(d.dist), '%')                             AS distance_from_open,
    round(100 * countIf(
        (toFloat64(a.open) - toFloat64(a.low)) / toFloat64(a.open) * 100 >= d.dist
    ) / count(), 1)                                           AS reached_below_pct,
    round(100 * countIf(
        (toFloat64(a.high) - toFloat64(a.open)) / toFloat64(a.open) * 100 >= d.dist
    ) / count(), 1)                                           AS reached_above_pct
FROM global_markets.stocks_daily_aggs AS a
CROSS JOIN
(
    SELECT arrayJoin([0.25, 0.5, 1.0, 1.5, 2.0, 3.0]) AS dist
) AS d
WHERE a.ticker = 'SPY'
  AND a.date >= '2023-08-01'
  AND a.date <  '2026-08-01'
GROUP BY d.dist
ORDER BY d.dist
Run this yourself

A um quarto de ponto percentual da abertura, 62.3% das sessões negociaram nessa distância para baixo em algum momento, e 64.7% negociaram nessa distância para cima. Ao ampliar a distância para 3%, o percentual para baixo cai para 0.5%. As duas curvas caem juntas. Essa é a principal tensão no dimensionamento de uma bracket. Um stop curto é um stop que pode ser acionado em dias sem nada de excepcional. Um alvo distante é um alvo que, na maioria das vezes, termina a sessão sem execução.

Um stop loss sempre é executado no preço do stop?

Não. Um stop é uma instrução para enviar uma ordem quando um preço de disparo é negociado. Um stop simples envia uma ordem a mercado, e a execução ocorre onde quer que o livro esteja naquele instante. Um stop-limit envia uma ordem limite ao preço definido pelo trader. Ele protege o preço, mas aceita o risco de não haver execução. Esse é o trade-off discutido em ordem stop versus ordem stop-limit.

O gap durante a noite é o caso mais claro. Um stop de proteção permanece pendente durante o período em que a bolsa está fechada, e o primeiro negócio da abertura pode ocorrer muito além do gatilho. Dez exemplos da AAPL ao longo de três anos e meio:

QueryAs dez maiores quedas overnight do AAPL, jan. 2023 a jun. 2026
O SQL exato por trás de cada número
SELECT
    formatDateTime(session_date, '%b %e, %Y')                 AS gap_label,
    round((day_open / prev_close - 1) * 100, 2)               AS overnight_gap_pct
FROM
(
    SELECT
        session_date,
        day_open,
        lagInFrame(day_close) OVER (
            ORDER BY session_date ROWS BETWEEN 1 PRECEDING AND CURRENT ROW
        )                                                     AS prev_close
    FROM
    (
        SELECT
            date                  AS session_date,
            toFloat64(any(open))  AS day_open,
            toFloat64(any(close)) AS day_close
        FROM global_markets.stocks_daily_aggs
        WHERE ticker = 'AAPL'
          AND date >= '2023-01-01'
          AND date <  '2026-07-01'
        GROUP BY date
    )
)
WHERE prev_close > 0
ORDER BY overnight_gap_pct ASC
LIMIT 10
Run this yourself

O maior deles mediu -9.45% em Aug 5, 2024, e o décimo da lista ainda mediu -2.96%. Um stop de proteção posicionado dentro de qualquer um desses gaps seria convertido no primeiro negócio da abertura, e não no preço de disparo. Dimensionar uma bracket apenas com base na amplitude intradiária deixa essa distância sem modelagem.

Onde o vínculo OCO realmente fica?

Quase nunca na bolsa. O vínculo de cancelamento entre as duas ordens-filhas é mantido no sistema de gerenciamento de ordens da corretora ou, um nível além, em uma plataforma de negociação executada no próprio computador do trader. A bolsa recebe duas ordens comuns e independentes.

Essa localização determina o que continua funcionando durante uma interrupção. Uma bracket mantida na corretora continua ativa quando o notebook é fechado, porque os servidores da corretora mantêm as duas pernas e a lógica de cancelamento. Uma bracket mantida na plataforma, como as implementadas localmente por alguns aplicativos de gráficos, exige que o aplicativo permaneça aberto e conectado. Algumas plataformas mantêm um stop simulado que existe apenas na memória local até que o preço de disparo seja atingido. Se o notebook for fechado, esse stop nunca será enviado.

A mesma pergunta vale para o seu próprio código. Um stop que existe apenas dentro de um processo em execução não deixa nenhuma ordem pendente no livro quando o processo é interrompido. Disjuntores para robôs de negociação aborda esse padrão para sistemas automatizados: suponha que o processo pare no pior momento possível e verifique o que ainda permanece ativo na corretora.

A validade se aplica a cada perna

Cada perna tem sua própria configuração de validade da ordem. Uma entrada válida apenas no dia, combinada com ordens-filhas GTC, é uma configuração comum e problemática: a entrada expira no fechamento, enquanto as ordens-filhas nunca são ativadas. O resultado é uma bracket que permanece inativa na manhã seguinte. A combinação inversa deixa uma proteção que expira às 16h ET em uma posição carregada durante a noite.

Fora do horário regular, o próprio livro muda de características. O painel abaixo agrupa barras de um minuto do SPY pelo horário do relógio em ET ao longo de todo o dia e apresenta duas medidas por intervalo de meia hora: o tamanho médio do movimento de um minuto, em pontos-base (um ponto-base corresponde a um centésimo de um por cento), e o volume mediano negociado em um minuto.

QueryMovimento e volume dos candles de 1 minuto do SPY por horário ET
O SQL exato por trás de cada número
SELECT
    formatDateTime(
        toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 30 MINUTE),
        '%H:%i')                                              AS et_time,
    round(avg(abs(toFloat64(close) - toFloat64(open)) / toFloat64(open) * 10000), 1) AS avg_move_bps,
    round(quantileDeterministic(0.5)(toFloat64(volume), toUInt64(window_start)), 0)  AS median_volume
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
  AND window_start >= today() - 120
  AND window_start <  today() - 2
GROUP BY et_time
ORDER BY et_time
Run this yourself

O painel apresenta 32 intervalos de meia hora, de 04:00 a 19:30 ET. Leia-o da esquerda para a direita para entender o formato. As duas séries permanecem próximas do piso durante o pré-mercado, sobem acentuadamente na abertura das 9h30 e recuam novamente depois das 16h. Um stop GTC mantido às 5h fica na parte de baixa liquidez dessa curva, e uma execução de stop-market em um livro tão pouco líquido pode ocorrer muito longe do gatilho.

Perguntas frequentes

Qual é a diferença entre uma bracket order e uma ordem OCO?

O OCO é o próprio par: duas ordens pendentes com um vínculo de cancelamento, em que a execução de uma remove a outra. A bracket é uma ordem de entrada com um par OCO anexado. O par só fica ativo depois que a entrada é executada. Toda bracket contém um OCO. Muitos pares OCO são usados de forma independente.

Uma bracket order continua funcionando se meu computador estiver desligado?

Depende de onde o vínculo está mantido. Uma bracket mantida na corretora fica nos servidores da corretora e continua funcionando com a plataforma fechada. Uma bracket mantida na plataforma ou uma bracket simulada exige que o aplicativo esteja aberto e conectado. Sem isso, as ordens-filhas podem nunca chegar ao mercado.

O que acontece com o stop se o alvo de lucro for parcialmente executado?

O stop é reduzido pela quantidade executada, em vez de ser cancelado. Se um alvo de 200 ações executar 60 ações, o stop passa a ter 140 ações, correspondendo à posição ainda aberta. O cancelamento ocorre apenas quando a última ação da posição é encerrada.

Posso usar uma bracket order no pré-mercado ou no after-hours?

O comportamento varia entre as corretoras, e muitas encaminham as ordens-filhas da bracket apenas durante o horário regular. As ordens stop, em particular, costumam ser rejeitadas ou mantidas fora do intervalo das 9h30 às 16h ET nas ações dos EUA. A configuração de validade de cada perna determina se ela pode participar da sessão estendida.

As bolsas sabem que minhas duas ordens estão vinculadas?

Não. No mercado de ações dos EUA, o vínculo de cancelamento é mantido pela corretora ou pela plataforma, e a bolsa recebe duas ordens independentes. A mensagem de cancelamento da perna que permanece ativa é enviada pelo sistema que mantém o vínculo, depois que a outra perna informa sua execução.


Todos os painéis deste artigo vêm acompanhados do SQL exato usado em sua construção. Para medir a amplitude e o risco de gap de um ativo que você acompanha, formule a pergunta em inglês simples no terminal Strasmore.

#order types#oco#bracket orders#stop orders#execution