Crear una estrategia automática con Ninjatrader

Hoy vamos a ver cómo crear una estrategia automática en Ninjatrader. Es una manera muy eficiente para probar diferentes tácticas que se nos vayan ocurriendo y así, ir probando su eficacia real en el mercado. A mi, personalmente, me ha servido mucho para descartar un montón de cosas que he ido leyendo y que luego no sirven de nada en la operativa diaria. Podéis leer también los artículos sobre estrategias automáticas en Prorealtime, la cual fue mi primera plataforma de trading en real, pero hoy nos vamos a centrar en Ninjatrader que es una plataforma mucho más potente y con muchas más posibilidades a nuestra disposición.

Vamos a crear una estrategia muy normalita basada en tres medias móviles. Una media móvil simple de 100 periodos que nos dirá si estamos o no en tendencia y dos medias móviles exponenciales de 20 y 50 periodos para operar el cruce entre éstas para entrar en el mercado. Un stop y un target fijos. Empecemos.


Primero vamos a explicar los parámetros de la estrategia y luego veremos cómo configurarlos:

Largos:

  • El precio debe estar por encima de la SMA de 100 periodos (condición)
  • Cuando la EMA 20 cruce por encima de la EMA 50 (gatillo de entrada)

Cortos:

  • El precio debe estar por debajo de la SMA de 100 periodos (condición)
  • Cuando la EMA 20 cruce por debajo de la EMA 50 (gatillo de entrada)

Gestión de salida:

  • Stop fijo = 20 ticks
  • Target fijo = 20 ticks

Ahora que ya sabemos como funciona el “robot”, vamos a ver cómo crearlo.

Primero debemos abrir Ninjatrader, darle a Tools y acceder a New Ninjascript – Strategy y luego Next. Si lo que quisieramos fuera crear un indicador haríamos click en indicator, pero no es el caso. Nos debe aparecer una pantalla como esta en la que escribimos el nombre y el resumen de la estrategia y que no se calcule al cierre de vela.

1

Presionamos next y nos aparecerá una nueva pantalla en la que deberemos introducir las posibles variables de nuestra estrategia para no tener un código fijo, sino dinámico y así poder cambiar con rapidez cualquier variable a medida que sigamos evolucionando la estrategia. Escribimos el nombre que queramos en cada apartado, un valor por defecto (los que he puesto arriba) y una descripción por si queremos tener las cosas más claras, debe quedarnos algo asi:

2

Next y ahora viene la pantalla principal en la que debemos introducir nuestras condiciones de entrada. En el set 1 programaremos las órdenes de entrada en largo y en el set 2 haremos lo mismo pero en el lado corto.

3

Si le damos a Add podremos añadir las condiciones y nos saldrá la siguiente pantalla. en la que deberemos escribir la condición y el gatillo de entrada. Deberemos seleccionar:

  • Price data – close (es decir, el precio) esté por encima (signo del medio) de Indicators – SMA (media sencilla de 100) y donde pone periodo pondremos nuestra variable SMA1 de la segunda imagen. Ahora ya tenemos nuestra condición de largos configurada.

4

  • Indicator – EMA (en periodo ponemos variable EMA2 pues será la EMA rápida de 20) periodos y seleccionamos cross above (que cruce por encima) de la otra media indicator – EMA con periodo EMA1 (por defecto de 50 periodos). Ya tenemos nuestro gatillo de entrada.

5

Ahora que ya tenemos las condiciones y la entrada al mercado configurado debemos programar nuestra orden. Hacemos click en Add en el apartado de abajo “Do the following” y:

6

simplemente le damos a enter long position. Si lo hemos hecho todo bien hasta ahora, debemos tener algo así:

7

Ahora debemos hacer lo mismo para las posiciones cortas en el Set 2, pero cambiando los signos y el tipo de entrada. Debe quedar así (me he saltado los pasos, porque con el ejemplo de arriba ya sabréis hacerlo):

8

Le damos a Next y configuramos las ordenes stop-loss y take profit para tener nuestro robotito al completo.

9

Seleccionamos el stop, lo ponemos en ticks y en value ponemos nuestra variable personal. Hacemos lo mismo para el take profit y se nos quedará tal que así:

10

Ya tenemos nuestra estrategia creada. Una vez le demos a Next quedará guardada en el apartado de estrategias. Podéis descargar el Ninjacript (el código ya está compilado por mí) desde aquí y meterlo en Documentos – Ninjatrader 7 – bin – custom – strategy que es dónde están todas. Os recomiendo que lo hagáis vosotros mismos así podréis trastear con la maquinita y ver que funciona y que no. Si os da pereza, siempre podéis importar el Ninjascript que os acabo de pasar y jugar con el.

Ahora que ya tenemos la estrategia creada, debemos testearla en backtest con el strategy analyzer.

Siga leyendo en ¿Cómo utilizar el Strategy Analyzer de Ninjatrader? 

Tweet about this on TwitterShare on FacebookShare on Google+Email this to someonePrint this page
  • Angel

    Excelente informacion. Una pregunta: es posible aplicar el metodo practico de Wyckoff como una estrategia automatica en Ninjatrader?

    • Muchas gracias Ángel!!

      En cuanto a tu pregunta, sí que se puede automatizar el método Wyckoff práctico, aunque al tratarse de un sistema discrecional, es muy complicado programar todas las variables.

      Estas variables son fáciles de programar:

      – Entradas con el oscilador 3-10
      – Entrada mediante sección con cierre por encima de la zona anterior
      – Indicador de tendencia (ADX) para ver la fortaleza de una tendencia
      – Señales de debilidad (indicador cualquiera con zonas de sobrecompra y sobreventa)
      – Rotura con intención y volumen para girar el mercado (CDI)

      Estas variables son más difíciles de programar:

      – Cuantificar el pullback o retroceso
      – Cuantificar el volumen del pullback en relación al impulso previo
      – Establecer el mapa conceptual del mercado
      – Máximos o mínimos ambiguos como señal de debilidad
      – Relación oferta y demanda con el Priceactionswingoscillator

      Puedes ir probando, si bien no creo que puedas programar el método al completo pues necesita de un enfoque discrecional para interpretar el mercado. La lectura mediante precio y volumen a la Wyckoff es mas una manera de entender el mercado que un sistema en sí mismo. A pesar que el artículo del método de Wyckoff práctico plasme un sistema bastante mecánico, siempre hay una parte discrecional difícil de cuantificar mediante indicadores y variables.

      Ya me dices qué tal va la estrategia,
      un saludo,

      Victor

      • Angel

        Muchas gracias Víctor por tu extensa y pronta respuesta.
        Conozco un poco de Wyckoff y no he hecho ninguna estrategia con ninjatrader, pero me parece muy interesante la idea de poder plasmar ese concepto, siempre dentro de lo posible, en una estrategia automática. Con tu respuesta puede ser un buen inicio para investigar como implementarla con sus diferentes variables.

        • Yo opero de manera discrecional basándome en la acción del precio y en una lectura del volumen muy parecida a la teoría de Wyckoff. Considero imposible programar todo mi método (ojalá se pudiese), pero creo que sí que es posible crear un sistema utilizando el método práctico del artículo.

          Me alegro que te haya servido, si tienes cualquier duda en el proceso no dudes en preguntar e intentaré ayudarte en lo posible.

          Un saludo Ángel.

  • Joan Amorós Pulido

    Se puede programar una estrategia para que solo actúe dentro de un rango horario concreto y no durante todo el día sin necesidad de estar en frente de la pantalla, por ejemplo el famoso horario de más volumen 15.30H a 17.30H?

    • Hola Joan,

      la verdad es que nunca he programado algo así, pero en la página oficial de NT hay un sample descargable y seguro que puedes copiar el código y modificarlo como tu quieras.

      Éste es el enlace: http://ninjatrader.com/support/forum/showthread.php?t=3226
      Es bajarse el archivo, importarlo y luego editarlo en el Strategy Center. Ya me dices qué tal.

      Saludos!

  • Omar Trader

    hola buen dia soy nuevo en programación de ninjatrader en semanas pasadas adquirí una herramienta para crear condiciones en los gráficos pero mi duda seria si esa información esta guardada en algún lugar de las carpetas de ninja trader que después pueda convertir a estrategia ya tengo creada unas condiciones que parecen ir muy bien pero me gustaria meterla a el market analizer espero alguien pueda ayudarme gracias y saludos

    • Hola Omar,

      la verdad es que no se responderte, pues no conozco la herramienta con la que pones las condiciones en los gráficos, de todas formas, programar nuevamente todo copiando los parámetros directamente en el strategy center no debería tomarte mucho tiempo.

      Todas las estrategias se guardan normalmente en: C:UsersDocumentosNinjaTrader 7binCustomStrategy.

      Un saludo!!

  • Gerard

    Hola Victor,

    Gracias por compartir toda esta información, tu blog es excelente. Sabes si hay alguna manera de programar el breakeven con el strategy analyzer? Por ejemplo, que cuando el precio llegue a +20 ticks, el stop loss se mueva a +1tick del precio de entrada y así protger la operación.
    El strategy analyzer es una buena herramienta pero veo que el trailing stop no funciona como en el ATM. Además que, no se por que razón, no se puede poner trailing stop y stop loss a la vez.

    Gracias por tu ayuda y saludos

  • Omarr Jimenez

    Hola que tal buena tarde he visto que algunas personas tienen un sistema de trading que funciona como estrategia y como indicador la única diferencia es que como indicador no aplican las opciones de ordenes de compra/venta, tragets y stops. Podrías ayudarme que necesito si ya tengo una estrategia como la puedo cambiar a indicador ¿es algo que se cambia en el código o como funciona eso?

    • Hola Omar,

      si tu estrategia discrecional es programable claro que puedes codificarla y crear una estrategia automática. Lo primero es saber con que plataforma trabajas y entonces estudiar el lenguaje de programación particular de ésta. Hay muchas como ninja o Prorealtime que tienen una interfaz amigable para poder programar un código básico sin nociones de informática.

      Hay muchas guías por internet y si es Ninjatrader tu plataforma puedes empezar por este artículo, eminentemente práctico, para que puedas hacer tus propias pruebas iniciales.

      Un saludo Omar!!

  • chema

    Hola muy buenas estoy empezando a configurar mis estrategias en Ninja trader de hecho tengo alguna que al colocarle los parámetros y analizar con el analyzer me da unos muybuenos resultados luego me voy al chart del analizador y oh milagro no se que pasa pero no entiendo cuando entra al mercado y ademas al operar con la estrategia en simulado solo me entra una vez al mercado y como no tengo profit sino que cierro cuando se da una entrada contraria a pesar de que luego me pinta las entradas en el grafico y los targets solo entro una vez. Ademas no se como colocar el disparador para entrar al mercado cuando el precio supere un minimo o maximo de la barra de señal que no tengo claro si es la (0) o la (-1) ¿que parametro es el precio actual de la barra en curso?. He llegado a pensar que si me diera todas las entradas operando que me pinta el grafico ganaria mucho dinero y mucho tiempo pero no creo que pueda ser tan bonito.

    • Hola Chema,

      para responderte todas tus dudas tendría que ver como has programado la estrategia. Es muy típico confundir ticks con puntos o crear la estrategia con algún fallo que a simple vista no se vea.

      Desde luego, si no entiendes como entra al mercado es que has programado mal los parámetros de entrada y no se ajustan a lo que buscas. El que dé muy buenos resultados puede ser que hayas sobreoptimizado la estrategia para un espacio de tiempo concreto o hayas programado mal directamente todo (comportamiento intrabarra, stops amplios/ceñidos, etc.).

      Si lo que buscas es tener más entradas y salidas debes programar un stop y un take profit y no salir siempre cuando se dé la estrategia contraria.

      Cuando veas que algo que es demasiado bonito, desconfía y más en esto de los mercados.
      Con práctica al final programarás cualquier cosa rapidísimo y sin fallos de código, es cuestión de tiempo y ganas.

      Un abrazo Chema!!

      • chema

        Muchas gracias por haberme contestado tan pronto y por tu consejo de bajarme de la nube. El problema que tengo en si es tanto ;la entrada al mercado como la salida, ya que no se cual es el parámetro que debo de elegir para que el precio actual de una barra sin formarse que supere el minimo o el máximo de la anterior me haga de disparador , ademas mi salida mas que un objetivo de ticks yo la quiero situar en el momento de que el precio de la barra sin formarse toque o se quede un punto por encima o por debajo de un indicador( media, banda, canal…… etc). Una estrategia con los parametros que utilizo para alguna de las entradas de un sistema me seria de mucha utilidad no solo para automatizar las entradas sino para testar el sistema de diversos contratos o productos.

        • Hola Chema,

          siento no poder ayudarte, ya que no sabría como programar tu tipo de entrada y salida.

          Un saludo!!

          • chema

            Muchas gracias de todas formas ¿ pero no me podías decir que parámetro es el precio actual el de la barra que aun no se ha cerrado ?

            El 4 de julio de 2016, 10:19, Disqus escribió:

          • Perdona Chema,

            el valor 0 se refiere a la vela actual y el valor -1 a la anterior. Saludos

          • chema

            Muchas gracias de nuevo pero mi duda es cual es el parámetro del precio actual es decir de la vela 0 ( si no se calcula a cierrre de barra ) ¿ entonces los valores de las velas van al reves que los indicadores? porque en los indicadores la vela anterior es la vela 1 y la posterior es la -1. Ya lo miraré y quizas sea ese mi fallo. Perdóname por robarte parte de tu tiempo.

            El 4 de julio de 2016, 12:09, Disqus escribió:

  • Francisco

    Hola Victor.
    Primero de todo felicitarte por tu web, asi como por tu articulo en referencia a programacion de estrategias. He implementado en mi Sistema la estrategia que tienes arriba, y me preguntaba como podriamos programar una estrategia “SELL”, ¿Que instruccion debo utilizar?,
    Gracias de antemano
    Felicidades por tu web
    Francisco

    • Hola Francisco,

      muchas gracias por tus palabras, me alegro que te guste la web y consigas sacarle provecho. En el mismo ejemplo de arriba, la opción de ponerse corto se puede ver en la tercera última foto. Debes invertir los signos y una vez tienes la condición y el gatillo configurados (igual que en el ejemplo de arriba pero al revés), debes añadir en el recuadro de abajo “do the following” Enter Short Position.

      Un abrazo!!

  • Francisco

    Hola Victor,
    Gracias por tu respuesta me ha ayudado a resolver el problema, que tenia. Estoy programando una estrategia basada en el indicador TRIX y estoy viendo la manera de relacionar los datos de la linea TRIX con la SIGNAL, es decir, quiero programar una variable de intervalo, que me mantenga la posicion abierta si se cumple esa posicion, por ejemplo:
    1) Si la diferencia entre el valor TRIX y la SIGNAL es mayo de 100, no cierres.
    He conseguido tener las dos variables TRIX y SIGNAL, pero no se como relacionarlas, puedes darme alguna idea.
    Gracias por adelantado,
    Francisco

    • Hola Francisco,

      lo que yo haría en tu caso sería primero configurar un nuevo indicador en vez de la estrategia directamente. Crea un nuevo indicador basado en la diferencia TRIX – SIGNAL y, una vez creado, sólo tendrás que configurar la estrategia como si fuese un simple indicador de bandas (> 100 y <100).

      Saludos!!

  • Angel G

    Hola Victor, lo primero muchas gracias y felicidades por tu web.

    Me estoy iniciando en las estrategias con ninjatrader 8. Tengo un sistema que quiero aplicar para el mini SP 500, me baso en el MACD en un grafico de 3 minutos pero teniendo en cuenta las posiciones de EMAs y WMAs en graficos de 60 mins y de 5 respecto al precio (esto ultimo es para comprobar tendencias) . como soy un poco neófito, de momento tengo varias dudas aunque para no “molestar” solo quiero preguntar 2, te agradecería las respuestas mucho:

    1 . ¿como hacer para tener en cuenta las EMAs respecto al precio de diferentes gráficos (de 5 y 60 min como te decía)?
    2. ¿como puedo comprobar cuando han cruzado las lineas de MACD las MACD yt la vg hacia arriba y que el cruce se haya dato por debajo de la linea 0 p.e.?

    Muchas gracias por adelantado
    Un Saludo

    • Hola Angel,

      muchas gracias por tus palabras. Ninja 8 no lo he utilizado, yo soy de los fieles que siguen con el 7. Voy a intentar responder a tus preguntas:

      1. Para configurar EMAs de otros Timeframes simplemente multiplica los periódos del indicador por el TF que quieras, lo que quiero decir es que es lo mismo un MACD de 10 periódos en 60 minutos que un MACD de 20 periódos en 30 minutos. Ajusta tantos múltiplos de 3 minutos hasta que consigas lo que quieres en 60M y 5M.

      2. Pondría las siguientes condiciones en el strategy analyzaer:

      – MACD 1 cross above/below MACD 2
      – MACD < valor 0

      Una vez que configuradas las dos, sólo deberás asociar una orden de entrada para cuando se cumplan las dos.

      Un saludo!!

      • AngelG

        Fenomenal buena idea, ,Muchas Gracias !
        Otra cosa (y última) hay opciones condicionales de “mayor que” ,”mayor o igual que ” , si quiero comprobar que las 2 medias o han cruzado o la diferencia entre ellas es menos que porejemplo 4 ticks ?

        Como evaluar cuando cruzan esta claro (cros above / below) pero para evaluar si la diferencia entre ellas es menor o igual a 4 ticks ? como podria hacerlo

        Gracias por adelantado

        • Angel G

          Hola Victor, más o menos ya lo tengo , hay una forma de obtener el valor actual de la Media (cualquiera que sea, o cualquier indicador que sea)

          Ejemplo para la media simple (en lace al foro, está en código C++):
          https://ninjatrader.com/support/helpGuides/nt7/?moving_average___simple_sma.htm

          Por cierto , me he pasado a NT7, la versión 8 es muy inestable todavía , así que haré mi “robot” con esta versión.

          Hay un repositorio bastante bueno de las funciones que existen y como usarlas
          (al ser informático tengo algo de ventaja 🙂 )

          Un saludo , e igual que me has ayudado, cualquier cosa en la que te pueda ayudar dentro de mis conocimientos yo lo haré.
          feel free to ask me

          Gracias por todo

          • Hola Angel, me alegro que ya lo tengas. La versión 7 de Ninja es mucho más estable, hasta que no saquen la 8 final yo creo que no vale la pena pasarse.

            Muchas gracias por esa ayuda que me ofreces, cualquier cosa te escribo 😉 Igualmente por aquí intentaré ayudar en lo que pueda.

            Un abrazo!!

  • Fundulus

    Gracias Víctor, es muy interesante tu artículo. He estado probando, y para poner un stop loss definido por un número de ticks o de puntos no hay problema, pero por ejemplo, estoy usando una estrategia basada en ichimoku y quiero poner un SL cuando el precio entra en la nube. Cómo se programa eso? …si se pudiese.

    Saludos,

  • MAURICIO CASTAÑEIRA

    Consulta victor estoy empezando a probar esto del ninja pude realizarlo pero noto que hay un delay entre el cruce y la marca de la entrada o salida aproximadamente de dos velas como se puede correjir esto?

    • Hola Mauricio,

      creo que simplemente es porque has creado la estrategia basándote en los precios de cierre. Prueba a quitar “calculate on bar close”. Creo que debe ser eso. Si no, ya tocaría programar un código que calcule “n” velas anteriores al cruce de medias.

      Un saludo

  • MAURICIO CASTAÑEIRA

    Buenas te agradezco por el blog muy bueno tengo otra consulta quisiera hacer que me de señal de compra cuando de cruce hacia arriba el estocástico y viceversa siempre y cuando sea menor a 20 y mayor a 80 como puedo hacerlo

    • Hola Mauricio,

      debes crear dos condiciones para comprar y otras dos para vender.

      Comprar:

      1. Estocástico 80
      2. Estocástico D% cruce por debajo del estocástico K%

      Un saludo.

  • MAURICIO CASTAÑEIRA

    Como deberia hacer para indicarle el cruce del estocastico lo tendria q hacer con el wizard o escribiendo codigo?

    • Con el Wizard basta, utiliza los ejemplos arriba comentados, un saludo.

  • Luis Mendez

    Buenas. Como le añado un trailing stop a la estrategia ?

    • Hola Luis,

      te tocaría programar en el Strategy Wizard o en vez de poner un stop loss, calcular las salidas de tus posiciones en base a algún indicador dinámico (media móvil, ATR, parabolic SAR, etc.).

      Si eliges la primera aquí tienes tanto el código como la ayuda de Ninja: http://ninjatrader.com/support/helpGuides/nt7/?settrailstop.htm

      Si eliges la segunda opción, sólo tendrías que abrir un Set 3 a modo condiciones de salida y elegir un indicador que te hiciese de trailing stop según tus condiciones.

      Un saludo!!