Ejecución Algorítmica con TradeStation

Si bien están incluidas dentro del listado de Analysis Techniques, lo cierto es que TradeStation posee entre sus indicadores algunas joyas que nos van a permitir hacer algo que no parece evidente a primera vista en un indicador, y que no es otra cosa que realizar la ejecución algorítmica de ciertas estrategias de forma muy sencilla aprovechando la potencia de las clases de formularios en EasyLanguage. Pasamos a ver en detalle cada uno de ellos.

Algo – Bracket Orders Winform – Entry OCO with OSO Exit

Este indicador nos permitirá lanzar órdenes de tipo bracket, esto es, un par de órdenes buy stop y sell stop que incorpora la condición de que se cancela la contraria una vez se ejecute una de ellas (condición OCO, One Cancels the Other). Adicionalmente se incorpora la configuración programada de un stop loss y un take profit para la orden que ha sido ejecutada (condición OSO, One Sends the Other).

Veamos cómo funciona en la práctica: una vez hemos abierto el gráfico de la acción o del vencimiento de futuros que nos interese, hacemos click con el botón derecho sobre el gráfico y seleccionamos “Insert Analysis Technique”. En el listado que nos aparece cogemos Algo – Bracket Orders Winform – Entry OCO with OSO Exit:

A continuación nos aparecerá un menú donde configurar el comportamiento de las brackets. Previamente es importante activar el lanzamiento de órdenes entrando en la pestaña General dentro de la configuración del indicador y marcando la casilla Enable Order Placement Objects:

Ahora le damos a OK y nos aparecerá esta caja tan chula al lado del gráfico:

Vamos a configurar una bracket en el futuro del DAX. Para eso configuramos los valores de la siguiente manera:

Como podéis ver en el pantallazo anterior hemos seleccionado el número de cuenta correspondiente a futuros, hemos indicado que queremos que ponga un stop de compra y de venta 10 puntos por encima y por debajo del precio actual, y que a la orden que se ejecute primero le ponga un stop loss y un take profit de 20 puntos.

Si ahora hacemos click en Issue Entry and Exit Brackets, veremos como TradeStation coloca todas las órdenes directamente en el gráfico:

A partir de aquí no tenemos que hacer nada más, el sistema gestiona todo automáticamente. Si quisiéramos cancelar todas las órdenes bastaría con pinchar en el botón Cancel Symbol’s Open Ords.

Como podemos ver, este tipo de ejecución de órdenes resulta muy cómoda para trabajar con estrategias de roturas de rango sin necesidad de programar ni una sola línea de código.

Algo – Pairs Trading

En este caso tenemos un indicador que nos permite hacer trading de pares (esto es, comprar un determinado valor y simultáneamente vender otro). En particular, este indicador está diseñado para operar pares de acciones (preferentemente muy líquidas) por lo que deberemos insertarlo en ventanas que contengan dos símbolos. Para nuestro ejemplo hemos seleccionado las acciones de Intel y AMD; la ventana donde insertemos el símbolo deberá tener un aspecto similar a este:

De cara a los cálculos que veremos a continuación, el primer gráfico que insertemos será considerado Data1 mientras que el segundo será Data2.

Procedemos a insertar el indicador:

Antes de configurar sus propiedades en la pestaña Inputs deberemos hacer lo mismo que en el caso anterior: activar la casilla Enable Order Placement Objects dentro de la pestaña General.

Seguidamente pasamos a la pestaña Inputs que ya os muestro configurada:

Os explico un poco los campos que aparecen ahí:

  • Enabled: deberemos escribir True para activar la ejecución de órdenes.
  • AccountNumber: deberemos escribir entre comillas el número de nuestra cuenta para acciones.
  • DollarsPerTradePerSymbol: aquí pondremos la cantidad en dólares que invertiremos en cada una de las acciones cuando se den las condiciones adecuadas.
  • LongEntryCond: establece cuando se comprará Data1 (en el ejemplo INTC) y se venderá Data2 (AMD). En el ejemplo la condición que viene por defecto es la siguiente:

    Average (C Data1 / C Data2, 5) crosses under Average (C Data1 / C Data2, 10)

    Es decir, cuando la media de 5 períodos del cociente de cierres de las acciones cruce a la baja a la media de 10 períodos del mismo cociente se comprará Intel y se venderá AMD.

  • ShortEntryCond: establece cuando se venderá Data1 (INTC) y se comprará Data2 (AMD). En el ejemplo la condición que viene por defecto es la siguiente:

    Average (C Data1 / C Data2, 5) crosses over Average (C Data1 / C Data2, 10)

    Es decir, la condición contraria a la de entrada larga.

  • Los parámetros LongCondPlotPrice, ShortCondPlotPrice, PaintFirstRTBar y RTBarColor sirven para determinar dónde se pintan puntos cuando se dan las condiciones definidas anteriormente, y marcar el momento del tiempo en el que se ha insertado el indicador.

Si hemos seguido todos los pasos correctamente, al hacer click en Ok deberíamos tener en pantalla algo como esto:

Podéis ver cómo el algoritmo ya nos marca los puntos de compra y venta de la estrategia (puntos cian y magenta). Asimismo justo segundos antes de sacar el pantallazo, veréis que el algoritmo ha ejecutado una venta en Intel y una compra simultánea en AMD (esto es, ha vendido el par):

Como podemos ver, este indicador permite gestionar de forma muy cómoda el trading de pares, aunque se echa en falta poder utilizarlo también en otros tipos de activos como futuros o divisas. No obstante al final de este artículo veréis que hay solución para este problema ;).

Algo – Simple Algos Winform

Con este indicador podemos ejecutar una orden grande dividiéndola en trozos más pequeños hasta completar la orden. En este caso se utilizan porcentajes de volumen que se van lanzando secuencialmente hasta sumar el total deseado.

Para utilizarlo, simplemente insertamos el indicador:

Nuevamente antes de configurarlo activamos la casilla Enable Order Placement Objects dentro de la pestaña General.

Ahora vamos a la pestaña Inputs y nos encontraremos estas opciones:

Os explico un poco lo que hace cada parámetro:

  • InitialFormAccountNumber: debemos escribir el número de cuenta entre comillas.
  • InitialFormTotDesiredPosn: tamaño total de la posición que deseamos comprar.
  • InitialFormSizeOfEachOrder: tamaño de cada división de la orden en caso de usar ventanas de tiempo para trocear la orden.
  • InitialSecondsBtwnOrders: espaciado en segundos entre cada orden.
  • InitialVolumeParticipPct: aquí especificamos el porcentaje del volumen negociado durante el espaciado establecido en el parámetro anterior en caso de usar el algoritmo de participación de volumen.
  • InitialCheckedTradeStockInRoundLots: si lo ponemos en True el algoritmo operará con Round Lots, esto es, paquetes de 100 acciones, ignorando el valor del parámetro anterior.
  • InitialCheckedCancOpnOrdsOnUninit: si lo ponemos en True cancelará cualquier orden abierta cuando desactivemos o eliminemos el indicador del gráfico.

Usando la configuración que acabamos de ver, pulsamos en Ok para insertarlo en el gráfico de Tesla:

Como podemos ver, antes de hacer click en Run Algo (botón verde) podemos elegir el algoritmo a aplicar (Simple Time Slice o Simple Volume Participation).

Una vez lo activemos veremos como el algoritmo va lanzando sucesivas órdenes de compra hasta acumular la cantidad deseada. En todo caso, es recomendable experimentar en demo con el algoritmo hasta familiarizarse con su forma de operar antes de lanzarlo en real.

Conclusión

Acabamos de ver una serie indicadores incluidos en TradeStation que nos permiten ejecutar estrategias de rotura de rango, gestionar operativa con pares de acciones y ejecutar grandes órdenes en el mercado como si fuéramos auténticos expertos en ejecución algorítmica.

Y lo mejor de todo es que todos estos indicadores vienen con su código en EasyLanguage, por lo que a partir de los forms que vienen definidos en esos indicadores podemos construir nuestras propias cajas de ejecución algorítmica de órdenes.

Saludos,
X-Trader

COMPARTIR EN: