Laboratorio · octubre de 2026

Por qué tu estrategia de NinjaTrader 8 no manda órdenes: 11 causas y cómo comprobarlas

Espera a quedarse plana, le faltan barras, calcula al cierre o una regla interna la ignora. Las causas habituales, con la documentación oficial de NinjaScript, y cómo verlas en pocos minutos.

Suele ser una de estas tres: la estrategia está esperando a quedarse plana antes de operar en tiempo real, todavía no ha cargado las barras que pide, o NinjaTrader ignora la orden por una de sus reglas internas. Las tres se ven en pocos minutos con la pestaña Strategies y la ventana Output.

Es una de las preguntas más repetidas en el foro oficial de NinjaTrader. Aquí tienes las causas en el orden en que conviene mirarlas, con lo que dice la documentación oficial de NinjaScript. Sirve para estrategias escritas a mano y para las del Strategy Builder, con el enfoque gestionado (métodos Enter, Exit y Set).

1. Está esperando a quedarse plana

Al activarla, la estrategia recorre primero el histórico y puede terminar «dentro» de una posición virtual. Con el valor por defecto de StartBehavior, WaitUntilFlat, no manda nada a tu cuenta hasta que esa posición virtual se cierra o se da la vuelta. Puede tardar horas. Lo verás en la pestaña Strategies del Control Center: el nombre de la estrategia sale resaltado en naranja o amarillo.

Para empezar desde plano, no operes en el histórico (mira el punto 4). Cambiar StartBehavior a ImmediatelySubmit también arranca ya, pero da por hecho que tu cuenta tiene la misma posición que la estrategia; si no la tiene, quedan descuadradas.

2. Todavía no tiene las barras que pide

BarsRequiredToTrade vale 20 por defecto: mientras la serie principal no tenga 20 barras, la estrategia no procesa las órdenes. Si usas varias series, ese número solo vigila la principal; comprueba cada una con CurrentBars.

3. Solo calcula al cierre de la vela

Calculate vale OnBarClose por defecto: OnBarUpdate() se ejecuta una vez al cerrar cada barra. En un gráfico de 15 minutos parece que no hace nada durante 15 minutos. Para reaccionar dentro de la vela, usa OnEachTick u OnPriceChange, y repasa la lógica, porque [0] pasa a ser la barra que se está formando. Ojo: en el histórico sigue calculando al cierre salvo con Tick Replay, así que el backtest y el directo no se comportan igual.

4. Opera en el histórico, pero no en tiempo real

La estrategia pasa por los estados Historical, Transition y Realtime. Las órdenes del histórico son simuladas. Si tu condición solo se cumple en barras viejas, nunca verás una orden en tiempo real. Si solo quieres operar en directo, sal de OnBarUpdate() cuando State == State.Historical: así además empieza plana.

5. Ya tiene una entrada en esa dirección

EntriesPerDirection vale 1 por defecto. Con una posición larga abierta, una segunda entrada larga se ignora. Si necesitas varias, sube el número o usa EntryHandling.UniqueEntries con nombres de señal distintos.

6. Una regla interna la ignora

El enfoque gestionado tiene reglas para evitar posiciones no deseadas. Según la documentación, no afectan a las órdenes a mercado, pero sí a las de límite y stop. Por ejemplo, se ignora:

La pestaña Log solo avisa de la primera orden que incumple una regla; TraceOrders te las enseña todas.

7. La rechazó el bróker… y la estrategia se paró

Un stop de compra por debajo del precio o uno de venta por encima suele rechazarse. Lo importante: con el valor por defecto de RealtimeErrorHandling, StopCancelClose, un solo rechazo detiene la estrategia, cancela sus órdenes y cierra su posición. Si «dejó de funcionar» después de una orden, mira la pestaña Log.

8. La siguiente operación hereda el stop anterior

SetStopLoss() tiene que llamarse antes de la entrada. Si lo cambias dentro de OnBarUpdate() (por ejemplo, para pasarlo a break-even), la documentación pide reiniciarlo cuando la estrategia esté plana; si no, la siguiente operación arranca con el último valor. Con CalculationMode.Price, ese precio viejo puede quedar en el lado equivocado y la orden se rechaza (punto 7).

9. Tus órdenes límite desaparecen solas

En el enfoque gestionado, las órdenes de los métodos Enter y Exit se cancelan al final de la barra si no se vuelven a enviar. Si quieres que una orden límite siga viva, vuelve a mandarla en cada barra mientras se cumpla tu condición.

10. Cerró antes del final de la sesión

IsExitOnSessionCloseStrategy está activado por defecto: unos segundos antes del cierre de la sesión (ExitOnSessionCloseSeconds), la estrategia cancela sus órdenes y cierra su posición. Si tu plantilla de sesión no coincide con el horario que operas, parece que cierra sola.

11. Cuenta, conexión o contrato equivocados

La estrategia opera en la cuenta que elegiste en sus propiedades (columna Account Display Name de la pestaña Strategies), no en la del Chart Trader. Comprueba también que la conexión está activa y que usas el contrato vigente: tras el rollover, el volumen pasa al vencimiento siguiente y el contrato viejo apenas se mueve; cuando vence, ya no se mueve nada.

Cómo verlo en pocos minutos

Si el nombre de la estrategia sale en naranja o amarillo en la pestaña Strategies del Control Center, está esperando a quedarse plana. Para lo demás, activa TraceOrders y deja un Print() al principio de OnBarUpdate(). La ventana Output (menú New → NinjaScript Output del Control Center) te dirá en qué estado está la estrategia en cada barra y por qué se ignora cada orden. La pestaña Log muestra los rechazos.

// Añade estas líneas a tus métodos; no dupliques OnStateChange() ni OnBarUpdate().
protected override void OnStateChange()
{
    if (State == State.SetDefaults)
    {
        TraceOrders = true;   // la ventana Output explica por qué se ignora cada orden (los rechazos salen en la pestaña Log)
    }
}

protected override void OnBarUpdate()
{
    // estado, barra y posición de la ESTRATEGIA (no la de tu cuenta); en el histórico imprime mucho
    Print(Time[0] + " " + State + " barra " + CurrentBar + " " + Position.MarketPosition);
    if (CurrentBar < BarsRequiredToTrade)
        return;
    // ... tu lógica de entrada ...
}

Si es una cuenta de fondeo: antes de dejar una estrategia automática en marcha, comprueba que tu firma la permite. APEX, por ejemplo, prohíbe la automatización en sus normas. Lo tienes por firma en noticias y bots por firma.

¿Prefieres que la mire alguien? Revisamos estrategias de NinjaScript y corregimos los fallos que encontremos, y pasamos indicadores y estrategias de Pine Script a NinjaTrader 8: servicios de NinjaScript.

Fuentes

Documentación oficial de NinjaScript (arriba) y la guía de NinjaTrader 8: «Syncing Account Positions» y «Strategies Tab». Documentación consultada el 21 de octubre de 2026. NinjaTrader puede cambiar los valores por defecto entre versiones: comprueba la de tu instalación.

Gratis: el Cuaderno de la otra mitad. Nueve plantillas para operar con la cabeza fría: tu plan en una página, la lista previa, el test de los doce patrones, el tamaño y la factura de tus errores.

Descargar el cuaderno gratis

Contenido informativo y educativo, basado en la documentación oficial de NinjaScript. No es asesoramiento de inversión. Las reglas de las firmas cambian: compruébalas en su web. Este artículo no contiene enlaces de afiliado.