Para demostrar la utilización del Estrategy Wizard (Asistente de Estrategias/Sistemas) de Ninja Trader vamos a utilizar el sistema de trading Cruce de media móvil.

Utilizando los elementos de análisis técnico y esta estrategia, vamos a construir un sistema automático de trading , que será capaz de lanzar las órdenes que genere de forma autónoma y sin que nuestras emociones intervengan en la operativa.

En la barra de menús del Control Center de Ninja Trader seleccionamos «Tools–>New NinjaScript–>Strategy»

ninja trader

Se abre el asistente de creación de estrategias, que en su pantalla de apertura contiene estos elementos:

  • 1- Abre la ayuda de Ninja Trader.
  • 2- Muestra el código generado por el asistente.
  • 3- Permite editar el código y realizar cambios. Una vez que el código ha sido desbloqueado ya no es posible continuar usando el asistente.
  • 4- Botones «Siguiente» y «Anterior» para desplazarse por las pantallas.
  • 5- Cancelar.

estrategias de trading

En la pantalla general del sistema realizamos las siguientes acciones:

  • 1- Damos un nombre al sistema.
  • 2- Introducimos la descripción del sistema.
  • 3- Marcamos la opción de que se recalcule el sistema cada vez que se cierra una barra de cotizaciones.

estrategias forex

La siguiente pantalla permite definir parámetros cuyo valor podremos modificar para mejorar el rendimiento del sistema. En el sistema del ejemplo definimos como parámetro el número de periodos (en este caso días) sobre el que debe calcularse la media móvil para poder cambiar el valor y ver con cuál se comporta mejor.

  • 1- El nombre del parámetro será MAPeriod.
  • 2- El parámetro será un número entero (int).
  • 3- Su valor por defecto será de 30 periodos.
  • 4- Su valor mínimo de 10 periodos.
  • 5- Describimos el parámetro para poder recordarlo en el futuro.

La pantalla de condiciones y acciones permite definir las condiciones que van a definir el comportamiento del sistema y qué acciones debe realizar si se cumplen. El asistente permite hasta 10 grupos de condiciones con sus respectivas acciones. Si se necesitan más deben programarse en el editor de código.

  • 1- Grupo de condiciones a editar.
  • 2- Condiciones del grupo actual.
  • 3- Añadir o borrar una condición al/del grupo en pantalla.
  • 4- Edita la condición seleccionada.
  • 5- Muestra las acciones asociadas al grupo de condiciones actual.
  • 6- Añade o borra una acción.
  • 7- Edita la acción seleccionada.

Para nuestro sistema vamos a utilizar el grupo de condiciones 1 (Set 1), al que vamos a añadir la primera de ellas utilizando el botón «Add» (3). Se nos muestra el constructor de condiciones que facilita en gran medida esta tarea. Está formada por:

  • 1- Dos áreas separadas e idénticas que contienen todos los elementos disponibles para la construcción de las condiciones (datos de precios, indicadores …).
  • 2- Lista de operadores de comparación.

Vamos a construir los grupos de condiciones definidas en el sistema «CruceMM30D» y sus acciones asociadas.

1ª PARTE DEL SISTEMA. Apertura y cierre de una posición larga:

«Si se produce el cierre de una barra de cotizaciones por encima de la media móvil y ésta está ascenciendo, realiza una compra. Se cierra la posición cuando se tiene un cierre por debajo de la MM.»

– Grupo de condiciones 1 y acciones asociadas: Si se produce el cierre de una barra de cotizaciones por encima de la media móvil y ésta está ascenciendo, realiza una compra.

  1. Condición 1ª: «Una barra de cotizaciones cierra por encima de la media móvil».

    • En el panel de la izquierda seleccionamos el dato «Close» (cierre) del grupo «Price data» (datos de precios). Como hemos diseñado el sistema para que se recalcule con cada nueva barra que se completa, en el parámetro «Bars ago» (barra hacia atrás) introducimos el valor «0». Esto hará que en el nuevo cálculo se tome el precio de cierre de la última barra completada ( con «1» tomaría la penúltima, con «2» la antepenúltima y así sucesivamente).

    • En la lista de operadores de comparación seleccionamos el operador «>» (Mayor que).
    • En el panel de la derecha, dentro del grupo «Indicators» seleccionamos el indicador «SMA» (Simple Moving Average/Media Móvil Simple ).

    • Podríamos dejar el parámetro «Period» (Nº de barras de precios sobre el que se calculará la MM) con un valor numérico fijo, pero vamos a utilizar el creado en la pantalla de definición de parámetros y que permitirá que la MM se calcule sobre un número de barras diferente, según sea conveniente.

    Si nos situamos dentro del campo del parámetro «Period» se muestra un botón que abre la ventana de valores que puede tomar.

    En la ventana de valores, dentro del grupo «User defined inputs» (entradas definidad por el usuario) seleccionamos el parámetro que creamos con anterioridad, «MAPeriod».

    • Hemos definido la condición 1ª: «Una barra de cotizaciones cierra por encima de la media móvil». Quedará reflejado en el grupo de condiciones 1 como sigue.

  2. Condición 2ª: «La media móvil está ascendiendo».

    • En el panel de la izquierda seleccionamos el indicador «SMA y modificamos los siguientes parámetros:
      • «Period» con el «MAPeriod» definido.
      • «Bars Ago» (barras atrás) con el valor «0» (indica la última barra).
    • En la lista de operadores de comparación seleccionamos el operador «>» (Mayor que).
    • En el panel de la derecha seleccionamos el indicador «SMA» y modificamos los siguientes parámetros:
      • «Period» con el «MAPeriod» definido.
      • «Bars Ago» con el valor «0» (la barra anterior).

    • Así queda el grupo de condiciones 1.

  3. Acciones asociadas al grupo de condiciones 1: «Realizar una compra«.

    • Añadimos una acción al marco de acciones del grupo de condiciones 1 utilizando el botón «Add» (6).

    • Se muestra la ventana de acciones, donde seleccionamos «Enter long position» (abrir posición larga) dentro del grupo «Order management».

    • La acción establecida abrirá una posición larga a precio de mercado si se cumplen las condiciones definidas en el grupo de condiciones 1, cuyo estado final es el siguiente:

– Grupo de condiciones 2 y acciones asociadas: Se cierra la posición cuando se tiene un cierre por debajo de la MM.

    1. Condición 1ª: «Una barra de cotizaciones cierra por debajo de la media móvil».
        • «Period» con el «MAPeriod» definido.
        • «Bars Ago» con el valor «0».
      • En el panel de la izquierda seleccionamos el dato «Close» del grupo «Price data». En el parámetro «Bars ago» introducimos el valor «0».
      • En la lista de operadores de comparación seleccionamos el operador «<» (Menor que).
      • En el panel de la derecha, dentro del grupo «Indicators» seleccionamos el indicador «SMA». Completamos los parámetros:

  1. Acciones asociadas al grupo de condiciones 2: «Cerrar la posición «.

    • Añadimos una acción al marco de acciones del grupo de condiciones 2 utilizando el botón «Add».
    • En la ventana de acciones seleccionamos «Exit long position» (cerrar posición larga) dentro del grupo «Order management».

    • A continuación el estado final del grupo de condiciones 2:

2ª PARTE DEL SISTEMA. Apertura y cierre de una posición corta:

«Si se produce el cierre de una barra de cotizaciones por debajo de la media móvil y ésta está descenciendo, realiza una venta. Se cierra la posición cuando se tiene un cierre por encima de la MM.»

– Grupo de condiciones 3 y acciones asociadas: Si se produce el cierre de una barra de cotizaciones por debajo de la media móvil y ésta está descenciendo, realiza una venta.

  1. Condición 1ª:»Una barra de cotizaciones cierra por debajo de la media móvil».

    • En el panel de la izquierda seleccionamos el dato «Close» del grupo «Price data». En el parámetro «Bars ago» introducimos el valor «0».
    • En la lista de operadores de comparación seleccionamos el operador «<«.
    • En el panel de la derecha, dentro del grupo «Indicators» seleccionamos el indicador «SMA». Completamos los parámetros:
      • «Period» con el «MAPeriod» definido.
      • «Bars Ago» con el valor «0».

  2. Condición 2ª: «La media móvil está descendiendo».

    • En el panel de la izquierda seleccionamos el indicador «SMA y modificamos los siguientes parámetros:
      • «Period» con el «MAPeriod» definido.
      • «Bars Ago» con el valor «0».
    • En la lista de operadores de comparación seleccionamos el operador «<«.
    • En el panel de la izquierda seleccionamos el indicador «SMA y modificamos los siguientes parámetros:
      • «Period» con el «MAPeriod» definido.
      • «Bars Ago» con el valor «1».

  3. Acciones asociadas al grupo de condiciones 3: «Realizar una venta «.

    • Añadimos una acción al marco de acciones del grupo de condiciones 3 y en la ventana de acciones seleccionamos «Enter short position» (abrir posición corta) dentro del grupo «Order management».

    • La acción establecida abrirá una posición corta a precio de mercado si se cumplen las condiciones definidas en el grupo de condiciones 3, cuyo estado final es el siguiente:

– Grupo de condiciones 4 y acciones asociadas: Se cierra la posición cuando se tiene un cierre por encima de la MM.

    1. Condición 1ª: «Una barra de cotizaciones cierra por encima de la media móvil».
        • «Period» con el «MAPeriod» definido.
        • «Bars Ago» con el valor «0».
      • En el panel de la izquierda seleccionamos el dato «Close» del grupo «Price data». En el parámetro «Bars ago» introducimos el valor «0».
      • En la lista de operadores de comparación seleccionamos el operador «>».
      • En el panel de la derecha, dentro del grupo «Indicators» seleccionamos el indicador «SMA». Completamos los parámetros:

  1. Acciones asociadas al grupo de condiciones 2: «Cerrar la posición «.

    • Añadimos una acción al marco de acciones del grupo de condiciones 2 utilizando el botón «Add».
    • En la ventana de acciones seleccionamos «Exit short position» (cerrar posición larga) dentro del grupo «Order management».

    • A continuación el estado final del grupo de condiciones 4:

Hemos completado las dos partes del sistema con todos sus grupos de condiones y acciones asociadas. La siguiente ventana que se nos muestra es la de «Stops and targets» (salidas y objetivos), que sirve para definir la salida de nuestra posiciones al alcanzar un valor o porcentaje de pérdia o beneficio en la posición.

Como en nuestro sistema hemos definido el cierre de posiciones mediante condiciones, obviamos esta ventana y pasamos a la final donde utilizamos el botón «Finish» para guardarlo.