Tu log puede decir «orden enviada» y, aun así, la exposición de la cuenta no coincidir con la que el sistema esperaba. Para evitar que el cBot tome una decisión sobre una ficción, separa la intención de la orden de lo que ya se ejecutó.
Orden, deal y posición no son lo mismo
En cTrader, el deal refleja una ejecución. Una orden puede generar varios deals a precios distintos cuando no hay liquidez suficiente para ejecutar todo el volumen solicitado de una vez. La posición recoge la exposición que nace de esos deals; así lo explica la documentación de posiciones y deals de cTrader. Como referencia independiente del concepto general, FINRA señala que una orden de acciones puede ejecutarse solo en parte —o no ejecutarse— si no encuentra contrapartida que cumpla sus condiciones. No es una especificación de cTrader, sino una explicación del ciclo de ejecución en acciones. FINRA: ciclo de una operación
Por eso conviene que el estado del bot distinga entre la orden original, cada deal que el servidor confirma y la posición que muestra la cuenta. Una sola etiqueta de «orden completada» no basta para representar esas tres capas.
Una secuencia de conciliación para automatizar
Cuando llegue una actualización de ejecución, sigue el rastro antes de activar otra decisión:
- Vincula el evento con la orden que lo originó. Si la cantidad ejecutada todavía es menor que la solicitada, no vuelvas a mandar por defecto la solicitud completa.
- Añade cada deal confirmado una sola vez, guardando su identificador, volumen, precio y hora. Si recibes una notificación repetida, comprueba el registro existente antes de sumarla.
- Calcula qué parte sigue pendiente y mantenla separada de lo que ya se negoció.
- Contrasta el resultado con la posición de la cuenta. El tipo de cuenta importa: en hedging pueden convivir varias posiciones del mismo símbolo; en netting, los deals de ese símbolo modifican una exposición neta. cTrader detalla la diferencia entre ambas.
- Decide qué hacer solo cuando conozcas el estado confirmado: esperar a que siga activa, procesar una cancelación o expiración ya aceptada, o plantear otra orden por el volumen que corresponda.
Los campos concretos y los cambios de estado dependen de la integración que conectes. Mantén esa capa separada de las reglas de estrategia y contrástala con la documentación de órdenes de cTrader.
Cómo probar un llenado incompleto
En demo, plantea una secuencia hipotética: el sistema solicita Q, recibe un deal por A, y después otro por B mientras queda parte pendiente. El registro debe reflejar A y B, sin sumar dos veces un aviso duplicado ni repetir Q como si nada hubiera ocurrido. Prueba también una cancelación o expiración después de la primera ejecución: la exposición ya abierta no desaparece por cancelar el remanente.
Repite la comprobación con el tipo de cuenta que realmente usas. En netting, una operación nueva puede alterar la exposición neta que ya había en ese símbolo. En hedging, puede abrir o modificar otra posición. Contar posiciones, por sí solo, no te dice cuánto de una orden se ejecutó.
Para reconstruir una incidencia, enlaza la decisión del algoritmo con un registro de decisiones del cBot y con tu diario de slippage. Uno explica qué pretendía hacer el sistema; el otro ayuda a comparar las ejecuciones con su referencia.
El límite de una buena conciliación
Conciliar no obliga al mercado a completar una orden ni asegura un precio: una operación puede ejecutarse solo en parte o no llegar a ejecutarse si sus condiciones no encuentran contrapartida. Sí permite que el cBot trabaje con el estado observado de la cuenta, no con el tamaño que esperaba negociar. Comprueba los eventos y las posiciones en la versión de cTrader y el entorno de broker que tienes desplegados. FINRA describe esta limitación general para órdenes de acciones.