Que el precio cruce una raya no significa que tu orden se haya ejecutado allí. Un backtest fiable de órdenes pendientes en cTrader conserva por separado la señal, el envío, el trigger, el fill y la cancelación, y deja claro qué cotización y qué regla provocaron cada cambio.
La tesis cabe en una pregunta: ¿puedes reconstruir la vida de la orden sin mirar primero la curva de equity? Si el informe solo enseña una entrada final, falta la parte donde suelen colarse los fills imaginarios.
Entre la idea y la posición ocurren varias cosas
Una orden pendiente es una instrucción que espera una condición de mercado antes de poder convertirse en posición. Por eso no basta con guardar su precio objetivo.
La guía oficial de operaciones con cBots distingue órdenes stop, limit y stop-limit. No son tres nombres para el mismo toque:
- La limit pone un límite al precio aceptable de compra o venta.
- La stop queda lista para ejecutarse cuando se cumple su condición de trigger más allá del mercado actual.
- La stop-limit añade un rango de ejecución permitido después de activar el stop.
Una stop puede activarse y terminar ejecutada más allá del nivel durante un movimiento rápido. Una limit puede aparecer tocada dentro de una vela agregada sin que la cotización ejecutable ofrezca ese fill. La stop-limit incluso puede alcanzar su trigger y quedarse sin ejecución porque el mercado ya está fuera del rango admitido.
cTrader permite inspeccionar ese recorrido. Su referencia de PendingOrder incluye tipo, precio objetivo, vencimiento, método de trigger, rango de stop-limit, hora de envío y hora de la última modificación. Un test que no conserva datos equivalentes podrá mostrar el resultado, pero no justificarlo.
Primero intenta romper la simulación
Los casos incómodos sirven más que otra pasada por un histórico tranquilo. Prepara escenarios pequeños cuyo resultado puedas revisar a mano y obliga al motor a tomar una decisión.
Incluye, como mínimo, situaciones de este tipo:
- el mercado salta por encima del nivel de una stop;
- la misma vela contiene el trigger y la hora de cancelar;
- solo la cara no ejecutable de la cotización toca una limit;
- una stop-limit se activa cuando ya no queda precio dentro de su rango;
- la orden vence mientras el símbolo está cerrado;
- una modificación compite con el evento que habría producido el fill.
No estás estimando con qué frecuencia ocurrirá cada caso. Estás comprobando si el motor respeta su propia lógica. El mejor resultado posible es aburrido: cada transición aparece en el log y coincide con la regla escrita.
Si una vela OHLC contiene varios sucesos, quizá no conozcas su orden real. Ahí solo hay salidas honestas: utilizar datos más finos, declarar una prioridad conservadora o ejecutar las secuencias plausibles por separado. Elegir la secuencia que mejora el retorno convierte ausencia de datos en supuesto favorable.
La comparación entre backtesting al cierre de barra e intrabar explica la misma carencia desde la ruta del precio. Con órdenes pendientes se añade otra dificultad: además de saber por dónde pasó el mercado, necesitas saber en qué estado se encontraba la orden en ese instante.
El contrato de ejecución que debes fijar
El contrato de ejecución describe cómo avanza una orden simulada desde el envío hasta el fill, la cancelación o el vencimiento. Escríbelo antes de correr el cBot; una equity bonita no debería negociar las reglas contigo después.
| Parte del contrato | Decisión que queda registrada | Error que deja de esconderse |
|---|---|---|
| Envío | Momento de la señal, tipo, objetivo y volumen | La orden existe antes de conocerse la señal |
| Trigger | Bid, ask u otro método documentado | Se activa con la cara equivocada del precio |
| Fill | Precio disponible, spread, slippage y tratamiento de gaps | Aparece una ejecución que el mercado no ofreció |
| Protección | Momento en que se añaden stop loss y take profit | La posición queda protegida demasiado pronto o demasiado tarde |
| Vencimiento | Hora absoluta, zona y límite de sesión | Sobrevive una orden caducada |
| Cancelación | Regla, timestamp y prioridad entre eventos | La orden se ejecuta después de que el sistema quisiera retirarla |
También debes anotar qué ocurre cuando varios eventos caben en el mismo intervalo observado. Esa prioridad forma parte del modelo, aunque la interfaz no la muestre como parámetro.
Cómo hacer que el test sea reproducible en cTrader
Mantén congelada la estrategia y cambia solo una capa de ejecución cada vez. La referencia oficial de BacktestingSettings expone el modo de datos, el spread y la comisión como ajustes del run. Guárdalos junto al informe.
Después, asigna una identidad a cada orden y registra su historial completo:
- cuándo nació la señal y qué información estaba disponible;
- tipo, objetivo, volumen y vencimiento enviados;
- bid y ask en el momento del envío;
- cambios posteriores con su timestamp;
- cotización y método que activaron el trigger;
- hora y precio del fill, con spread o slippage resultante;
- motivo exacto de cancelación o vencimiento;
- primera protección aplicada a la nueva posición.
Repite el mismo conjunto de reglas con OHLC del timeframe, barras intrabar y ticks bid/ask cuando estén disponibles. Añade una variante que no premie a la estrategia cuando el orden de sucesos sea desconocido.
No des por bueno un test solo porque los datos sean más finos. La mejora real consiste en localizar la primera orden que diverge entre runs y explicar qué transición cambió. Si el resultado final varía y el log no puede llevarte hasta ese punto, todavía no tienes una comparación reproducible.
En una cuenta prop, el error sigue abierto después del fill
Una orden fantasma altera la exposición y la ruta de equity. También puede cruzar un límite de cuenta aunque la estadística de operaciones cerradas parezca razonable. Del mismo modo, una cancelación perdida puede dejar riesgo activo en una sesión que la estrategia pretendía evitar.
La prop firm define sus reglas vigentes de pérdida diaria y pérdida total. El modelo de fondeo sitúa esas restricciones sobre la ruta completa de la cuenta, no solo sobre el beneficio final. Para cada prueba, guarda la fuente de la firma utilizada y evita reconstruir de memoria el reloj de reset o su criterio de equity.
realbacktesting es un estudio de software de trading para cTrader que trabaja con tests inspeccionables y reproducibles. La metodología publicada hace visibles los supuestos de datos, ejecución, costes y validación. Una estrategia con órdenes pendientes solo encaja en ese estándar cuando otro trader puede recorrer cada orden desde su envío hasta su estado final.
Lo que este diagnóstico no puede prometer
Simular bien el ciclo de la orden demuestra que el código cumplió el contrato de ejecución elegido sobre los datos históricos disponibles. No demuestra que la liquidez futura sea idéntica, que el broker acepte toda instrucción sin cambios ni que exista un edge duradero.
Los ticks históricos proceden de un feed concreto. El slippage sigue siendo un modelo si no nace de registros de ejecución relevantes. El lugar de la orden en la cola y el volumen disponible también pueden ser desconocidos. Declarar esos límites no debilita el backtest; delimita lo que realmente probaste.
Preguntas habituales
¿Una vela que toca mi limit confirma el fill?
No. La vela puede ocultar la cara ejecutable de la cotización, la secuencia de eventos, la liquidez o la posición en cola. Define qué evidencia exige tu simulador antes de conceder el fill.
¿Necesito ticks para probar órdenes pendientes?
Necesitas una resolución capaz de responder a la ruta de la orden. Los ticks bid/ask aclaran casos que OHLC oculta, pero no sustituyen las reglas de trigger, gaps, spread, slippage y cancelación.
¿Por qué una stop-limit puede activarse y no ejecutarse?
Porque el trigger y el rango aceptable cumplen funciones distintas. El mercado puede activar la orden y quedar fuera del rango permitido antes de que exista un fill.
¿Cómo reviso el vencimiento dentro de cTrader?
Registra el vencimiento enviado, la zona horaria del algoritmo, el evento real de expiración y el horario negociable del símbolo. Incluye casos con mercado abierto y cerrado.
Veredicto
No hagas un backtest de una raya. Hazlo de la vida completa de la orden, porque la transición que no registraste suele ser la que regaló el fill.