Tras varios intentos de automatizar sistemas (véanse los artículos de los días  6 de Abril, 20 de Julio y 12 de Diciembre para saber para saber de qué va todo esto) podemos decir que por fin el sueño de Leonardo se ha hecho realidad. Y es que ya podemos automatizar sistemas en tiempo real sin comisiones adicionales y una manera más o menos sencilla.

Pero lo mejor de todo es que gracias a ello no volveremos a ver un gráfico ni a sentir avaricia, miedo, ansiedad... Sinceramente pienso que este artículo puede molestar a más de un león o a alguna de esas personas que mueven los hilos del mundo; pero no nos importa, ya va siendo hora de que la tarta se reparta mejor entre todos y que los que siempre ganan dejen de ser los mismos. Por lo menos ahora estaremos en igualdad de condiciones en esta singular lucha diaria que son los mercados.

Y dirán Vds.: ¿cómo hago yo eso? La respuesta es Excel y los enlaces DDE, algo de lo que todo el mundo dispone. Para ello, no tienen más que ser clientes de Interactive Brokers y disponer de la TWS actualizada y con las últimas librerias de las APIs actualizadas.

La idea a grandes rasgos de lo que vamos a contarles es la utilización de una hoja de cálculo de Excel en la que, mediante la utilización de una serie de macros escritas en VBA (Visual Basic para Aplicaciones), se reciben y almacenan datos, se realiza cálculos sobre ellos y se lanzan órdenes en base a esos cálculos, todo ello de forma automatizada y sin intervención del usuario. Por ello, sería recomendable que si Vd. no conoce este lenguaje a fondo, se descargue y lea a fondo el manual en castellano que subí hace unas semanas al Foro sobre el tema.

Y es que esta idea, a pesar de parece algo completamente nuevo en España para el especulador de a pie, que se deja las pestañas dia a dia delante de la pantalla, en EEUU y en otros países europeos multitud de traders con conocimientos de programación operan utilizando una hoja de cálculo similar a la que les comento. Sin duda, la figura del trader y la del experto en informática está cada vez más unida...

Bien, pasemos a la acción: descarguense la hoja de cálculo que les he dejado en el Foro denominada Trading Machine v 1.0b y sean bienvenidos al fantástico mundo de la automatización doméstica de sistemas de trading.

Lo primero que deben hacer es configurar bien Excel para que todo funcione correctamente ya que la TWS envía los datos en el sistema anglosajón (Separador Decimal = Punto (.) y Separador de Miles = Coma (,)). Por ello, si dispone de Excel XP ó Excel 2003, vaya a Herramientas -> Opciones -> Pestaña Internacional, desmarque la casilla Usar separadores del sistema y ponga un punto en el Separador de Decimales y una coma en el de Miles. Si no dispone de esa versión de Excel, deberá ir al Panel de Control de Windows y en Configuración Regional modificar esos parámetros con la desventaja de que el cambio afectará a todo el sistema Windows.

Bien, ahora ejecute la TWS en modo Demo (Username = edemo, Password = demouser), configurela a su gusto y, a continuación, abra la hoja de cálculo que se ha descargado. Lo primero que hará la hoja es solicitarle permiso para ejecutar macros; dado que pueden fiarse de mí puedo garantizarles que la hoja no contiene ningún virus así que pueden habilitar macros sin problema (si tuvieran problemas con este punto vayan a Herramientas-> Opciones-> Pestaña Seguridad -> Seguridad Macros y ponganlo en nivel Medio). Después Excel les solicitará actualizar vínculos; diganle que sí y si todo va bien deberían ver datos del Eurostoxx en tiempo real procedentes de la TWS. Si desean cambiar el contrato que se muestra en pantalla no tienen más que rellenar los campos pertinentes de la hoja de cálculo (Symbol, SecType, Expiry y Exchange) y pulsar sobre el botón Request Quote y automáticamente aparecerán los datos de ese contrato.

Ahora vamos a la parte más interesante: los botones Start y Stop. Con ellos iniciamos la macro que recibe datos de la TWS y los almacena por filas, calculando además Apertura, Máximo, Mínimo y Cierre. El minutaje será el establecido en la celda A11 el cual debe ser obligatoriamente divisor de 60 (si ponen el ratón encima verán los minutajes que admite). En este punto, cabe indicar también que es muy importante que no borren el contenido de la fila 14 o de lo contrario la hoja de cálculo no funcionará bien. Si desean borrar los datos recolectados por la hoja de cálculo no tienen más que hacer click en el botón Clear Data.

Bien, ya tenemos datos almacenados por filas en tiempo real. Ahora hay que operar con esos datos. Para ello, deben activar el sistema de trading que viene incorporado con la hoja de cálculo. Dicho sistema lo que hace es comparar el último cierre con el anterior. Si los cierres son crecientes el sistema lanzará una orden de compra y escribirá BOT en la celda C2 (debajo de SideNow) mientras que si son decrecientes lanzará una venta y escribirá SLD en la celda C2. Básicamente se trata de un sistema muy tonto, del tipo Stop and Reversal (es decir, se gira si estamos comprados y se da la condición de venta y viceversa). Por ello, cada vez que deseen hacer pruebas con el sistema que he implementado en la hoja de cálculo deberán borrar el contenido de las celdas C2, D2 y E2 para que todo vaya bien.

En resumidas cuentas, mi consejo es que sigan los siguientes pasos para hacerse con la hoja de cálculo:

1. Comprueben que efectivamente reciben datos de la TWS en tiempo real, pulsando en Request Quote. Pueden probar esto también con su propia cuenta en vez de la Demo, si ésta última va muy lenta. Para ello inicien la TWS con su Username, abran la hoja de cálculo y cuando les solicite que si desean ejecutar la aplicación "edemo", digan que No a todo y cambien el Username de la hoja por el suyo antes de solicitar datos pulsando en Request Quote.

2. Comprueben que en la celda B2 pone "No" (sin comillas). Pulsen en Start y observen cómo va almacenando los datos. Verifiquen que no hay ningún error. Cuando tengan bastantes datos, pulsen en Stop y después en Clear Data para borrar los datos almacenados

3. Por último, con la macro en Stop y la hoja limpia de datos, escriban Yes en la celda B2 y pulsen en Start de nuevo, Observen ahora cómo lanza las órdenes en función de los cierres (los dos anteriores al último que está actualizándose en tiempo real). Observen el comportamiento de la TWS. En este punto, observen que mientras no haya dos cierres como mínimo no se lanzan órdenes (ello se debe a que he programado la macro para que si la última fila no es mayor de 16, no lance órdenes)

4. Ahora finalmente la parte más dura: si domina VBA o ha leido el manual que les he comentado, pulse Stop y teclee Alt + F11 y estudie minuciosamente el código de las macros. Todo el código está comentado en castellano y creo que con una mínima base pueden entender más o menos lo que las macros hacen. En este punto, si tienen dudas sobre la forma en que se construye un ticker o se lanza una orden conviene que vean la siguiente referencia de la página de Interactive Brokers, http://www.interactivebrokers.com/php/apiUsersGuide/apiguide/excel/dde_syntax_for_excel.htm

Como pueden apreciar, ya no son necesarios gráficos para operar. La hoja de cálculo actúa como servidor de datos, calculadora del sistema y lanzador de órdenes. Los gráficos ahora sólo serán un divertimento para trazar rectas y retrocesos o un punto de partida para optimizar sistemas. Pero desde este artículo espero que muchos se planteen abandonar mirar el gráfico mientras operan.

Y es que la máquina es más poderosa que el ojo humano en algunos aspectos. Porque veamos: si Vd. tiene un sistema que lanza 20 órdenes cada 15 minutos manualmente seguro que no es capaz. Pero la máquina sí y mucho más rápido. Y la máquina no siente; ni tiene miedos. En definitiva, creo que esta hoja de cálculo es todo un avance respecto a lo que había hasta el momento en las webs de finanzas y Bolsa españolas.

Ahora la pelota queda en su tejado. Calcular medias móviles, estocásticos y otros indicadores técnicos, así como técnicas más complejas como regresiones lineales o con modulos diversos de Excel incluso modelos ARCH o redes neuronales en tiempo real. Todo es cuestión de programar las reglas de una forma similar a como las programan en Visual Chart, Tradestation o Metastock pero con la ventaja de poder usar todos los tipos de órdenes de la TWS o incluso de poder operar trabajando sobre distintos niveles de posiciones (por ejemplo, situar una compra en la tercera posición de compra y una venta en la cuarta posición de venta para hacer "bracket trading". En fin, innumerables posibilidades por programar que Vds pueden intentar llevar a la práctica, animándoles a que nos envíen sus propias hojas de cálculo, con mejoras sobre la mía o con otros sistemas tan simples y tontos como el mío que puedan servir como punto de partida para programar nuestros sistemas.

Como punto de partida a la hora de calcular indicadores les recomiendo dos webs que permiten incluir en Excel funciones de indicadores técnicos: una de ellas es http://www.analyzerxl.com, en mi opinión el mejor con diferencia, con 146 funciones de indicadores técnicos. El problema es que es de pago y eMule nadie se digna a compartirlo ;-). Por ello, una alternativa gratuita (aunque peor porque trabaja sobre matrices y vectores en lugar de con celdas es http://ta-lib.org. Descargándose la versión para Windows podeís examinar algunas hojas de cálculo que trae de muestra con varios ejemplos de fórmulas para calcular indicadores técnicos (se instalan en una subcarpeta llamada Excel).

Todo esto naturalmente supone un paso intermedio y natural en el viaje hacia la programación de nuestras propias APIs en Visual Basic, C++ o con la ayuda de entornos como QuantStudio o Modulus FE

Espero sus comentarios, los resultados de sus pruebas y sus primeras hojas de cálculo... ;-)

Un saludo
X-Trader

PD: Deseo manifestar desde aquí mi agradecimiento a Antonio Lengua, de la lista de correo IB Users de Yahoo! por darme el punto de partida para desarrollar toda la hoja de cálculo

NOTA: X-Trader.net declina toda responsabilidad por un mal uso o un uso incorrecto de la información contenida en el presente artículo; asimismo, declinamos toda responsabilidad sobre las pérdidas o ganancias derivadas de la automatización de sistemas siguiendo ésta u otras tácticas propuestas en la web.



Si te ha gustado este articulo, ¡compártelo en redes!