A la hora de diseñar una estrategia de trading, uno de los aspectos que tenemos que decidir es si la operativa debe finalizar cuando se produzca el cierre de sesión. En el presente artículo, vamos a plantearles un interesante método con el cual podremos gestionar esta circunstancia y añadirla a nuestras estrategias diseñadas en Visual Chart 5.
La gestión del cierre por fin de sesión
En Visual Basic
Aunque esta opción es muy válida, les vamos a proponer una idea mucho más versátil, puesto que a través de ella nuestras estrategias sabrán en todo momento el horario de cierre de cada mercado sin necesidad de tener que especificarlo manualmente. Sería así:
Uso de la función GetSymbolInfo()
Sin entrar en demasiados detalles, comentar simplemente que ésta función nos va a permitir conocer cierta información del producto financiero sobre el que apliquemos la estrategia.
Esto se consigue gracias a que la función incluye un parámetro mediante el cual podemos decidir qué clase de información nos interesa. A continuación mostramos el listado de datos que podemos consultar en base al valor que le demos a dicho parámetro:
Como vemos, si seleccionamos la opción SbiFirstSessionEnd, podemos obtener directamente el horario de cierre del subyacente… ¡que es precisamente el dato que andamos buscando para cerrar los negocios a fin de día! Gracias a esto, no tenemos que añadir ningún parámetro, sino que simplemente extraemos el horario de dicha función y lo usamos en la condición previamente vista:
En Visual Basic
- Incluir una variable local a la que hemos llamado endsession.
- Asignar a dicha variable el valor devuelto por la función, especificando en la función que queremos saber el horario de fin de sesión.
- Sustituir endsession por el parámetro que habíamos puesto antes.
En la Plataforma Visual:
En PDV el proceso es algo más complicado. La función GetSymbolInfo() no aparece dentro del listado de funciones, por lo que para hacer referencia a ella debemos declararla como se muestra en la imagen. Mucho ojo, pues hay que añadir un punto antes de la función.
Gracias a esto, independientemente del mercado sobre el que actuemos, la estrategia cerrará posiciones en la última barra de la sesión:
En la imagen vemos una estrategia a la que le hemos aplicado el diseño anterior. Como vemos, no incluye ningún parámetro horario, y sin embargo detecta cuál es el horario de cierre, en este caso, las 18:00 de la tarde, y cierre en ese momento.
Relativo a lo que sucede en tiempo real
Aprovechando que tratamos este tema, no quiero pasar por alto la importante diferencia que existe entre lo que observamos en backtesting y lo que sucede en real cuando usamos órdenes del tipo Al Cierre. Este tipo de órdenes de Visual Chart están muy bien para poder detectar la barra donde se cumplen las condiciones que establezcamos tanto de entrada como de salida, si bien, el punto de ejecución puede variar notablemente en función de la volatilidad del mercado.
Me explico. Las órdenes AlCierre, en real, se envían cuando se produce el cambio de barra. Por tanto, en la mayoría de los casos terminan ejecutándose al precio de apertura de la barra siguiente:
Esto supone que podemos sufrir un cierto margen de deslizamiento, el cual basta con integrarlo en los ajustes del sistema para tenerlo en cuenta a la hora de estudiar las estadísticas.
Pero cuando usamos este tipo de órdenes para cerrar al final de sesión, la situación es más grave, puesto que si esperamos a la última barra para liquidar posiciones abiertas, hay muchas posibilidades de que la orden acabe ejecutándose al día siguiente, dejándonos abiertos de un día para otro.
Sí que es cierto que una vez finalizada la última barra se puede generar el tic de liquidación, pero corremos el riesgo de que dicho tic no se envíe o que nuestra orden no entre en ese momento.
La reflexión por tanto, sería que, para evitar sorpresas, deberíamos modificar el horario de cierre para que la liquidación del negocio abierto se produzca una barra antes del cierre de sesión, así sabremos con certeza que tenemos margen suficiente para que se liquiden las posiciones abiertas.
¿Quiere decir con esto que todo lo explicado anteriormente no nos sirve de nada? Pese a lo que puedan pensar, sí que nos va a servir, ya que al igual que hemos detectado automáticamente el horario de la última barra de cada sesión, también podemos detectar el horario de la penúltima barra.
En el siguiente artículo de éste blog explicaremos cómo poder hacer esto. ¡No se lo pierdan!
Oscar Cuevas