Trading Semi-Automático

Trading semiautomático con Drawing Tools en NinjaTrader 8

Introducción

En este artículo expongo cómo utilizar las Drawing Tools de NinjaTrader 8 para realizar trading semiautomático.

Atendiendo al grado de intervención humana, hay dos maneras principales de hacer trading que explico a continuación: discrecional y automática. Y entre medias se encontraría el trading semiautomático.

Trading discrecional

Por trading discrecional entendemos aquella operativa donde el trader decide personalmente y de modo subjetivo el envío de la orden de entrada y de salida. Este envío se efectúa manualmente, es decir, el trader debe pulsar en los botones correspondientes de su plataforma de trading electrónico para enviar las órdenes. 

El bróker puede ofrecer la posibilidad de colocar automáticamente una orden de salida tras lograrse el filled de la entrada (por ejemplo una bracket de salida compuesta por una orden de stoploss y una de takeprofit). Esto no supone perder la condición de trading discrecional. Aunque la orden de salida la gestione automáticamente el bróker, la configuración de sus propiedades – como por ejemplo los precios de salida – es una decisión subjetiva del trader. Lo mismo rige si la salida es por trailing o por cualquier otro mecanismo automático que ofrezca el bróker y que requiera de una configuración manual y subjetiva.

Trading automático

Trading automático es toda operativa gestionada completamente por la computadora del trader, mediante uno o varios sistemas automáticos, y en concreto con las siguientes funcionalidades:

  • Detección de señales de compra/venta a partir de los datos recibidos del mercado.
  • Envío de órdenes de entrada/salida al bróker.
  • Gestión de la cuenta y de la posición de la estrategia en tiempo real.

En NinjaTrader 8 se pueden programar sistemas automáticos que reciben el nombre de estrategias, y que se programan en lenguaje C# para trabajar con NinjaScript (biblioteca de tipos especializada en trading y desarrollada por NinjaTrader). Además se puede aprovechar todo el potencial del framework .NET de Microsoft Windows.

Aunque no se posean conocimientos de programación, es posible construir sistemas automáticos con el asistente Strategy Builder sin escribir código.

 

Tipos de sistemas automáticos

Podemos clasificar los sistemas para trading automático de muchas maneras:

  • Single o multi-instrument : para operar un único activo, o varios a la vez (por ejemplo para pair-trading y hedging).
  • En función de su horizonte temporal:
    1. Long-term o largo plazo. Operaciones abiertas durante semanas.
    2. Swing o medio plazo. Operaciones abiertas durante días.
    3. Intradía. Para operaciones abiertas y cerradas en la sesión.
    4. Scalping. Es una operativa intradía con objetivos muy estrechos.
    5. HFT. Operativa intensiva con un horizonte temporal de segundos e incluso milisegundos, y que requiere de infraestructuras especiales para garantizar una latencia mínima.
  • En función del tipo de datos: OHLCVT (open-high-low-close-volume-time de la barra) versus OrderFlow (cinta + orderbook). En cuanto al OrderFlow, hasta hace una década prácticamente no existían proveedores de datos ni plataformas de trading retail para manejar información de la cinta y el orderbook, de manera confiable. NinjaTrader 6.5 fue la primera plataforma retail de trading electrónico en ofrecer la posibilidad de desarrollar sistemas automáticos basados en la cinta y el orderbook. A fecha de hoy NinjaTrader 8 es posiblemente la mejor y más potente plataforma retail de trading electrónico para gestionar automáticamente la información procedente de la cinta y el orderbook.
  • En función de su autonomía:
    1. Desatendidos: están funcionando las 24 horas del día.
    2. Auxiliados: se arrancan y se paran en cada sesión.
Sobre la autonomía de los sistemas automáticos

En cualquier caso y por muy autónomo que sea un sistema, siempre requerirá alguna intervención externa puntual. Tanto por causas funcionales; por ejemplo en los contratos de futuros, para actualizar el instrumento en el vencimiento. Como por causas físicas; por ejemplo si surgen problemas que afecten al hardware o a las comunicaciones, y que obliguen a restaurar las conexiones del sistema con el bróker y/o datafeed.

Aparte, cualquier sistema automático puede incluir en su código un gestor de intervalos de fecha y hora para manejar el comportamiento del sistema en esos intervalos de tiempo. No confundir esta funcionalidad con la autonomía. La autonomía se refiere a los períodos de arranque y detención del sistema. El gestor de tiempo tiene que ver con la lógica del programa y para que funcione es obligatorio que el sistema esté arrancado y activo.

Una gestión de tiempo elemental sería la prohibición de enviar órdenes de entrada durante un intervalo de tiempo definido. Esto no significa que el sistema no funcione en ese intervalo temporal, al contrario, simplemente no observará las señales de entrada que se produzcan.

Trading semiautomático

Una vez resaltadas las diferencias entre el trading discrecional y el automático, el trading semiautomático sería todo aquél que no es puramente discrecional ni automático.

Una característica singular de los sistemas para trading semiautomático es que o bien la entrada o bien la salida requiere de la intervención manual, subjetiva y discrecional del trader. La otra puede estar gestionada por una solución automática que no precise de la participación del trader.

Ejemplos de trading semiautomático

En la plataforma NinjaTrader 8 se pueden enviar órdenes en el DOM (Depth of Market) junto con una estrategia ATM (Advanced Trade Management). Aquí el trader decide manualmente cuándo enviar la orden de entrada que quedará vinculada con una gestión automática de la salida mediante una estrategia ATM que se habrá programado previamente. El componente discrecional es el envío de la orden de entrada, y el componente automático la estrategia ATM para gestionar la salida.

Otro manera de trading semiautomático es emplear herramientas de dibujo o Drawing Tools en un chart de NinjaTrader 8 para operar. Las Drawing Tools admiten la configuración de alertas mediante unas condiciones que, al cumplirse, pueden provocar el envío de órdenes, a semejanza de las Condiciones y Acciones del Strategy Builder para las estrategias. Como ejemplo, podríamos dibujar una linea de tendencia alcista en un chart y configurarla para que se envíe una orden de compra si el precio rebota sobre la línea, o bien una orden de venta si el precio la rompe hacia abajo.

Drawing Tools

De aquí en adelante me centraré en las Drawing Tools de NinjaTrader 8 como herramientas auxiliares preferidas para el trading semiautomático sobre un chart.

Además, mediante programación también podemos crear nuestras propias Drawing Tools. Para ilustrar las posibilidades que ofrecen al trader estas herramientas, en la imagen siguiente muestro dos DrawingTools programadas a medida. La de la izquierda es una recta que muestra un resumen de los totales de OrderFlow de las barras englobadas. La de la derecha dibuja un perfil de detalle intrabarra con las lecturas de OrderFlow de cada ladder de la barra compuesta.

DrawingTools TapePlotter

Menú Alert…

Una vez dibujada la Drawing Tool sobre un chart – en la imagen siguiente se ha dibujado a modo de ejemplo un Fibonacci – hacemos clic derecho sobre ella para desplegar el menú contextual y elegimos la opción Alert … Se abrirá un diálogo donde podremos configurar las condiciones y las acciones.

Drawing Tool. Alert

Condiciones y acciones

Vamos a suponer que queremos abrir un corto si el precio rompe a la baja el nivel 38,20% del Fibonacci. La siguiente imagen muestra la configuración para dicha condición. Puede encontrar más detalles sobre la configuración de acciones en Condiciones y Acciones del artículo sobre el Strategy Builder.

Drawing Tool. Alert. Conditions

Pulsamos en el botón OK para cerrar el asistente de Conditions y regresamos a la ventana Alerts. Ahora tenemos que añadir la acción de respuesta cuando la condición anterior se cumpla. En la sección Actions pulsamos sobre la etiqueta add.

Drawing Tool. Add action

En la ventana Actions seleccionamos Submit an order, rellenamos las propiedades para la orden de venta y pulsamos OK. Cerramos la ventana Alerts y ya tendríamos activa la solución semiautomática para la entrada. Si de ahora en adelante el precio cruza a la baja el 38,20% del Fibonacci se enviará una orden de venta.

Drawing Tool. Alert. Submit order

Configurar la salida

Por el procedimiento que estamos viendo, la orden de salida no se puede establecer junto con la configuración para la entrada.

Sin embargo, al mismo tiempo que se envía la orden de entrada, se puede programar un aviso (mediante una alerta sonora o un pop-up, o por medio de un e-mail si no estamos atendiendo a la computadora), para advertirnos de la situación, y entonces colocar la orden de salida manualmente. En el diálogo de Actions tenemos todas las posibilidades:

  • Play a sound. Para reproducir un sonido.
  • Share a message. Para enviar un e-mail.
  • Show a pop up dialgo. Para mostrar un mensaje emergente en la pantalla.
  • Submit an order. Para enviar una orden al bróker.

Incluso podríamos volver a configurar otra Drawing Tool para gestionar la salida.

Conclusiones

Hemos visto cómo configurar el componente Alert de una Drawing Tool para construir una solución de trading semiautomático sin programar código. Un gran número de traders discrecionales encontrarían beneficio  en incorporar estas herramientas a su operativa habitual.

Pero mediante programación a medida y gracias a la combinación de los frameworks de NinjaScript + .NET, una estrategia automática puede reconocer las distintas Drawing Tools dibujadas sobre cualquier chart. De este modo traders automáticos podrían plantearse migrar su operativa a semiautomatica para beneficiarse del empleo de Drawing Tools en sus estrategias.

Es obvio que el éxito de la operativa recaerá en la idoneidad de la Drawing Tool dibujada.

Drawing Tool + Alert

El elemento Alert de las Drawing Tools de NinjaTrader 8 ofrece al trader discrecional la ventaja de añadir un componente automático para gestionar la orden de entrada sin escribir nada de código, y respetando al mismo tiempo todos los factores subjetivos de decisión del trader.

Sin embargo, podemos reconocer dos carencias en la configuración de las alertas de las Drawing Tools:

  1. No es posible configurar al mismo tiempo la orden de entrada y la de salida. Esto obliga al trader a estar pendiente de cuándo se abre la posición para, en ese momento, ordenar al menos el stop-loss de salida para proteger la posición. Hemos visto que disponemos de elementos que pueden advertirnos de la posición abierta, como pop-ups, sonidos, o envío de e-mails.
  2. No se tiene acceso a indicadores. En la configuración de las condiciones sólo se tiene acceso al precio y a la Drawing Tool.

Drawing Tool + Estrategia Automática

Mediante programación a medida es posible combinar una Drawing Tool dibujada por el trader con una estrategia automática. De este modo se disfrutarían de las ventajas de los dos ámbitos y no existiría ninguna limitación para gestionar órdenes de salida, leer indicadores, etc.

Por ejemplo se podría trazar una línea de tendencia en un chart y que una estrategia automática estuviera a la espera de la rotura, para una vez detectada esperar a que una combinación de indicadores apoyase la señal antes de abrir la posición. Incluso se podría trabajar multi-instrumento para confirmar la rotura de línea de tendencia en varios instrumentos correlacionados, procesar datos de orderflow (cinta + orderbook), etc. Y todo desde una única estrategia.