Puesto que dices:
Sergio escribió: me gustaria que compartiera su experiencia, y me indicase por donde empezar
... pues allá voy.
Yo estoy programando una aplicación propia con la API de IB, pero en C#.
Todavía está muy "en pañales", pero te comento mi "hoja de ruta" y mi planteamiento :
- En primer lugar lo que debes definir bien es tu objetivo. No se trata de reinventar la rueda. Si ya hay un programa que haga lo que quieres, úsalo antes de meterte en el tema.
Mi objetivo es doble: por una parte quiero crear mi propia plataforma para sistemas, y las que conozco me resultan muy ingratas. No conozco nada de Visual Basic, y sólo tengo nociones de Java (aunque todos los lenguajes se parecen mucho), y me da mucha pereza aprender alguno de los lenguajes creados para otros programas de trading.
En este aspecto, mi programa sería como una "caja negra": recibe datos, hace cálculos y, llegado el caso, opera. Como es para mi solo, no necesitaré florituras.
Por otra pare, tengo algunas ideas que quiero plasmar en forma de indicadores, representación gráfica de algunos datos que no encuentro en otros sitios.
- En segundo lugar te indico por donde he empezado yo.
a) Tema de redes básico. Sockets y poco más. IB proporciona una API expuesta para Java y C++, con ejemplos. Instala el API y comprueba los ejemplos. En mi caso, proporciona un wrapper para la API, que expone sus eventos y métodos a través de la plataforma .NET. Por tanto, tampoco tengo ningún problema, con la ventaja de poder programar a la vez en J# (java), C#, VBasic.net (vade retro!) o cualquier lenguaje .NET, incluso mezcla de ellos.
b) En caso de no querer programar sockets, tienes la opción de usar un componente ActiveX que también instala y podrías usar con C++. El rendimiento es peor, pero es fiable y está basado en eventos.
El peor de los casos sería usar DDE para recibir los datos.
c) Tema de bases de datos. Pues nada, a desempolvar el SQL (de todas formas, no hará falta ser un experto). Mi propósito es guardar los datos en una base para su posterior análisis. Por tanto, mi aplicación no es sólo intradía. En mi caso, uso las apis de bbdd de la plataforma .NET, es decir, ADO.NET. El servidor de bbdd es el propio del sistema windows. Fácil y cómodo. Para tu caso, C++ tiene apis de sobra para bbdd.
d) Programación de servicios de windows. En mi caso, la parte que se encarga de recoger los datos y guardarlos en una bbdd, es (bueno, será) un servicio de windows. En C++, tampoco hay ningún problema en ese aspecto.
e) Programación gráfica. Para lo que yo quiero me basta con los servicios GDI+. En caso de necesitar más prestaciones gráficas, puedo usar DirectX, concretamente DirectDraw, y lo mismo para tu caso.
f) Programación multihilo. También hay que desempolvar este tema. Habrá algún proceso que lo requiera.
g) Finalmente, en cuestión de cálculo de indicadores sobre series de datos, me propongo usar la librería gratuita TA lib (ta-lib.org)
Bueno, este es el camino que estoy siguiendo. Espero que te sirva como orientación. Si encuentras otro camino, haznoslo saber por si es un atajo aprovechable.
saludos.