Rankia - Comunidad Financiera
Usuarios  |  Regístrate  |  Ayuda
 

5 de mayo de 2008

Laboratorio de Inversión y Especulación 4 - Históricos arreglados y mas funciones

He actualizado el downloader para que sea configurable y podamos usar el formato descrito en el coloquio de voz.

También investigué el problema de las fechas que se corregía simplemente con especificar un Locale en ingles, pero ya no es necesario especificarlo dado que lo hago internamente en el código.

El código fuente lo dejo aquí de momento estará disponible en SourceForge dentro de poco. (Dos semanas a un mes...)



El código fuente son solamente 14 clases!

Tal como comentamos se pueden descargar históricos entre dos fechas:

RETRIEVE VALUE 694653 FROM GOOGLE INITDATE 01/01/2006 ENDDATE 04/03/2006 TICKER GOOGLE
RETRIEVE VALUE %5EIBEX FROM YAHOO INITDATE 01/01/2006 ENDDATE 04/04/2006 TICKER IBEX
RETRIEVE VALUE
ES0173516115 FROM BOLSAMADRID INITDATE 01/01/2006 ENDDATE 04/04/2006 TICKER REPSOL

Y también podemos actualizar un archivo que ya tenemos con históricos:

UPDATE VALUE 694653 FROM GOOGLE TICKER GOOGLE
UPDATE VALUE %5EIBEX FROM YAHOO TICKER IBEX
UPDATE VALUE ES0173516115 FROM BOLSAMADRID TICKER REPSOL


Si estamos bajo un proxy lo podemos configurar con un archivo llamado proxy.prop que será algo así:

# Proxy
proxyurl = proxy
proxyport = 8080
proxyuser = usuario
proxypassword = password


También podemos configurar los formatos de comas, puntos etc... Creando un config.prop pero de momento lo dejaremos con los valores por defecto.
Como necesitaremos actualizar muchos archivos simultáneamente podemos juntarlos todos en un archivo batch y hacerlo de una sola vez.

java -jar lab-v0.2.jar BATCH batch1.batch
java -jar lab-v0.2.jar BATCH batch2.batch


Tareas a realizar por programadores y que podemos repartirnos:
- Que funcione desde Windows y no sea necesario descargar java.
- Que el nombre usado para el ticker no dependa de la url.
- Que la gente no tenga que descargar la aplicación cada vez que se actualice sino que sea automático.
- Mostrar gráficas con los datos.
- Hacer Unit Tests.
- Comentar el código.
- Eliminar el uso de funciones "deprecated".
- Mejorar los errores presentados si los parámetros de entrada no son correctos.
- Gestionar una base de datos HSQL en memoria.
- Que las nuevas fuentes de datos se metan mediante configuraciones de Spring.
- Funcionalidad de Log con Log4j.

Principal tarea a repartir y que voy a explicar mas en detalle: (Me parece la mas prioritaria e importante)
- Descargar históricos de diferentes fuentes y en diferentes formatos.

Como podéis observar "un descargador" solo son unas pocas líneas de código, debería ser muy, muy fácil agregar mas, espero que me mandéis muchos!

Ahora mismo tenemos tres fuentes de las que descargar: (En el paquete jds.com.locations.sites)
- Google
- Yahoo
- BolsaMadrid

Podemos pedirle a Francisco Llinares que nos diga cuales serian las siguientes fuentes mas interesantes para continuar.

Voy a empezar con las dos primeras tareas, espero a los colaboradores que me digan en que parte quieren colaborar o si tienen otras tareas en mente que podamos hacer, se me ocurren muchísimas mas...

Quien quiera usar los datos de salida en un modulo aparte independiente en java u otro lenguaje lo puede hacer fácilmente. (Ya lo conectaremos luego.. con Webservices o lo que sea)

Tareas a realizar para los no programadores:
- Crear un batch con que descargue por primera vez todos los valores del mercado continuo, todos los índices, los valores del eurostoxx, del SP500 etc... (Cada uno se podría encargar de uno diferente, enviarme el batch terminado y yo o rankia lo ejecutaríamos a diario y actualizaríamos los históricos en los servidores de rankia)

Creo que es una tarea que lleva bastante trabajo, preguntadme cualquier duda al respecto.

Para los programadores, tened en cuenta que tenemos tiempo y recursos limitados, nos interesa ir al grano, obtener resultados con el menor esfuerzo posible, por tanto en lo que se refiere a gráficos etc, debemos de utilizar un paquete Open Source que sea mantenido por otro y sea de fácil integración.

En cuanto alguien se ponga manos a la obra con las gráficas podemos hablar con Francisco Llinares para ver que capacidades deben de tener estos gráficos, como mostrar los 40 gráficos de los vencimientos de los futuros... etc...

Creo que ya tenemos un inicio! En el próximo post explicare como funciona el código, como extenderlo y como ejecutarlo desde Eclipse.

Archivos:
Downloader.zip
batch1.batch - Batch de ejemplo para descargar estos 3
batch2.batch - Batch de ejemplo para actualizar estos 3
GOOGLE.data - Ejemplo de datos descargados de Google
IBEX.data - Ejemplo de datos descargados de Yahoo
REPSOL.data - Ejemplo de datos descargados de BolsaMadrid
lab-v0.2.jar - Segunda version del laboratorio

Nota: Yo calculo que en 3 o 4 semanas tendre la proxima version con mas cosas, si me mandais codigo, podre tener mucho mas y quizas antes! Comentad que es lo que quereis hacer cada uno!

Ultima version del codigo actualizada por Juan Albisu: srcRankia0.3.0.3.rar (La actualizare aqui hasta tener la cuenta de sourceforge o hasta que escriba otro post)

Etiquetas: ,

10 comentarios:

Anonymous Carlos Suarez said...

Hola Dalamar,

Cuenta conmigo tanto para la parte de programación java, como para la parte no técnica. Esta noche me bajo el eclipse y le doy unas vueltas al código y los ejemplos. Vamos comentando.

Un saludo,
Carlos Suareze

carlos(dot)suarez(dot)gomez(at)gmail(dot)com

5 de mayo de 2008 9:41  
Blogger Dalamar said...

Perfecto, si tienes algna duda o algo no te funciona, me lo dices o lo escribes aqui para que lo explique y podamos ayudar a los demas tambien!

Muchas gracias!

5 de mayo de 2008 10:21  
Anonymous juanmi said...

Hola Dalamar. Encantado de leer tu entrada.
Te puedo ayudar en lo que quieras. Te comento:
- Que el nombre usado para el ticker no dependa de la url.
**Podemos crear una configuracion de nombre-tickers por defecto de tal forma que al indicar el ticker se mira en sus posibles fuentes.
Incluso configs para que cuando no se sepa el ticker se mire primero ahi.
- Que la gente no tenga que descargar la aplicación cada vez que se actualice sino que sea automático.
**Yo usaria Java web start, asi cada vez que la arrancan se actualiza. Es facil ponerselo
- Mostrar gráficas con los datos.
**Especifica que graficas se necesitan, en plan analisis tecnico o en plan descarga¿?
- Hacer Unit Tests.
- Comentar el código.
**ok y generamos los javadocs. Normalmente lo mejor es crear un wiki donde se marque la arquitectura actual y la siguiente para no tener a la gente perdida.
- Eliminar el uso de funciones "deprecated".
**ok
- Mejorar los errores presentados si los parámetros de entrada no son correctos.
**ok
- Gestionar una base de datos HSQL en memoria.
- Que las nuevas fuentes de datos se metan mediante configuraciones de Spring.
- Funcionalidad de Log con Log4j.
**ok

Resumiendo: Como me tengo que repasar el codigo fuente ya de paso lo documento.
1-Meto los comentarios para javadoc
2-Describo la arquitectura que has montado para poder discutirla luego entre todo y decidir como continuar.
3-Meto aserciones y log4j
4-elimino deprecated
5-Errores param entrada
6-Meto JWS pero deberia estar firmado el codigo. Lo mejor seria que cada uno genrase una firma y que nos la formasemos con una principal para generar...tenemos que hablarlo.

Por ahora me encargo de esos 6 puntos salvo que alguien quiera un trozo.

Cuando los termine si no has conseguido asignar los demas te hago los demas.
Sobre la base de datos HSQL yo usaria algo como JDO o hibernate, lo que hay que especificar es el modelo de información que queremos guardar....
Bueno cuando lea el codigo podre opinar mas.
Un saludo y muchas gracias.

5 de mayo de 2008 10:37  
Blogger Dalamar said...

Perfecto, si vas teniendo alguna duda me dices, yo estoy pensando meterlo en un RCP de Eclipse para que se actualice solo y no dependa de java osea que sea un .exe y lleve el java incluido, sera mucho mas facil para la gente, tambien que dentro de la misma aplicacion se puedan cambiar los batch, sin necesidad de otro editor.

Las graficas serian de analisis tecnico.

Por mi metemos Hibernate, cuando tengamos BD, eso seria para una fase mas avanzada!

Si te animas a crear el wiki, genial!

5 de mayo de 2008 10:43  
Anonymous juanmi said...

Pero con RCP la gente necesita tener java instalado. Si no hay maquina virtual no funciona, creo...o sino hay algo que me estoy perdiendo...http://wiki.eclipse.org/RCP_FAQ
para debuggear se usa d:\j2sdk1.4.2_01\bin\java org.eclipse.core.launcher.Main -product org.eclipse.ui.examples.rcp.browser.product -consolelog -clean -debug....
RCP o el entorno similar de Neatbeans podemos usarlo como base si vamos a crear un framework visual. Pero eso yo lo dejaria para una segunda fase.

5 de mayo de 2008 10:59  
Blogger Dalamar said...

Si pero con RCP tienes un .exe que arranca todo, ademas tienes la opcion de incluir el el paquete la maquina virtual asi que puede ir ahi dentro, ocupara mucho mas pero la gente no se tienen que preocupar de instalar java, lo lleva incluido y ademas tiene todo el entorno visual incluido, ademas tiene facilidades para actulizaciones automaticas.

5 de mayo de 2008 11:04  
Blogger Dalamar said...

Para el tema de que los valores no dependan de la URL es cuestion de mirar el HTTPUNIT y simular lo que haria el usuario en vez de escribir la url directamente, habria que investigar un poco mas no creo que tenga mucho misterio, como puedes ver los descargadores son una clase y normalmente 10 a 20 lineas de codigom, no es nada y cualquiera puede meter nuevas! Voy a ver si explico en otro post comoinstalar el proyecto en eclipse, ejecutarlo y como hacer un descargador...

Estoy a la espera de que F. Llinares vea lo descargado y opine asi como que nos de mas URLs para descargar mas informacion, quizas tengamos que hacer otro coloquio para distribuir mas tareas, seria conveniente que todo el que vaya a colaborar deje un comentario y diga sus conocimientos de programacion, algo muy basico sirve.

Y alguien que no sepa programar tambien puede colaborar con los batch, dentro de poco empezare a coordinar con rankia para que los histyoricos sean descargables.

5 de mayo de 2008 11:10  
Anonymous Carlos Suarez said...

En cuanto a los conocimientos, por mi parte aporto conocimientos de java y modelado de bases de datos... no a nivel pro, pero creo que para esto puede ser más que sufieciente ;)

Un saludo,
Carlos Suarez

5 de mayo de 2008 13:52  
Blogger Dalamar said...

Aqui tengo los siguientes sitios a parsear que me ha pasado Francisco Llinares:

aqui tienes 4 ficheros cada dia con los datos del NYMEX, toda la energia y todos los metales.

http://www.nymex.com/md_ewd.aspx

En esta tienes toda la energia del mercado de Londres

https://www.theice.com/marketdata/settlementPrices/getDailySettlementsResults.do

aqui tienes los cierres de todo el CME

http://www.cme.com/trading/dta/hist/daily_settle_prices.html?type=itr

En esta tienes todo lo del LIFFE - EURONEXT
Euribor y todos los tipos de interes de la libra y el franco suizo

http://www.liffe.com/reports/eod?item=Histories

Aqui tienes el boletín oficial de la bolsa de Madrid en PDF, si lo puedes sacar de ahi, es completisimo y está siempre por la noche.

http://www.bolsamadrid.es/esp/contenido.asp?enlace=/esp/bolsamadrid/publicacion/estadisticas/keyfigures.htm

Todo el mercado CBOT
Cereales y bonos USA

http://www.cbot.com/cbot/pub/page/0,3181,759,00.html

Quien se anima a echarles un vistazo?

5 de mayo de 2008 20:10  
Blogger Dalamar said...

Gracias a JuanMi hay una nueva version de codigo disponible con muchas mejoras, la actulizare en el post esta semana cuando la testee un poco, el que vaya a colaborar que me lo diga, para que le pase la version actualizada y que me diga en que seccion quiere colaborar.

6 de mayo de 2008 0:05  

Publicar un comentario en la entrada

Enlaces a este post:

Crear un vínculo

<< Volver a inicio