IOC vs FOK, órdenes a mercado y limitadas: tipos de órdenes para la ejecución algorítmica en forex 04/11/2026 – Publicado en: Arbitrage Software, Forex trading
IOC, FOK, a mercado o limitada: cómo elegir la orden adecuada para cada operación
Un tipo de orden es una decisión sobre qué prefieres sufrir: un precio peor, una ejecución menor o ninguna ejecución. Esta guía muestra cómo se comporta cada instrucción en el libro de órdenes, en los mensajes FIX y bajo last look, con cálculos prácticos para un algoritmo que tiene que elegir en milisegundos.
Respuesta corta: IOC vs FOK. Una orden Immediate-or-Cancel (IOC) toma todo lo disponible en ese momento a tu precio o mejor y cancela el resto, por lo que es posible una ejecución parcial. Una orden Fill-or-Kill (FOK) debe ejecutarse por completo de inmediato o se cancela en su totalidad: o lo obtienes todo o nada. Usa IOC cuando cualquier parte del tamaño te sea útil y FOK cuando una posición parcial sea peor que ninguna.
- El tipo de orden y el time in force son dos decisiones
- Órdenes a mercado en forex
- Órdenes limitadas, limitadas agresivas y stop
- Time in force: IOC, FOK, GTC, Day, GTD
- IOC vs FOK vs a mercado: un libro de órdenes, tres resultados
- Cómo se ven las órdenes en FIX
- Liquidez full-amount y last look
- Dónde colocar el límite: un modelo con números
- Cómo gestionar las ejecuciones parciales
- Qué orden para qué estrategia
- Siete pasos para configurar la ejecución
- Errores comunes
- Qué medir
- Preguntas frecuentes
El tipo de orden y el time in force son dos decisiones separadas
La mayoría de los glosarios enumeran a mercado, limitada, stop, IOC y FOK como si fueran cinco opciones del mismo menú. No lo son. Detrás de ellas hay dos preguntas independientes, y un algoritmo tiene que responder a ambas en cada orden:
- ¿Qué precio estoy dispuesto a aceptar? Ese es el tipo de orden: a mercado (cualquier precio), limitada (este precio o mejor), stop (se activa cuando un disparador se negocia o se cotiza).
- ¿Cuánto tiempo puede seguir viva la orden? Ese es el time in force, o TIF: de inmediato (IOC, FOK), hasta el final de la sesión (Day), hasta que se cancele (GTC) o hasta una hora fijada (GTD).
Así que IOC y FOK no son alternativas a una orden limitada. Son duraciones que se le asignan. “Limit IOC” y “Limit FOK” son las dos instrucciones agresivas más habituales en el forex algorítmico, y el protocolo FIX mantiene ambas decisiones en campos separados: OrdType (tag 40) y TimeInForce (tag 59).
Órdenes a mercado en forex: qué significa realmente “a mercado”
Una orden a mercado dice: ejecútame ahora, el precio es secundario. No tiene límite, así que ofrece la mayor certeza de ejecución y ninguna protección sobre el precio que obtienes. Si el libro se ha movido o está poco profundo, la orden va consumiendo los niveles disponibles hasta completar el tamaño. Ese coste es el slippage, que tratamos a fondo en nuestra guía sobre cómo medir y reducir el slippage en forex.
El forex añade dos detalles que las explicaciones basadas en bolsa pasan por alto:
- No existe un único libro central. Tu bróker o ECN muestra un flujo agregado de varios proveedores de liquidez. “A mercado” significa al mejor precio que tu centro de ejecución puede obtener de ese flujo, no a un precio de mercado universal.
- Una orden a mercado sigue teniendo una duración implícita. Muchos centros de ejecución tratan internamente las órdenes a mercado como IOC o FOK: ejecutan lo que se puede ahora e informan del resto. Algunos te permiten añadir una desviación máxima, lo que en la práctica convierte la orden en limitada. No des nada por supuesto; lee la especificación del centro de ejecución.
El papel práctico de una orden a mercado en un algoritmo es limitado. Tiene sentido cuando no operar es el peligro mayor, por ejemplo al cerrar una posición que ha perdido su cobertura.
Órdenes limitadas, limitadas agresivas y stop
Órdenes limitadas pasivas
Una orden limitada colocada lejos del precio actual se queda en el libro y espera. Una compra limitada por debajo del ask no toma liquidez; la ofrece. Puedes ganar el spread en lugar de pagarlo, pero asumes el riesgo de cola y la selección adversa: las órdenes pasivas tienden a ejecutarse justo cuando el mercado las atraviesa. Las órdenes pasivas suelen combinarse con Day, GTC o GTD.
Órdenes limitadas agresivas
Una compra limitada con un precio igual o superior al ask actual se ejecuta de inmediato, como una orden a mercado, pero no puede llenarse más allá de su límite. Esta “marketable limit”, o limitada agresiva, es el caballo de batalla de la ejecución automatizada. Combinada con IOC significa: toma liquidez ahora, hasta este precio, y no dejes nada en el libro.
La cuestión de la mejora de precio se suele malinterpretar. Un límite es el peor precio aceptable, no el precio de ejecución. Si compras con un límite en 1.08510 y el ask está en 1.08502, deberías recibir 1.08502 o los niveles siguientes hasta tu límite.
Órdenes stop y stop-limit
Una orden stop permanece inactiva hasta que se alcanza el disparador y entonces se convierte en una orden a mercado. Una stop-limit, en cambio, se convierte en una orden limitada. La primera garantiza la activación, no el precio. La segunda pone un tope al precio, pero puede dejarte sin ejecutar justo cuando el mercado da un gap, una propiedad desagradable para un stop de protección. También importa dónde reside el stop: un stop alojado en el centro de ejecución sobrevive a tu desconexión; uno simulado en tu propio software, no.
Time in force: la lista completa
| Instrucción | FIX 59 | Duración | ¿Ejecución parcial? | Uso típico |
|---|---|---|---|---|
| Day | 0 | Hasta que termina la sesión | Sí | Cotizaciones pasivas durante una sesión definida |
| GTC (Good Till Cancel) | 1 | Hasta que se cancela | Sí | Entradas en el libro, órdenes take-profit y stop |
| IOC (Immediate or Cancel) | 3 | Se ejecuta al instante, el resto se cancela | Sí | Tomar liquidez cuando cualquier parte del tamaño ayuda |
| FOK (Fill or Kill) | 4 | Tamaño completo al instante o nada | No | Entradas de todo o nada y patas de tamaño fijo |
| GTD (Good Till Date) | 6 | Hasta una hora especificada (tag 126 o 432) | Sí | Cotizaciones con vencimiento estricto, por ejemplo antes de la publicación de una noticia |
Los valores proceden de la especificación FIX 4.4. Los centros de ejecución normalmente solo admiten una parte de la lista, y algunos restringen un TIF a determinados tipos de orden, así que las reglas de operación de tu bróker prevalecen sobre cualquier tabla de un artículo.
IOC vs FOK vs a mercado: un libro de órdenes, tres resultados
Veamos un caso concreto. Un algoritmo quiere comprar 2,000,000 de EURUSD. El mejor ask es 1.08500, y este es el lado visible de la oferta cuando llega la orden:
| Precio ask | Tamaño disponible | 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 |

| Instrucción | Ejecutado | Precio medio | Coste frente al mejor ask | Resultado |
|---|---|---|---|---|
| A mercado, 2M | 2,000,000 | 1.085018 | 0.175 pip, unos $35 | Completada, a un precio que no elegiste |
| Límite 1.08502 IOC, 2M | 1,000,000 | 1.085005 | 0.05 pip, unos $5 | La mitad del tamaño, 1M cancelado |
| Límite 1.08502 FOK, 2M | 0 | Nada | $0 | Cancelada: solo 1M en el límite o por debajo |
| Límite 1.08503 FOK, 2M | 2,000,000 | 1.085018 | 0.175 pip, unos $35 | Ejecutada: el límite era lo bastante amplio |
La última fila es la más sutil. Una décima de pip más convirtió la FOK de ninguna operación en una ejecución completa, a una media mejor que su límite. FOK no significa “ajustado”. Significa “todo el tamaño debe caber por debajo de este precio en este momento”. La IOC y la FOK con el mismo límite ven la misma liquidez. Solo se diferencian en lo que hacen cuando no es suficiente.
Tampoco existe una instrucción universalmente más barata. La IOC de $5 parece una ganga frente a la orden a mercado de $35, pero entregó la mitad de la posición. Si el 1M restante hay que comprarlo después a un precio peor, la comparación cambia. Ese coste del tamaño que falta es el tema del resto de esta guía.
Cómo se ven las órdenes en FIX
En una conexión FIX API declaras cada instrucción de forma explícita en un mensaje NewOrderSingle (35=D). Simplificada a los campos que importan, la orden IOC del ejemplo queda así:
Cambia 59=3 por 59=4 y la misma orden pasa a ser FOK. Quita el precio y pon 40=1 y será una orden a mercado. Aquí se omiten la cabecera, el checksum, las marcas de tiempo y los campos de cuenta, y el formato del símbolo varía según el centro de ejecución: algunos usan identificadores numéricos.
| Tag | Campo | Valores que encontrarás |
|---|---|---|
| 40 | OrdType | 1 A mercado, 2 Limitada, 3 Stop, 4 Stop-limit, D Previamente cotizada |
| 59 | TimeInForce | 0 Day, 1 GTC, 3 IOC, 4 FOK, 6 GTD |
| 110 | MinQty | Cantidad mínima que debe ejecutarse, donde esté disponible |
| 150 | ExecType | 0 Nueva, F Operación, 4 Cancelada, 8 Rechazada, C Expirada |
| 39 | OrdStatus | 0 Nueva, 1 Parcialmente ejecutada, 2 Ejecutada, 4 Cancelada, 8 Rechazada, C Expirada |
| 14 / 151 | CumQty / LeavesQty | Ejecutado hasta ahora / aún abierto. LeavesQty 0 significa que la orden ha terminado |
| 31 / 32 / 6 | LastPx / LastQty / AvgPx | Precio y tamaño de esta ejecución / media de todas las ejecuciones |
Lo difícil no es enviar la orden, sino leer la respuesta. Una sola IOC puede generar una secuencia de ExecutionReports (35=8), y la forma de informar del resto depende del centro de ejecución.

Algunos centros de ejecución envían una confirmación adicional (150=0) antes de las ejecuciones. Otros entregan una única ejecución agregada. Las sesiones FIX 4.2 usan valores de ExecType para las ejecuciones (1 y 2) distintos de los de FIX 4.3 y posteriores (F). Por eso, un handler robusto se basa en CumQty, LeavesQty y OrdStatus, no en un número fijo de mensajes. La explicación paso a paso del protocolo FIX describe la capa de sesión que hay debajo de estos mensajes.
Liquidez full-amount y last look: por qué el forex es diferente
Las explicaciones centradas en el mercado de acciones presuponen un libro central de órdenes limitadas en el que la oferta mostrada es firme. Los centros de ejecución de forex pueden comportarse de otra forma en dos aspectos que afectan directamente a IOC y FOK.
Liquidez sweepable vs full-amount. En un libro sweepable, una orden puede tomar varios niveles de varios proveedores, como en el ejemplo anterior. En los precios full-amount, un proveedor cotiza un solo precio para todo el tamaño y los tramos no se suman, por lo que una FOK de 2M debe compararse con el tramo de 2M, no con la suma de las cotizaciones de 1M. Una misma visualización de profundidad puede, por tanto, significar cosas distintas.
Last look. Cuando un proveedor aplica last look, tu orden es una solicitud que todavía puede rechazar tras una breve retención. Una FOK puede rechazarse aunque el libro mostrara tamaño suficiente en el momento del envío, y una IOC puede volver con menos tamaño del mostrado. El FX Global Code (el código global de conducta del mercado de divisas) pide a los proveedores que usan last look que informen de esta práctica a sus clientes, así que solicita esa información. Los rechazos por last look solo aparecen en tu log si los registras. La mecánica se explica en nuestra guía sobre ejecución del bróker, A-book, B-book y last look.
Dónde colocar el límite: un modelo con números
En una IOC o FOK, el parámetro clave no es el TIF, sino el precio límite. Si lo pones en la cotización actual, la mayoría de las señales no se ejecutarán. Si no pones límite, las peores ejecuciones se comen la ventaja. Entre esos extremos hay una respuesta calculable.
Considera una señal de corta duración con una ventaja esperada de 1.2 pips después de comisiones, medida desde el precio de la señal. Entre la señal y la llegada al centro de ejecución, el precio se mueve. Supón dos regímenes: en el 80% de los casos el precio deriva unos 0.2 pip en tu contra (desviación estándar de 0.3 pip) y en el 20% un movimiento rápido lo aleja unos 2 pips (desviación estándar de 1 pip). Estos datos son ilustrativos. En la práctica, los estimas a partir de tu propio log de órdenes.

| Tolerancia del límite desde el precio de la señal | Tasa de ejecución | Neto medio por ejecución | Neto esperado por señal |
|---|---|---|---|
| 0 pip (límite en el precio de la señal) | 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 a la ventaja) | 84.2% | 0.98 pip | 0.82 pip |
| 2.0 pips | 90.0% | 0.89 pip | 0.80 pip |
| Sin límite (orden a mercado) | 100% | 0.64 pip | 0.64 pip |
Tres conclusiones son válidas mucho más allá de este ejemplo:
- El mejor límite es el precio de equilibrio, no la cotización. Merece la pena aceptar cualquier ejecución que aún deje un beneficio esperado positivo. En este modelo, el máximo está exactamente donde la tolerancia es igual a la ventaja, porque la siguiente ejecución marginal gana cero.
- La curva es plana cerca del máximo. Entre 0.8 y 2 pips, el beneficio esperado apenas cambia. No necesitas una tolerancia precisa, pero sí necesitas tener una.
- El precio medio de ejecución es un objetivo engañoso. El límite más ajustado tiene el mejor precio por ejecución (1.38 pips) y el peor resultado por señal (0.29 pip), porque el 79% de las señales nunca llega a negociarse.
El modelo ignora los efectos de cola y supone que todo el tamaño se ejecuta siempre que se alcanza el límite. Para órdenes mayores, repite el cálculo con tu profundidad real, ya que el límite también decide cuánto tamaño puede ejecutarse. Comprueba las hipótesis con datos: nuestra guía sobre la brecha entre backtests y ejecución real muestra cómo incorporar el tiempo de ejecución a una prueba.
Cómo gestionar las ejecuciones parciales sin crear nuevos riesgos
Una ejecución parcial no es un error, pero sí un estado nuevo para el que el algoritmo debe tener una regla. La FOK evita este estado en la entrada; la IOC traslada el problema a tu lógica. Decide la política antes de pasar a producción:
| Política para el resto | Cuándo encaja | Riesgo a controlar |
|---|---|---|
| Aceptar y gestionar lo ejecutado | Entradas con una ventaja independiente del tamaño | Posición demasiado pequeña para cubrir los costes fijos |
| Reenviar el resto a un nuevo precio | La señal sigue siendo válida y la ventaja sigue por encima de la tolerancia | Perseguir el precio. Limita los reintentos y vuelve a comprobar la ventaja cada vez |
| Cubrir o completar en otro centro de ejecución | Operaciones de varias patas | Pasos de lote distintos y una segunda posibilidad de no ejecución |
| Cerrar la parte ejecutada | Una ejecución por debajo del tamaño viable | Pagar el spread dos veces |
Las operaciones de dos patas requieren el mayor cuidado. Supón que una operación cubierta compra 2M en el centro A con IOC y vende en el centro B. Si A ejecuta 1M y el algoritmo sigue vendiendo los 2M previstos, queda con 1M corto abierto. A unos $100 por pip por millón en EURUSD, un movimiento de 10 pips en contra de esa posición cuesta $1,000, lo que supera fácilmente la ventaja de muchas operaciones. La regla es simple: dimensiona la segunda pata a partir del CumQty de la primera, nunca de la cantidad solicitada.
Convierte también a la cuadrícula de tamaños del segundo centro. Si la primera pata ejecuta 1,370,000 y el centro B acepta pasos de 100,000, puedes cubrir 1,400,000 o 1,300,000, pero no el tamaño exacto. Define también una regla para ese residuo y trata cualquier residuo sin cubrir como un límite de riesgo.
La FOK en la primera pata elimina el desajuste de tamaño, pero genera más casos sin operación. La FOK en la segunda pata suele ser una mala elección: con la primera pata ya ejecutada, una cobertura cancelada te deja totalmente expuesto. Es justo en esa segunda pata donde merece la pena pagar por la certeza de ejecución.
Qué orden para qué estrategia

| Situación | Opción razonable por defecto | Justificación |
|---|---|---|
| Entrada de arbitraje de latencia | IOC limitada en el precio de equilibrio | La ventaja se desvanece en milisegundos; una ejecución parcial sigue ganando y el límite corta la cola |
| Primera pata de un par cubierto | FOK limitada o IOC con cobertura según CumQty | La FOK protege el dimensionamiento; la IOC gana tasa de ejecución, pero necesita una lógica mejor |
| Segunda pata, con la primera ya ejecutada | A mercado o IOC amplia | Quedarse sin cobertura es el riesgo mayor |
| Entrada basada en noticias | IOC limitada, tamaño reducido | Los spreads y la profundidad cambian rápido, y una orden a mercado no tiene techo |
| Salida de emergencia o stop-out | A mercado o IOC amplia, repetida hasta quedar sin posición | La certeza es lo primero; la FOK puede dejar la posición abierta |
| Operaciones de pares o estadísticas | IOC limitada o limitada pasiva de corta duración | El periodo de mantenimiento es más largo, así que el spread pagado importa más que la velocidad |
| Captura de spread y reequilibrio | Limitada pasiva, Day o GTD | Te pagan por esperar y debes cancelar antes de las noticias y del rollover |
La ejecución también depende del momento. En torno al rollover y las noticias, los spreads se amplían y la profundidad disminuye, de modo que un límite que funciona bien al mediodía en Londres puede fallar o encarecerse en esas ventanas. Haz que la tolerancia y el tamaño dependan del spread actual en lugar de fijarlos para todo el día. En nuestra guía sobre arbitraje de latencia encontrarás un análisis más profundo de las estrategias sensibles a la velocidad.
Siete pasos para configurar la ejecución de órdenes
Errores comunes en la gestión automatizada de órdenes
- Dar por hecho que se ejecutó el tamaño solicitado. La posición debe salir de los informes de ejecución, no de la orden que enviaste.
- Tratar una FOK cancelada como un error del sistema. Es un resultado normal. Generar una alerta por cada una te acostumbra a ignorar las alertas; mejor alerta sobre la tasa.
- Reintentar al mismo precio en bucle. Si el precio se ha movido, el reintento también falla, y los reintentos rápidos pueden superar los límites de mensajes. Cambia el precio o detente.
- Ignorar el estado desconocido. Cuando no llega respuesta, la orden puede seguir viva o estar ejecutada. Consúltala con un OrderStatusRequest (
35=H) o concilia la posición tras reconectar antes de enviar una de reemplazo. - Reutilizar valores de ClOrdID. Un tag 11 único para cada orden, incluido cada reintento, es lo que hace posible la conciliación.
- Usar precios obsoletos para el límite. Un límite calculado a partir de una cotización retrasada es demasiado ajustado o demasiado generoso. Un feed de precios rápido le da sentido a la tolerancia.
- Probar con ejecuciones perfectas. Un backtest que ejecuta cada orden por completo a la cotización no puede distinguir a mercado, IOC y FOK. Modela la profundidad y los rechazos, o haz forward testing con tamaño pequeño.
- Trasladar ajustes entre centros de ejecución. Una tolerancia ajustada en un bróker dice poco sobre otro, porque la profundidad, el last look y la latencia son distintos.
Qué medir
Elegir un tipo de orden es una cuestión empírica, y solo un log completo puede responderla. Los informes deben incluir señales e intentos, no solo operaciones completadas.
| Métrica | Definición | Qué te indica |
|---|---|---|
| Ratio de llenado | Cantidad ejecutada / cantidad solicitada | Si es muy bajo, el límite es ajustado o la profundidad es escasa |
| Tasa de rechazo | Órdenes rechazadas o canceladas / órdenes enviadas | Un aumento repentino apunta a cambios en la liquidez o en el bróker |
| Slippage | Precio de ejecución menos precio de referencia en la señal, con signo | Coste de ejecución por operación ejecutada |
| Tiempo de ida y vuelta | Del envío de la orden al primer informe de ejecución | Si el centro de ejecución se está ralentizando, por hora del día |
| Neto por señal | Resultado total / todas las señales, incluidas las perdidas | La cifra que debe guiar la tolerancia |
Desglosa estas cifras por símbolo, centro de ejecución, hora y tipo de orden, y compara los resultados antes y después de cada cambio. SharpTrader muestra órdenes y estadísticas de rendimiento con PnL, slippage y tiempo de ejecución, una base práctica para este tipo de revisión. Los tipos de orden y los valores de TIF disponibles en cada configuración dependen del conector y del bróker, así que confírmalos para tu propia cuenta.
Construye la ejecución en torno a tus propios datos
SharpTrader se conecta a brókers por FIX API y otros protocolos, ejecuta estrategias de arbitraje y de no arbitraje, y registra el slippage y el tiempo de ejecución de cada orden. Para ajustar los parámetros con esos datos, SharpTrader Optimizer automatiza la búsqueda.
Escáner de arbitraje gratis + curso breve por email
Recibe el enlace al escáner gratuito y algunos emails breves y prácticos de Boris: qué significa realmente una diferencia de precio después de costos, cómo probar una estrategia antes de arriesgar dinero real y qué herramientas se adaptan a tu mercado. Sin exageraciones. Los emails se envían en inglés.
Preguntas frecuentes
¿Cuál es la diferencia entre IOC y FOK?
Ambas se ejecutan de inmediato y nunca se quedan en el libro. La IOC acepta una ejecución parcial y cancela el resto no ejecutado. La FOK exige que toda la cantidad se ejecute de una vez; de lo contrario, se cancela la orden entera y no se negocia nada.
¿Es FOK mejor que IOC?
Ninguna es mejor en general. FOK es adecuada para operaciones en las que una posición parcial es inútil o complica una cobertura. IOC suele negociarse con más frecuencia, porque parte del tamaño se ejecuta, pero tu algoritmo debe gestionar correctamente las ejecuciones parciales.
¿Puede una orden FOK ejecutarse parcialmente?
No. Por definición, una orden FOK se ejecuta por completo o no se ejecuta en absoluto. Si ves una ejecución parcial, la orden no era una FOK real en ese centro de ejecución, así que comprueba cómo mapea el bróker la instrucción.
¿Qué ocurre con la parte no ejecutada de una orden IOC?
Se cancela de inmediato y nunca se queda en el libro. En FIX recibes un informe de ejecución que cierra la orden, normalmente como cancelada (Canceled) o expirada (Expired) según el centro de ejecución, con LeavesQty igual a 0.
¿Una orden a mercado es lo mismo que una orden IOC?
No exactamente. Una orden a mercado no tiene límite de precio, mientras que una IOC normalmente sí lo tiene. Muchos centros de ejecución procesan las órdenes a mercado con comportamiento IOC o FOK, así que la duración puede coincidir, pero solo un límite protege el precio.
¿Cuáles son los valores FIX de IOC y FOK?
En el campo TimeInForce, tag 59, IOC es 3 y FOK es 4. El tipo de orden se fija por separado en el tag 40, donde 1 es a mercado y 2 es limitada.
¿Todos los brókers de forex admiten IOC y FOK?
No. La compatibilidad depende del bróker, la plataforma y el tipo de conexión. Las conexiones FIX API suelen ofrecer más control, pero cada centro de ejecución publica su propia lista de combinaciones aceptadas de tipo de orden y time in force.
Este artículo es educativo y no constituye asesoramiento de inversión. El libro de órdenes y el modelo son ejemplos ilustrativos, no resultados de trading. Operar en el mercado de divisas conlleva un riesgo significativo de pérdida.