Trading Tools: Recepción de órdenes en tiempo real de una estrategia

Las Trading Tools de Visual Chart son unas potentes herramientas basadas en la tecnología COM (Component Object Model) que permiten acceder a la información que se maneja desde nuestra plataforma a través de cualquier entorno de desarrollo compatible con dicha tecnología.

Como ya hemos visto en anteriores artículos, podemos descargar información de una estrategia desde un programa cliente usando a Visual Chart como proveedor de datos. En dichos casos siempre hablamos de la descarga de operaciones realizadas durante el histórico. Sin embargo, también es posible solicitar las órdenes que pudieran haber activas durante el tiempo real.

Un ejemplo de ello lo tenemos en la siguiente aplicación  realizada, como en otras ocasiones, usando como programa cliente Microsoft Excel. Pueden descargar el archivo desde este enlace;

Ejemplo Eventos Estrategia v6


Acerca de la hoja Excel Eventos Estrategia
Antes de nada, en caso de que queramos utilizar esta aplicación, es necesario realizar unos pasos previos para poder enlazar ambos programas. Dichos pasos están explicados en uno de nuestros artículos al que pueden acceder desde este enlace.

Una vez abrimos la hoja Excel, observamos que contiene el siguiente diseño:

La plantilla está dividida en dos partes claramente diferenciadas; por un lado, la cabecera, donde encontramos los parámetros que debemos configurar para poner en marcha el servicio. Y por otro lado, a partir de la fila siete, la entrada de datos que se irá actualizando conforme llegan nuevas barras durante el tiempo real.

En lo relativo a la configuración de la hoja Excel, es necesario especificar lo siguiente:
1. Símbolo del producto sobre el que queremos aplicar la estrategia y fecha de inicio. El código siempre debe seguir esta estructura:

010 + Código Mercado + Código Producto.

Por ejemplo, si queremos descargar los datos de Santander, pondremos:

010 + 060 + SAN.MC = 010060SAN.MC

Es recomendable, al menos una vez, abrir desde Visual Chart 6 un gráfico del producto a descargar.

2. Compresión.
Desde aquí especificamos si queremos obtener los datos de 5 minutos, 1 día, etc...

3. Nombre de la estrategia
En esta casilla indicamos el nombre que tiene asignada la estrategia que queremos usar.

4. Botones de inicio y apagado.
Estos botones permiten empezar a recibir datos y también para parar el proceso. Aclarar que una vez que pongamos el proceso en marcha, el sistema se cargará sobre el producto indicado con los parámetros que dicha estrategia tenga predeterminados.

Puesta en marcha
A partir del momento en el que pulsamos el botón OK, la hoja Excel rellenará una nueva fila con las órdenes activas que puedan haber en la barra que acaba de finalizar.Veamos un ejemplo.

Queremos ver las operaciones que hace en tiempo real una estrategia que hemos diseñado llamada ruptura de bandas. Nos interesa probarla sobre el gráfico de 5 minutos del Dax futuro. Por tanto, rellenamos la cabecera de la hoja Excel del siguiente modo:

Actualmente, la estrategia está comprada de 1 contrato y tiene activas en mercado las siguientes órdenes de venta:

Si pulsamos el botón OK de la aplicación, pasados unos segundos durante los cuales hará la petición de datos y los cargará en el programa, veremos que sobre la hoja Excel se dibujan las correspondientes órdenes:

Además de las dos ventas de salida, observamos que se ha incluido una orden de compra en stop. Esta orden no aparece en Visual Chart porque al estar la estrategia con una posición de compra abierta, la orden del mismo tipo directamente la descarta (ya que por defecto no permite acumular posiciones).

Conforme avanzan las nuevas barras del tiempo real, podremos ver que también se actualiza con nuevas filas la hoja Excel:

Programación
En lo que respecta a la programación de la aplicación, cabe destacar que para poder recibir nuevos datos se hace uso del evento OnNewDataSerieBar. Este evento se ejecuta cada vez que aparece una nueva barra, momento en el cual se solicita el listado de órdenes almacenadas por parte del objeto System. Para ello, existen una serie de propiedades del objeto System que nos aportan distintos datos relativos a la orden en cuestión, que serían:

- GetOrderSide (compra o venta).
- GetOrderPrice (precio de disparo).
- GetOrderType (en stop, a mercado, limitada).
- GetOrderVolume (contratos de la orden).

Para poder hacer uso de los eventos de la clase DataSourceManager, es necesario declarar el objeto con la propiedad WithEvents, tal que así:

Private WithEvents g_Objects As VCDataSourceLib.DataSourceManager

Es interesante también comentar los pasos que debemos dar para crear el objeto System.  Para generar un objeto System, hacemos uso de la función NewSystem del objeto DataSourceManager.

Esta función incluye dos parámetros; por un lado, el objeto DataSource que corresponderá al histórico sobre el que queremos aplicar la estrategia, y por otro lado, el código de la estrategia a calcular. El código de la estrategia es un dato que a priori desconocemos, ya que no tiene por qué coincidir con el nombre de la estrategia. De modo que antes de hacer la llamada a la función NewSystem debemos buscar cuál es el código de la estrategia que queremos usar.

Una forma sencilla de hacerlo es usando la función que lleva incluida la macro de Excel llamada Buscar_Codigo_Sis:

Esta función coge el nombre de la estrategia, y a partir de él, realiza la búsqueda del código utilizando un objeto CatalogItems.

Comentarios

Entradas populares de este blog

Trading Tools: Descarga de históricos para Visual Chart 6

Indicador Cuidatar

El indicador Volume Distribution