Programa propio...

Todo sobre los proveedores de datos en tiempo real.
Sergio
Mensajes: 104
Registrado: 06 Mar 2007 19:23

Programa propio...

Mensaje por Sergio »

Saludos al foro.

Me gustaria saber si hay alguien que utilice su propio programa para tratar los datos recibidos en tiempo real, y que lo utilice para lanzar las ordenes de sus sistemas automáticos.

Me explico: la idea que tengo es hacer un programa que reciba por un lado los datos en tiempo real, y que envie las ordenes que el sistema o sistemas va generando. No tengo muy claro por donde tendria que empezar, pero supongo que con la API que proporciona IB para programar y a través de la TWS se podria realizar.

Si hay alguien que este realizando esto pues me gustaria que compartiera su experiencia, y me indicase por donde empezar. No tengo problemas para programar, me gustaria utiliar la API para c++.

Gracias y saludos.
Avatar de Usuario
X-Trader
Administrador
Mensajes: 12798
Registrado: 06 Sep 2004 10:18
Contactar:

Re: Programa propio...

Mensaje por X-Trader »

Sergio escribió:Saludos al foro.

Me gustaria saber si hay alguien que utilice su propio programa para tratar los datos recibidos en tiempo real, y que lo utilice para lanzar las ordenes de sus sistemas automáticos.

Me explico: la idea que tengo es hacer un programa que reciba por un lado los datos en tiempo real, y que envie las ordenes que el sistema o sistemas va generando. No tengo muy claro por donde tendria que empezar, pero supongo que con la API que proporciona IB para programar y a través de la TWS se podria realizar.

Si hay alguien que este realizando esto pues me gustaria que compartiera su experiencia, y me indicase por donde empezar. No tengo problemas para programar, me gustaria utiliar la API para c++.

Gracias y saludos.
Seguramente esto te interese ;-) :

https://www.x-trader.net/articulos/soft ... rader.html

Un saludo
X-Trader
"Los sistemas de trading pueden funcionar en ciertas condiciones de mercado todo el tiempo, en todas las condiciones de mercado en algún momento del tiempo, pero nunca en todas las condiciones de mercado todo el tiempo."
H.Seldon
Mensajes: 546
Registrado: 26 Abr 2005 14:38

Re: Programa propio...

Mensaje por H.Seldon »

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.
Avatar de Usuario
X-Trader
Administrador
Mensajes: 12798
Registrado: 06 Sep 2004 10:18
Contactar:

Mensaje por X-Trader »

Hey HS, que calladito te lo tenias ji ji... Ya nos contaras!!!

Un saludo
X-Trader
"Los sistemas de trading pueden funcionar en ciertas condiciones de mercado todo el tiempo, en todas las condiciones de mercado en algún momento del tiempo, pero nunca en todas las condiciones de mercado todo el tiempo."
H.Seldon
Mensajes: 546
Registrado: 26 Abr 2005 14:38

Mensaje por H.Seldon »

:D creo que no estará para la próxima KDD, pero a lo mejor para la siguiente...

smassax
Mensajes: 217
Registrado: 04 Oct 2004 15:40

Mensaje por smassax »

buenas a todos,

H.Seldon, muy interesante tu trabajo. Yo me habia mirado algo para programarlo en C# pero no di con el wrapper q comentas de la API.

Lo proporciona IB?? o te lo has creado tu??

si pudieras informarme un poco más d este punto te lo agradeceria

saludos
arruinao
Mensajes: 735
Registrado: 26 Abr 2005 18:32

Mensaje por arruinao »

Escrito por H.Seldon:
El peor de los casos sería usar DDE para recibir los datos.
El que suscribe usa DDE para recibir y procesar datos, además de operar. Todo ello cómodamente mecanizado en base a la hoja de cálculo "Trading Machine" (1ª versión) publicada por X-Trader. Operativa exclusivamente intradía.

Ciertamente la TM original me sirvió de base, aunque también es cierto que el sistema y sus peculiaridades, así como las adaptaciones, me las he tenido que currar yo, pero nada que no se pueda hacer dedicándole un poco de tiempo y ganas.

Tengo la sensación de que alguno o algunos dan más importancia a la forma que al fondo. ¿Quién no sabe manejar hoy día una hoja de cálculo?. Con el añadído de que no hace falta conocer, aprender o estudiar ningún lenguaje de programación. Excel tiene una opción de "grabar macros" que te permite generar código para automatizar un sinfín de tareas, a partir de ahí, se retoca, se prueba y finalmente se consigue lo deseado. Si tienes claro lo que persigues, antes o después conseguirás plasmarlo en algo útil y plenamente operativo.

No pretendo establecer una comparación entre si es mejor una u otra plataforma, simplemente expongo mi experiencia personal, y afirmo rotundamente que con una Hoja de cálculo se puede operar a plena satisfacción de una forma mecanizada, o automatizada, que para el caso es lo mismo.

S2
Avatar de Usuario
Tiotino
Mensajes: 990
Registrado: 20 Sep 2004 18:22

Mensaje por Tiotino »

yo tengo hecho algo parecido en excel.

Mediante ActiveX da de alta el mercado, crea la cotización del subyacente, crea y modifica ordenes, ya sean stop o limit.

Lo que no tiene es gestión automatizada de sistemas aunque lee ordenes en archivos txt, tipo tsimplus.

Le faltaría el tema de la base de datos y la creación de sistemas automáticos.

Básicamente estaba pensada para eliminar el slippage de las ordenes enviadas por sistemas automáticos, e incluso ganarle algunos pips al mercado.
Un abrazo

Tiotino

https://tradingpython.blogspot.com.es

@tiotino
H.Seldon
Mensajes: 546
Registrado: 26 Abr 2005 14:38

Mensaje por H.Seldon »

arruinao, no dudo que se pueda hacer todo eso y mucho más con la Excel y a través de DDE. Sólo he trasladado aquí los comentarios de los propios desarrolladores de IB, que hablan de su propia API en la ayuda y en el foro de Yahoo groups.
Por motivos de fiabilidad en la recepción de datos, consumo de recursos y otros parámetros, lo mejor es la conexión socket, luego el ActiveX y finalmente el DDE.

No le doy más importancia a la forma que al fondo, de hecho mi primera consideración es no perder de vista el objetivo: crear una aplicación que te permita correr un sistema, siempre que no se pueda con las herramientas que ya existen. Es decir, no reinventar la rueda, como decía.

Yo elegí este camino hace bastante tiempo por varios motivos, pero no quiere decir que sea el mejor ni el único. Como tu mismo dices, "No pretendo establecer una comparación entre si es mejor una u otra plataforma, simplemente expongo mi experiencia personal".

smassax, el wrapper lo proporciona IB, pero está en la versión beta de la API, la futura 9.1, que te puedes bajar del mismo sitio. Lleva un ejemplo para J# que usa un componente para la plataforma .NET, que también viene en el paquete. El código lo podrás traducir fácilmente a C#. Si quieres que compartamos código, estaré encantado.

Tiotino, muy interesante lo tuyo también, sobre todo si funciona !! :lol:

un abrazo, me voy a tirar petardos :-D :-D
arruinao
Mensajes: 735
Registrado: 26 Abr 2005 18:32

Mensaje por arruinao »

OK, pero insisto: "para matar moscas no es necesario un cañón, con un simple "spray" es suficiente".

S2
Avatar de Usuario
trikero
Mensajes: 739
Registrado: 24 Ago 2006 23:44

Mensaje por trikero »

h. seldon, desde el respeto , pero , viendo que controlas la programacion (todo aquel que reniegue de .net es amigo mio :-D ) no seria mas aprovechable que dedicaras tus esfuerzos de programacion (lobales de todo punto de vista) en, por ejemplo, hacerlo sobre jstrader en java dado que por lo que se ve te da igual el lenguaje.

es que asi se podria ir generando una comunidad "jstradera" que fuera mejorando el producto con la aportacion de cada uno y no cada cual con por su lado con soluciones parciales y parches al problema global que todos buscamos: el santo grial y la piedra filosofal del trading :-D :-D (je, eso me recuerda que alguien dijo que los compradores de sistemas automaticos eran como los cruzados que compraban a los magos la piedra filosofal :-D :-D )

evidentemente, cadauno tiene sus cadaunadas

cordiales saludos. x-trader,no me lo agradezcas, ya se que tu no podias decir esto por que se notaria mucho. :-D :-D :-D .
las gacelas tambien tenemos derecho a pasto
Es probable que Dios no exista. Ahora, deja de preocuparte y disfruta de la vida
Sergio
Mensajes: 104
Registrado: 06 Mar 2007 19:23

Mensaje por Sergio »

Saludos al foro.

En primer lugar gracias a todos por vuestros comentarios, la verdad no pensaba que tendria tanto interés el tema.

X-Trader: No conocía la plataforma jSystemTrader, ya le he dado un vistazo y me parece algo muy interesante en cuanto pueda me la instalo y a probar que tal.

H.Seldon: Gracias por compartir tu "hoja de ruta", como punto de partida para los no iniciados como yo pues es perfecto. Tenia en mente hacer algo parecido, como tú dices una caja negra que reciba datos en tiempo real , realice los calculos necesarios y genere ordenes si es necesario.

Dado que por mi trabajo diario me manejo mejor con el lenguaje C++ voy a decantarme por la API de IB para este lenguaje y a través de sockets. La idea que tengo es abrirme una cuenta con IB y contratar el tiempo real y con la cuenta de paper trading empezar a hacer las primeras pruebas. En principio no necesito un mega programa, sino algo sencillo que yo pueda controlar y que me permita implementar algunos de los sistemas que tengo.

Lo que comentas de implementar como servicio la parte que se encarga de descargar datos me parece una buena idea. Recientemente en el curro he tenido que implementar un servicio que accede a sql server a través de ADO. Si necesitas cualquier cosa no hay problema en enviarte código. Tienes mi correo.

Seguiré informando de como van mis progresos....

Saludos cordiales.
H.Seldon
Mensajes: 546
Registrado: 26 Abr 2005 14:38

Mensaje por H.Seldon »

Hola trikero. El respeto se presupone, no hace falta ponerlo por delante. Son muy pocos los que no lo tienen, pero hacen más ruido.

En cuanto al tema, lo que pasa es que cuando aprendí a programar no tenía en mente un programa para los mercados. Esto es un proyecto que mantengo a medio plazo, y que puede que fracase. Por tanto, al elegir el lenguaje de programación, tuve en cuenta muchas otras cosas relacionadas con mi trabajo.

Hace mucho tiempo comencé a programar en Java, pero al final tuve que abandonarlo. Ahora me costaría bastante esfuerzo retomarlo porque aunque todos los lenguajes orientados a objetos y eventos se parecen mucho (el paradigma es el mismo), en realidad la cantidad de detalles y de características propias hace que te tengas que especializar en uno.

Dicho esto, le he estado echando un vistazo al JSystemTrader y tiene muy buena pinta. A lo mejor algún día, en una galaxia muy muy lejana ... :-D
Avatar de Usuario
trikero
Mensajes: 739
Registrado: 24 Ago 2006 23:44

Mensaje por trikero »

pues nada seldon, a ver cuando te pasas al lado oscuro del java. y si nos encontramos por ahi ya cruzaremos los lasers. :-D
las gacelas tambien tenemos derecho a pasto
Es probable que Dios no exista. Ahora, deja de preocuparte y disfruta de la vida
Avatar de Usuario
watermelon
Mensajes: 690
Registrado: 28 Ene 2006 13:44
Ubicación: Barcelona

Mensaje por watermelon »

Wenas tardes,os queria preguntar unsa cosillas,

-Dando un vistazo por la red,he visto que el lenguaje C++ es el más potente para programar,
pero me han surgido unas dudas referente al c++ que me gustaria que alguien me respondiera antes de ponerme a estudiarlo,
puesto que por lo que he visto,aprenderlo no es nada facil,
y no quiero ponerme a ello si no se sí es realmente práctico para el trading.

-Es un lenguaje práctico para el trading? o hay algun otro que lo sea más?

-Existen varios software(no muy dificiles de conseguir) que permitan programar en C++.

-He visto que es el lenguaje más complejo y potente que hay,es quizás tan potente que para el trading le vaya "algo grande"?

Si me pasais links con información,también me servirá de ayuda.
s2
Me gustan las emociones y el trading por eso nunca mezclo ambas cosas.
Si te ha gustado este hilo del Foro, ¡compártelo en redes!


Responder

Volver a “Data Feeds e Históricos”