Blog Sistemas de trading
Sistemas automáticos de trading y money management.

Diseño de estrategias: control cierre fin de sesión (III)

Desde hace unos meses, encontramos disponible para todos los públicos Visual Chart 6. Esta nueva versión de dicha plataforma presenta muchas mejoras que pueden resultar especialmente interesantes para los desarrolladores de estrategias, puesto que se han centrado los esfuerzos en cubrir las necesidades de este colectivo. En lo que respecta al estudio que estamos analizando durante los últimos artículos, el cambio supone una excepcional ventaja, ya que simplifica el modo mediante el cual comprobamos el punto final de cada una de las sesiones.

Las nuevas funcionalidades de Visual Chart 6

Desde el punto de vista de la programación, el estudio de la última barra del día es mucho más fácil de gestionar en la nueva versión, gracias a una serie de funciones y propiedades que se han incorporado.

En concreto, estas nuevas funciones y propiedades serían las siguientes:

  1. IsLastDayBar
  2. CurrentTodayBar

La propiedad IsLastDayBar nos indica si estamos en la última barra de la sesión. Si la propiedad está en True, quiere decir que efectivamente estamos en la última barra y en caso contrario que no.

La función CurrentTodayBar devuelve el número de barra en el que nos encontramos en cada momento dentro de la misma sesión. Es decir, que devolverá un valor en el que la primera barra de cada sesión siempre será uno, la siguiente dos, y así hasta llegar a la última barra.

Con la combinación de la propiedad IsLastDayBar y la función CurrentTodayBar vamos a montar la nueva regla de control de cierre fin de sesión. Ahora, en lugar de fijarnos en el horario de las barras, nos vamos a fijar en la posición que éstas ocupan dentro de cada día. Esta opción es mucho más ágil y más versátil tanto para adaptarla a cualquier instrumento como para el proceso de optimización.

 

Explicación teórica

Lo primero que vamos a hacer es explicar el proceso. Hasta ahora, comprobábamos cuál era la hora de cierre de cada instrumento y comparábamos dicho horario con el de las barras del gráfico. Además, veíamos cómo calcular la hora previa a la hora de cierre para evitar que la liquidación pudiese quedar pendiente hasta la siguiente sesión. En el anterior artículo vimos que este proceso era bastante engorroso. Pues bien, con el cambio que vamos a realizar todos estos cálculos los evitamos ya que la decisión de liquidar dependerá no del horario si no de la posición de la barra dentro del mismo día.

Por ejemplo, en éste gráfico sobre el futuro del Dax a 10 minutos, observamos que una sesión contiene 84 barras:

visual1

Queda claro que si queremos liquidar posiciones en la barra previa al cierre de sesión, debemos enviar dicha orden cuando se alcance la barra número 83.

Podemos contar con un parámetro que determine en qué barra exactamente queremos cerrar respecto a la última barra de la sesión. Por ejemplo, si el parámetro se llama FinishBar y su valor es 1, quiere decir que queremos cerrar en la barra 83 (84 -1). Si su valor es 5, quiere decir que queremos cerrar en la barra 79 (84 – 5), es decir, 5 barras antes de la última barra.

Con este ejemplo queda claro lo que pretendemos desarrollar. Veamos ahora el cómo.

Diseño de la regla de cierre

El primer paso que debemos de dar es cómo localizar ese 84 del que hablábamos en el ejemplo. Este dato no está disponible de forma directa, por lo que lo debemos calcular. ¿Cómo? Pues con la combinación de las funciones y propiedades de las que hemos hablado antes.

Lo primero, será crear una variable que represente al número total de barras por día. La vamos a llamar totaldaybars. En lenguaje VB.NET quedaría declarado tal que así:

visual2

Como vemos, la inicializamos a cero para que no guarde valores residuales.

Hecho esto, ahora tenemos que calcular dicho número total. Para ello, esperaremos a que se cumpla que la propiedad IsLastDayBar sea cierta, y cuando pase eso, actualizamos totaldaybars con el valor de la función CurrentTodayBars:

visual3

Con esto, ya sabemos qué número de barra corresponde con la última barra de la sesión. 

El siguiente paso será añadir la regla del control horario. Lo primero, será restringir la operativa hasta que no tengamos un valor válido asignado a la variable totaldaybars. Hecho esto, debemos comparar el número actual de cada barra (con la función TodayCurrentBar) con la variable totaldaybars menos el parámetro FinishBar (recuerden la fórmula que hemos visto antes sobre el ejemplo del Dax). Todo esto quedaría del siguiente modo:

En VB.NET

visual 4

En la Plataforma Visual

visual5

Aplicando la estrategia a un gráfico

Una vez añadida la regla a la estrategia, ya sólo nos quedaría comprobar su funcionamiento sobre un gráfico.

Haremos la prueba sobre el mismo gráfico del futuro del Dax de 10 minutos. Si por ejemplo, probamos a darle al parámetro FinishBar un valor de 8, podemos comprobar cómo, efectivamente, envía la orden cuando quedan ocho barras para finalizar la sesión:

visual6

Si cambiamos de compresión, obviamente, la hora de cierre variará, pues siempre se está tomando como referencia ocho barras desde la última barra:

visual

Conclusiones

Con este último ejemplo damos por finalizada la gestión de cierre por fin de sesión. Podemos decir que ésta tercera entrega nos presenta el método más interesante de todos los vistos, especialmente por su sencillez y porque, además, supone una manera mucho más efectiva de optimizar el parámetro que determina el momento de cierre (en este caso, FinishBar).

Departamento de Estrategias

 

¿Qué Bróker se adapta mejor a tu perfil?

¿Quieres dar tus primeros pasos en bolsa o cambiar a un bróker que se adapte mejor a tus necesidades? Te ayudamos a encontrar el mejor bróker de acciones y derivados que mejor se adapta a ti en menos de 2 minutos. El estudio es gratuito y sin compromiso.


¡Comenzar búsqueda!
Herramienta gestionada por Rankia S.L.
Autores
  • Rankia

    Portavoz oficial de la empresa editora de este sitio web Rankia

  • Alexey de la Loma

  • Mario Somada

  • Oscar Cuevas

    Ingeniero Informático dedicado durante más de diez años al diseño de estrategias e indicadores técnicos sobre distintas plataformas (Visual Chart, ProRealTime, Multicharts...).

Envía tu consulta