IOC vs FOK, ordens a mercado e limitadas: tipos de ordens para a execução algorítmica em forex Quarta-feira, 4 de Novembro de 2026 – Posted in: Arbitrage Software, Forex trading
IOC, FOK, a mercado ou limitada: como escolher a ordem certa para cada operação
Um tipo de ordem é uma decisão sobre o que você prefere suportar: um preço pior, uma execução menor ou nenhuma execução. Este guia mostra como cada instrução se comporta no livro de ofertas, nas mensagens FIX e sob last look, com cálculos práticos para um algoritmo que precisa escolher em milissegundos.
Resposta curta: IOC vs FOK. Uma ordem Immediate-or-Cancel (IOC) pega tudo o que estiver disponível naquele momento ao seu preço ou melhor e cancela o restante, portanto a execução parcial é possível. Uma ordem Fill-or-Kill (FOK) precisa ser executada integralmente de imediato ou é cancelada por completo: ou você recebe tudo, ou nada. Use IOC quando qualquer parte do tamanho for útil e FOK quando uma posição parcial for pior do que nenhuma.
- Tipo de ordem e time in force são duas decisões
- Ordens a mercado no forex
- Ordens limitadas, limitadas agressivas e stop
- Time in force: IOC, FOK, GTC, Day, GTD
- IOC vs FOK vs a mercado: um livro de ofertas, três resultados
- Como as ordens aparecem no FIX
- Liquidez full-amount e last look
- Onde colocar o limite: um modelo com números
- Como lidar com execuções parciais
- Qual ordem para qual estratégia
- Sete passos para configurar a execução
- Erros comuns
- O que medir
- Perguntas frequentes
Tipo de ordem e time in force são duas decisões separadas
A maioria dos glossários lista a mercado, limitada, stop, IOC e FOK como se fossem cinco opções do mesmo menu. Não são. Por trás delas há duas perguntas independentes, e um algoritmo precisa responder às duas em cada ordem:
- Que preço estou disposto a aceitar? Esse é o tipo de ordem: a mercado (qualquer preço), limitada (este preço ou melhor), stop (ativa quando um gatilho é negociado ou cotado).
- Por quanto tempo a ordem pode permanecer ativa? Esse é o time in force, ou TIF: imediatamente (IOC, FOK), até o fim da sessão (Day), até ser cancelada (GTC) ou até um horário definido (GTD).
Portanto, IOC e FOK não são alternativas à ordem limitada. São tempos de vida associados a ela. “Limit IOC” e “Limit FOK” são as duas instruções agressivas mais comuns no forex algorítmico, e o protocolo FIX mantém as duas decisões em campos separados: OrdType (tag 40) e TimeInForce (tag 59).
Ordens a mercado no forex: o que “a mercado” realmente significa
Uma ordem a mercado diz: execute agora, o preço é secundário. Ela não tem limite, por isso oferece a maior certeza de execução e nenhuma proteção quanto ao preço obtido. Se o livro se moveu ou está raso, a ordem vai consumindo os níveis disponíveis até completar o tamanho. Esse custo é o slippage, tratado em detalhes no nosso guia sobre como medir e reduzir o slippage no forex.
O forex acrescenta dois detalhes que as explicações baseadas em bolsa deixam de lado:
- Não existe um único livro central. Seu corretor ou ECN mostra um fluxo agregado de vários provedores de liquidez. “A mercado” significa ao melhor preço que sua plataforma de execução consegue obter desse fluxo, não a um preço de mercado universal.
- Uma ordem a mercado ainda tem um tempo de vida implícito. Muitas plataformas tratam ordens a mercado internamente como IOC ou FOK: executam o que for possível agora e informam o restante. Algumas permitem adicionar um desvio máximo, o que na prática transforma a ordem em limitada. Não presuma nada; leia a especificação da plataforma.
O papel prático de uma ordem a mercado em um algoritmo é restrito. Ela cabe nas situações em que não operar é o perigo maior, como ao fechar uma posição que perdeu o hedge.
Ordens limitadas, limitadas agressivas e stop
Ordens limitadas passivas
Uma ordem limitada colocada longe do preço atual fica no livro e espera. Uma compra limitada abaixo do ask não toma liquidez; ela oferece liquidez. Você pode ganhar o spread em vez de pagá-lo, mas assume o risco de fila e a seleção adversa: ordens passivas tendem a ser executadas justamente quando o mercado está passando por elas. Ordens passivas normalmente são combinadas com Day, GTC ou GTD.
Ordens limitadas agressivas
Uma compra limitada com preço igual ou superior ao ask atual é executada de imediato, como uma ordem a mercado, mas não pode ser preenchida além do seu limite. Essa “marketable limit”, ou limitada agressiva, é o burro de carga da execução automatizada. Combinada com IOC, ela significa: tome liquidez agora, até este preço, e não deixe nada no livro.
A questão da melhoria de preço costuma ser mal compreendida. O limite é o pior preço aceitável, não o preço de execução. Se você compra com limite em 1.08510 e o ask está em 1.08502, deve receber 1.08502 ou os níveis seguintes até o seu limite.
Ordens stop e stop-limit
Uma ordem stop fica adormecida até o gatilho ser atingido e então se torna uma ordem a mercado. Já uma stop-limit se torna uma ordem limitada. A primeira garante a ativação, não o preço. A segunda limita o preço, mas pode deixar você sem execução exatamente quando o mercado dá um gap, uma característica desagradável para um stop de proteção. O lugar onde o stop fica também importa: um stop mantido na plataforma sobrevive à sua desconexão, enquanto um stop simulado no seu próprio software não.
Time in force: a lista completa
| Instrução | FIX 59 | Tempo de vida | Execução parcial? | Uso típico |
|---|---|---|---|---|
| Day | 0 | Até o fim da sessão | Sim | Cotações passivas durante uma sessão definida |
| GTC (Good Till Cancel) | 1 | Até ser cancelada | Sim | Entradas no livro, ordens take-profit e stop |
| IOC (Immediate or Cancel) | 3 | Executa de imediato, o restante é cancelado | Sim | Tomar liquidez quando qualquer parte do tamanho ajuda |
| FOK (Fill or Kill) | 4 | Tamanho integral de imediato ou nada | Não | Entradas tudo ou nada e pernas de tamanho fixo |
| GTD (Good Till Date) | 6 | Até um horário especificado (tag 126 ou 432) | Sim | Cotações com vencimento rígido, por exemplo antes da divulgação de uma notícia |
Os valores são da especificação FIX 4.4. As plataformas normalmente suportam apenas parte da lista, e algumas restringem um TIF a determinados tipos de ordem, portanto as regras de operação do seu corretor prevalecem sobre qualquer tabela em um artigo.
IOC vs FOK vs a mercado: um livro de ofertas, três resultados
Vamos a um caso concreto. Um algoritmo quer comprar 2,000,000 de EURUSD. O melhor ask é 1.08500, e este é o lado visível da oferta quando a ordem chega:
| Preço ask | Tamanho disponível | Acumulado |
|---|---|---|
| 1.08500 | 500,000 | 500,000 |
| 1.08501 | 500,000 | 1,000,000 |
| 1.08503 | 1,000,000 | 2,000,000 |
| 1.08506 | 2,000,000 | 4,000,000 |

| Instrução | Executado | Preço médio | Custo em relação ao melhor ask | Resultado |
|---|---|---|---|---|
| A mercado, 2M | 2,000,000 | 1.085018 | 0.175 pip, cerca de $35 | Concluída, a um preço que você não escolheu |
| Limite 1.08502 IOC, 2M | 1,000,000 | 1.085005 | 0.05 pip, cerca de $5 | Metade do tamanho, 1M cancelado |
| Limite 1.08502 FOK, 2M | 0 | Nenhum | $0 | Cancelada: apenas 1M no limite ou abaixo dele |
| Limite 1.08503 FOK, 2M | 2,000,000 | 1.085018 | 0.175 pip, cerca de $35 | Executada: o limite era amplo o suficiente |
A última linha é a mais sutil. Um décimo de pip a mais transformou a FOK de nenhuma operação em execução total, a uma média melhor do que o seu limite. FOK não significa “apertado”. Significa “todo o tamanho precisa caber abaixo deste preço neste momento”. A IOC e a FOK com o mesmo limite enxergam a mesma liquidez. Elas diferem apenas no que fazem quando ela não é suficiente.
Também não existe uma instrução universalmente mais barata. A IOC de $5 parece uma pechincha diante da ordem a mercado de $35, mas entregou metade da posição. Se o 1M restante tiver de ser comprado depois a um preço pior, a comparação muda. Esse custo do tamanho que faltou é o tema do restante deste guia.
Como as ordens aparecem no FIX
Em uma conexão FIX API, você declara cada instrução explicitamente em uma mensagem NewOrderSingle (35=D). Simplificada aos campos que importam, a ordem IOC do exemplo fica assim:
Troque 59=3 por 59=4 e a mesma ordem passa a ser FOK. Remova o preço e defina 40=1 e ela será uma ordem a mercado. O cabeçalho, o checksum, os timestamps e os campos de conta foram omitidos aqui, e o formato do símbolo varia conforme a plataforma: algumas usam IDs numéricos de símbolo.
| Tag | Campo | Valores que você vai encontrar |
|---|---|---|
| 40 | OrdType | 1 A mercado, 2 Limitada, 3 Stop, 4 Stop-limit, D Previamente cotada |
| 59 | TimeInForce | 0 Day, 1 GTC, 3 IOC, 4 FOK, 6 GTD |
| 110 | MinQty | Quantidade mínima que precisa ser executada, quando suportada |
| 150 | ExecType | 0 Nova, F Negócio, 4 Cancelada, 8 Rejeitada, C Expirada |
| 39 | OrdStatus | 0 Nova, 1 Parcialmente executada, 2 Executada, 4 Cancelada, 8 Rejeitada, C Expirada |
| 14 / 151 | CumQty / LeavesQty | Executado até agora / ainda em aberto. LeavesQty 0 significa que a ordem terminou |
| 31 / 32 / 6 | LastPx / LastQty / AvgPx | Preço e tamanho desta execução / média de todas as execuções |
A parte difícil não é enviar a ordem, e sim ler a resposta. Uma única IOC pode gerar uma sequência de ExecutionReports (35=8), e a forma como o restante é informado depende da plataforma.

Algumas plataformas enviam uma confirmação adicional (150=0) antes das execuções. Outras entregam uma única execução agregada. Sessões FIX 4.2 usam valores de ExecType diferentes para execuções (1 e 2) em relação ao FIX 4.3 e posteriores (F). Por isso, um handler robusto se baseia em CumQty, LeavesQty e OrdStatus, não em um número fixo de mensagens. O passo a passo do protocolo FIX explica a camada de sessão por trás dessas mensagens.
Liquidez full-amount e last look: por que o forex é diferente
As explicações voltadas ao mercado de ações pressupõem um livro central de ordens limitadas em que a oferta exibida é firme. As plataformas de forex podem se comportar de forma diferente em dois aspectos que afetam diretamente IOC e FOK.
Liquidez sweepable vs full-amount. Em um livro sweepable, uma ordem pode tomar vários níveis de vários provedores, como no exemplo acima. Na precificação full-amount, o provedor cota um único preço para todo o tamanho e as faixas não são somáveis, portanto uma FOK de 2M deve ser comparada com a faixa de 2M, e não com a soma das cotações de 1M. Uma mesma exibição de profundidade pode, assim, significar coisas diferentes.
Last look. Quando um provedor aplica last look, sua ordem é uma solicitação que ele ainda pode rejeitar após uma breve retenção. Uma FOK pode ser rejeitada mesmo que o livro exibisse tamanho suficiente no momento do envio, e uma IOC pode voltar menor do que o exibido. O FX Global Code (o código global de conduta do mercado de câmbio) pede que os provedores que usam last look divulguem essa prática aos clientes, portanto solicite essa divulgação. As rejeições de last look só aparecem no seu log se você as registrar. A mecânica é explicada no nosso guia sobre execução do corretor, A-book, B-book e last look.
Onde colocar o limite: um modelo com números
Em uma IOC ou FOK, o parâmetro principal não é o TIF, e sim o preço limite. Se você o colocar na cotação atual, a maioria dos sinais não será executada. Sem limite algum, as piores execuções consomem a vantagem. Entre esses extremos existe uma resposta calculável.
Considere um sinal de curta duração com vantagem esperada de 1.2 pips após comissões, medida a partir do preço do sinal. Entre o sinal e a chegada à plataforma, o preço se move. Suponha dois regimes: em 80% dos casos o preço deriva cerca de 0.2 pip contra você (desvio-padrão de 0.3 pip) e, em 20%, um movimento rápido o leva a cerca de 2 pips de distância (desvio-padrão de 1 pip). Esses dados são ilustrativos. Na prática, você os estima a partir do seu próprio log de ordens.

| Tolerância do limite em relação ao preço do sinal | Taxa de execução | Líquido médio por execução | Líquido esperado por sinal |
|---|---|---|---|
| 0 pip (limite no preço do sinal) | 20.7% | 1.38 pips | 0.29 pip |
| 0.3 pip | 51.3% | 1.18 pips | 0.61 pip |
| 0.6 pip | 74.3% | 1.05 pips | 0.78 pip |
| 1.2 pips (igual à vantagem) | 84.2% | 0.98 pip | 0.82 pip |
| 2.0 pips | 90.0% | 0.89 pip | 0.80 pip |
| Sem limite (ordem a mercado) | 100% | 0.64 pip | 0.64 pip |
Três conclusões valem muito além deste exemplo:
- O melhor limite é o preço de equilíbrio, não a cotação. Vale a pena aceitar qualquer execução que ainda deixe lucro esperado positivo. Neste modelo, o máximo fica exatamente onde a tolerância é igual à vantagem, porque a execução marginal seguinte rende zero.
- A curva é plana perto do topo. Entre 0.8 e 2 pips, o lucro esperado quase não muda. Você não precisa de uma tolerância precisa, mas precisa ter uma.
- O preço médio de execução é uma meta enganosa. O limite mais apertado tem o melhor preço por execução (1.38 pips) e o pior resultado por sinal (0.29 pip), porque 79% dos sinais nunca são negociados.
O modelo ignora os efeitos de fila e pressupõe que todo o tamanho é executado sempre que o limite é alcançado. Para ordens maiores, repita o cálculo com a sua profundidade real, já que o limite também determina quanto tamanho pode ser executado. Verifique as premissas com dados: nosso guia sobre a diferença entre backtests e execução real mostra como incluir o tempo de execução em um teste.
Como lidar com execuções parciais sem criar novos riscos
Uma execução parcial não é um erro, mas é um novo estado para o qual o algoritmo precisa ter uma regra. A FOK evita esse estado na entrada; a IOC transfere o problema para a sua lógica. Defina a política antes de entrar em produção:
| Política para o restante | Quando se aplica | Risco a controlar |
|---|---|---|
| Aceitar e gerenciar o que foi executado | Entradas com vantagem independente do tamanho | Posição pequena demais para cobrir os custos fixos |
| Reenviar o restante a um novo preço | Sinal ainda válido, vantagem ainda acima da tolerância | Perseguir o preço. Limite as tentativas e reavalie a vantagem a cada uma |
| Fazer hedge ou completar em outra plataforma | Operações com múltiplas pernas | Passos de lote diferentes e uma segunda chance de não execução |
| Zerar a parte executada | Uma execução abaixo do tamanho viável | Pagar o spread duas vezes |
Operações com duas pernas exigem o maior cuidado. Suponha que uma operação com hedge compre 2M na plataforma A com IOC e venda na plataforma B. Se A executar 1M e o algoritmo ainda vender os 2M planejados, ele ficará com 1M vendido em aberto. A cerca de $100 por pip por milhão no EURUSD, um movimento de 10 pips contra essa posição custa $1,000, o que supera facilmente a vantagem de muitas operações. A regra é simples: dimensione a segunda perna pelo CumQty da primeira, nunca pela quantidade solicitada.
Converta também para a grade de tamanhos da segunda plataforma. Se a primeira perna executar 1,370,000 e a plataforma B aceitar passos de 100,000, você pode fazer hedge de 1,400,000 ou 1,300,000, mas não do tamanho exato. Defina também uma regra para esse resíduo e trate qualquer resíduo sem hedge como um limite de risco.
A FOK na primeira perna elimina a diferença de tamanho, mas gera mais eventos sem operação. A FOK na segunda perna costuma ser uma má escolha: com a primeira perna já executada, um hedge cancelado deixa você totalmente exposto. É exatamente nessa segunda perna que vale a pena pagar pela certeza de execução.
Qual ordem para qual estratégia

| Situação | Padrão razoável | Justificativa |
|---|---|---|
| Entrada de arbitragem de latência | IOC limitada no preço de equilíbrio | A vantagem se dissipa em milissegundos; uma execução parcial ainda rende, e o limite corta a cauda |
| Primeira perna de um par com hedge | FOK limitada ou IOC com hedge por CumQty | A FOK protege o dimensionamento; a IOC ganha taxa de execução, mas exige uma lógica melhor |
| Segunda perna, com a primeira já executada | A mercado ou IOC ampla | Ficar sem hedge é o risco maior |
| Entrada baseada em notícias | IOC limitada, tamanho reduzido | Spreads e profundidade mudam rapidamente, e uma ordem a mercado não tem teto |
| Saída de emergência ou stop-out | A mercado ou IOC ampla, repetida até zerar | Certeza em primeiro lugar; a FOK pode deixar a posição aberta |
| Operações em pares ou estatísticas | IOC limitada ou limitada passiva de curta duração | O período de manutenção é mais longo, então o spread pago importa mais do que a velocidade |
| Captura de spread e rebalanceamento | Limitada passiva, Day ou GTD | Você é pago para esperar e precisa cancelar antes de notícias e do rollover |
A execução também depende do momento. Perto do rollover e de notícias, os spreads se alargam e a profundidade diminui, então um limite que funciona bem ao meio-dia em Londres pode falhar ou ficar caro nessas janelas. Faça a tolerância e o tamanho dependerem do spread atual, em vez de fixá-los para o dia inteiro. Uma análise mais aprofundada das estratégias sensíveis à velocidade está disponível no nosso guia sobre arbitragem de latência.
Sete passos para configurar a execução de ordens
Erros comuns no tratamento automatizado de ordens
- Presumir que o tamanho solicitado foi executado. A posição deve vir dos relatórios de execução, não da ordem que você enviou.
- Tratar uma FOK cancelada como erro de sistema. É um resultado normal. Alertar a cada ocorrência ensina você a ignorar alertas; alerte sobre a taxa.
- Repetir o mesmo preço em loop. Se o preço se moveu, a nova tentativa também falha, e tentativas rápidas podem violar os limites de mensagens. Reprecifique ou pare.
- Ignorar o estado desconhecido. Quando nenhuma resposta chega, a ordem ainda pode estar ativa ou executada. Consulte-a com um OrderStatusRequest (
35=H) ou reconcilie a posição após reconectar, antes de enviar uma substituta. - Reutilizar valores de ClOrdID. Uma tag 11 exclusiva para cada ordem, incluindo cada nova tentativa, é o que torna a reconciliação possível.
- Usar preços defasados para o limite. Um limite calculado a partir de uma cotação atrasada é apertado demais ou generoso demais. Um feed de preços rápido dá sentido à tolerância.
- Testar com execuções perfeitas. Um backtest que executa toda ordem integralmente na cotação não consegue distinguir a mercado, IOC e FOK. Modele a profundidade e as rejeições ou faça forward test com tamanho pequeno.
- Levar configurações de uma plataforma para outra. Uma tolerância ajustada em um corretor diz pouco sobre outro, porque profundidade, last look e latência são todos diferentes.
O que medir
Escolher um tipo de ordem é uma questão empírica, e somente um log completo pode respondê-la. Os relatórios devem abranger sinais e tentativas, não apenas operações concluídas.
| Métrica | Definição | O que ela indica |
|---|---|---|
| Taxa de preenchimento | Quantidade executada / quantidade solicitada | Muito baixa indica limite apertado ou profundidade reduzida |
| Taxa de rejeição | Ordens rejeitadas ou canceladas / ordens enviadas | Uma alta repentina sugere mudanças na liquidez ou no corretor |
| Slippage | Preço de execução menos preço de referência no sinal, com sinal positivo ou negativo | Custo de execução por operação executada |
| Tempo de ida e volta | Do envio da ordem ao primeiro relatório de execução | Se a plataforma está ficando mais lenta, por horário do dia |
| Líquido por sinal | Resultado total / todos os sinais, incluindo os perdidos | O número que deve orientar a tolerância |
Separe esses números por símbolo, plataforma, hora e tipo de ordem e compare os resultados antes e depois de cada mudança. O SharpTrader mostra ordens e estatísticas de desempenho com PnL, slippage e tempo de execução, uma base prática para esse tipo de análise. Os tipos de ordem e os valores de TIF disponíveis em cada configuração dependem do conector e do corretor, portanto confirme-os para a sua própria conta.
Construa a execução em torno dos seus próprios dados
O SharpTrader se conecta a corretores por FIX API e outros protocolos, executa estratégias de arbitragem e de não arbitragem e registra o slippage e o tempo de execução de cada ordem. Para ajustar os parâmetros com base nesses dados, o SharpTrader Optimizer automatiza a busca.
Scanner de arbitragem grátis + curso curto por e-mail
Receba o link do scanner grátis e alguns e-mails curtos e práticos do Boris: o que uma diferença de preço realmente significa depois dos custos, como testar uma estratégia antes de arriscar dinheiro real e quais ferramentas combinam com o seu mercado. Sem exageros. Os e-mails são enviados em inglês.
Perguntas frequentes
Qual é a diferença entre IOC e FOK?
Ambas são executadas de imediato e nunca ficam no livro. A IOC aceita execução parcial e cancela o restante não executado. A FOK exige que toda a quantidade seja executada de uma vez; caso contrário, a ordem inteira é cancelada e nada é negociado.
A FOK é melhor do que a IOC?
Nenhuma é melhor de modo geral. A FOK é adequada a operações em que uma posição parcial é inútil ou complica um hedge. A IOC costuma ser negociada com mais frequência, pois parte do tamanho é executada, mas seu algoritmo precisa lidar corretamente com execuções parciais.
Uma ordem FOK pode ser executada parcialmente?
Não. Por definição, uma ordem FOK é executada integralmente ou não é executada. Se você vir uma execução parcial, a ordem não foi uma FOK verdadeira naquela plataforma, então verifique como o corretor mapeia a instrução.
O que acontece com a parte não executada de uma ordem IOC?
Ela é cancelada imediatamente e nunca fica no livro. No FIX, você recebe um relatório de execução que encerra a ordem, normalmente como cancelada (Canceled) ou expirada (Expired), conforme a plataforma, com LeavesQty igual a 0.
Uma ordem a mercado é o mesmo que uma ordem IOC?
Não exatamente. Uma ordem a mercado não tem limite de preço, enquanto uma IOC normalmente tem. Muitas plataformas processam ordens a mercado com comportamento de IOC ou FOK, então o tempo de vida pode coincidir, mas somente um limite protege o preço.
Quais são os valores FIX para IOC e FOK?
No campo TimeInForce, tag 59, IOC é 3 e FOK é 4. O tipo de ordem é definido separadamente na tag 40, em que 1 é a mercado e 2 é limitada.
Todos os corretores de forex suportam IOC e FOK?
Não. O suporte depende do corretor, da plataforma e do tipo de conexão. As conexões FIX API costumam oferecer mais controle, mas cada plataforma publica a sua própria lista de combinações aceitas de tipo de ordem e time in force.
Este artigo tem caráter educacional e não constitui recomendação de investimento. O livro de ofertas e o modelo são exemplos ilustrativos, não resultados de trading. Operar no mercado de câmbio envolve risco significativo de perda.