Você está na página 1de 153

RESUMEN DEL PROYECTO

El proyecto Stock Market Game agrupa tres conceptos muy interesantes para cualquier persona interesada en los mercados financieros. Por un lado, se trata de una plataforma ficticia de inversión donde el usuario puede poner a prueba sus conocimientos o competir contra otros usuarios. Por otro lado, recopila la información necesaria para proporcionar todas las herramientas necesarias de inversión (cotizaciones intradía, gráficos e información de indicadores y osciladores charlistas). Además, ofrece al usuario una plataforma de ayuda de inversión, indicando el momento de realizar sus operaciones.

El sistema permitirá a los usuarios registrados de forma ficticia invertir sobre los valores del IBEX35. En Stock Market Game los usuarios podrán realizar órdenes de compra y venta, tanto a precio de mercado como con precios limitados o condicionados.

El sistema deberá interactuar con aplicaciones de terceros para incorporar l as cotizaciones al sistema, con ellas el sistema creará unas gráficas estadísticas y calculará diversos indicadores del análisis técnico bursátil para ayudar a los usuarios en sus inversiones. Las noticias bursátiles se han incorporado al sistema a través del RSS de www.bolsamania.com.

Para la realización del proyecto Stock Market Game, se han definido unos osciladores propios del sistema que son necesarios para crear el módulo de ayuda a la inversión. Este módulo se ha construido como un sistema experto b asado en reglas de producción que transmitirá al usuario recomendaciones sobre la toma de posiciones para el día siguiente.

La plataforma web se ha desarrollado como un juego que incluye características típicas de los juegos online masivos como son la incorporación de ligas, donde se puede competir entre varios usuarios para ser el mejor inversor. Por otra parte existe en el sistema una clasificación con los mejores inversores.

Para su desarrollo se ha utilizado la metodología UML con algunas modificaciones para poder incluir dentro de cada fase la plataforma web y la aplicación batch que obtiene los datos de las cotizaciones, crea las gráficas y al final del día analiza los

valores para dar recomendaciones. Entre las modificaciones figuran la incorporación de DFDs y diagramas de flujo al proceso de diseño de la aplicación batch.

Las tecnologías utilizadas para la realización del proyecto han sido JavaEE para la plataforma web, siguiendo el patrón MVC (Modelo-Vista-Controlador). Para la vista, se ha incorporado tecnología AJAX combinada con JSPs para mejorar la apariencia y seguir el modelo de WEB 2.0.

La aplicación batch se ha desarrollado usando JavaSE, incorporando el FrameWork de JFreeChart para la realización de gráficas. El sistema experto está basado en reglas de producción y la aplicación de terceros elegida para suministrar las cotizaciones está formada por archivos .CSV alojados en los servidores de Yahoo Financial.

La base de datos es de tipo relacional, está gestionada por MySQL y es el nexo de unión entre las dos aplicaciones.

ABSTRACT

Stock Market Game involves three different and really interesting concepts to anyone interested in financial markets. On one hand, Stock Market Game is a web platform where users can fictitiously invest to test their knowledge or compete with other users. On the other hand, it receives all needed information to give the user all kinds of investment tools (daily prices, charts and indicators). The system, gives the user a investment-help platform, indicating when should de user buy or sell.

The system will allow registered users to buy and sell stocks in three different ways, current price, limited price and price conditions.

The system needs to communicate with a third party application to receive the stock’s price during the open market and the historical log files of each company in the IBEX35. The system creates graphics charts and calculates different technical analysis concepts such as the RSI or momentum to identify trends in the stocks and help users to find the best investment. Financial news are brought by the RSS file from www.bolsamania.com.

Several indexes and oscillators have been created especially for Stock Market Game, which will help to build the “investments advice module”. This module is a knowledge system, based on production rules that will give the users advices on the different next day stocks.

The web platform has been built as a game, with some typical characteristics of the multi-masive online games, such as leagues where users can compete between them to sort out who is the best investor. The game creates a classification of the best investors registered in the server.

The Methodology chosen to develop the project is UML, modified by adding DFD and flow diagrams of the batch application that incorporates the charts module, stock price receiving and the knowledge system.

The technologies used for the project have been JavaEE for the web platform, implementing a MVC (Model-View-Controller) pattern. AJAX technology has been incorporated into the view combined with Java Server Pages to improve the traditional static web pages, following the WEB 2.0 standard.

The batch applications has been built using JavaSE using JFreeChart FrameWork for creating the charts. The knowledge System is based on production rules. The third party application chosen to provide the stock’s price have been .CSV files hosted in the yahoo financial servers.

The relational database is managed by MySQL server and unifies both applications by using the database tables to transfer data between them.

Índice

1. Introducción

2

2. Identificación de necesidades

5

3. Análisis de requisitos

10

3.1 Modelo conceptual de la aplicación web

11

3.1.1 Casos de uso del

11

3.1.2 Modelo de

42

3.1.3 Interfaz inicial del sistema

47

3.2 Modelo conceptual de

51

3.3 Requisitos de la aplicación batch

57

3.3.1 Lista de

57

3.3.2 Diagrama de contexto de la aplicación batch

60

4. Diseño del sistema

62

4.1 Arquitectura del sistema

62

4.2 Diagramas de

65

5. Diseño detallado

5.1 Diseño de la aplicación web

71

72

5.1.1 Estructura de la aplicación

72

5.1.2 Diagrama de

73

5.1.3 Diagramas de

74

5.2 Diseño de la base de datos

80

5.2.1 Diagrama de la base de datos

80

5.2.2 Diseño físico de la base de datos

81

5.3 Diseño de la aplicación batch

85

5.3.1 DFD de primer

86

5.3.2 Diagramas de flujo

87

6. Programación

92

6.1 AJAX con DWR

93

6.2 FrameWork JFreeChart

99

6.3 Java EE y Java SE

102

7. El Sistema Experto de Análisis Técnico

104

7.1 El análisis

105

7.2 Los osciladores de SMG

109

7.3 El sistema experto

111

7.4

Resultados

112

7.5 El simulador

113

8.

115

9.

Conclusiones

118

10.

Futuras Mejoras

120

11.

Planificación

122

12.

Bibliografía

124

Anexo I. Manual de instalación

127

Anexo II. Manual de usuario

129

Stock Market Game

Stock Market Game

Introducción

1

1

Stock Market Game

Stock Market Game

1. Introducción

El propósito del proyecto es crear una aplicación web que funcione como un juego y cuya temática sea la bolsa española, más concretamente el IBEX35. La necesidad de esta aplicación viene dada por no existir simuladores de inversión en la bolsa española.

Se ha decidido desarrollar la aplicación como si fuera un juego para atraer a usuarios sin conocimientos del funcionamiento de la bolsa a parte de los expertos. El hecho de que puedan practicar sus habilidades de inversión sin apostar su dinero, atraerá a más usuarios.

El propósito del juego es introducir a los usuarios en el mundo de la bolsa, el análisis técnico puede ser muy aburrido pero si se muestra como un juego, los usuarios irán adquiriendo experiencia poco a poco de forma divertida.

La aplicación deberá mostrar estadísticas del intradía e históricas, permitir lanzar órdenes de compra o venta con condiciones. Reflejar la competición en una clasificación.

Los datos de las cotizaciones, deben ser datos reales del IBEX35, por lo tanto se ha creado una aplicación batch capaz de recibir los datos de las cotizaciones y los históricos de los valores para más tarde introducirlos en la base de datos.

Por último, se ha desarrollado un módulo de ayuda a la inversión que dará recomendaciones diarias sobre cada uno de los valores. Dicho módulo se ha incorporado a la aplicación batch.

2

2

Stock Market Game

Stock Market Game

Quedando el sistema como se ve a continuación:

Market Game Quedando el sistema como se ve a continuación: La aplicación batch, obtendrá las cotizaciones

La aplicación batch, obtendrá las cotizaciones de Yahoo, creará las estadísticas y a final del día dará recomendaciones sobre los valores del mercado.

La aplicación web incorporará las noticias del RSS de www.bolsamania.com y se desarrollará con JavaEE y con contenido dinámico proporcionado por AJAX

Para la realización del proyecto se ha elegido la metodología UML cuyos pasos se van a relatar en los siguientes apartados.

3

3

Stock Market Game

Stock Market Game

Identificación de necesidades

4

4

Stock Market Game

Stock Market Game

2. Identificación de necesidades

En esta fase del desarrollo se ha realizado un análisis de los requerimientos del sistema, sus objetivos, normas a seguir, tecnologías a utilizar, todos estos requerimientos se describen en el documento de conceptos del sistema que figura a continuación.

El documento de conceptos del sistema se divide en 4 partes:

Objetivos del sistema. En este apartado se relatan los objetivos más generales del sistema en una descripción clara y escueta pero que debe definir claramente la finalidad del sistema, estos objetivos se describen desde una perspectiva empresarial.

Alcance del sistema. El alcance describe todas las funcionalidades que debe tener el sistema, detallando todas ellas lo mejor posible ya que es el punto de partida para realizar el sistema.

Tipología de los usuarios finales. En este apartado se describe el perfil de los usuarios finales, de tal manera que el interfaz pueda ser lo más apropiado posible para los usuarios finales.

Restricciones. Tal como su nombre indica, las restricciones son todos aquellos factores que puedan afectar al desarrollo del sistema, las restricciones pueden ser de tipo económico, tecnológico, logístico o de cualquier otro tipo.

5

5

Stock Market Game

Stock Market Game

DOCUMENTO DE CONCEPTOS DEL SISTEMA

1. OBJETIVOS DEL SISTEMA

El sistema consiste en el desarrollo de un juego de bolsa sobre una plataforma web en el que los usuarios podrán invertir de forma ficticia sobre los valores del IBEX35.

El sistema deberá realizarse como un juego y tendrá en cuenta tanto a usuarios avanzados en la inversión como a aquellos que nunca hayan invertido.

Para obtener los datos de las cotizaciones el sistema deberá ser capaz de interactuar con aplicaciones de terceros.

El juego dispondrá de la opción de crear y participar ligas, para que los usuarios puedan competir por ser el mejor inversor dentro de su liga además de la competición global.

Habrá un sistema de mensajería con el cual los usuarios podrán comunicarse con los demás jugadores.

El sistema contará adicionalmente con un módulo de ayuda a la inversión que utilizará diversos indicadores del análisis técnico para realizar estimaciones de cuáles serán los mejores valores en los que invertir.

6

6

Stock Market Game

Stock Market Game

DOCUMENTO DE CONCEPTOS DEL SISTEMA

2. ALCANCE DEL SISTEMA

La aplicación debe permitir invertir de la forma más real posible, los datos de las cotizaciones deben obtenerse periódicamente para que la experiencia de la inversión sea lo más realista posible.

Se dispondrá de un sistema de ayuda a la inversión que usará osciladores e indicadores del análisis técnico para dar recomendaciones para el día siguiente.

El módulo de estadísticas tendrá la información del intradía e histórica.

El sistema, se realizará como un juego, habrá una competición con una clasificación de los mejores inversores además de la opción de pertenecer a una liga, en la que los jugadores podrán realizar una competición entre los usuarios que se apunten a la liga.

Los usuarios podrán comunicarse entre ellos con un sistema de mensajería, que deberá ser lo más simple posible para no interferir en la mecánica del juego.

El sistema dispondrá de un manejo simple e intuitivo de la cartera de valores del usuario, permitiendo compras y ventas tanto a precio de mercado como con precio limitado o condicionado.

Habrá una sección en el sistema en la que se podrán visualizar las últimas noticias del mundo financiero proporcionadas por terceros.

7

7

Stock Market Game

Stock Market Game

DOCUMENTO DE CONCEPTOS DEL SISTEMA

3.

TIPOLOGÍA DE LOS USUARIOS

El tipo de usuario del sistema será un inversor en bolsa, tanto si tiene altos conocimientos sobre el mundo financiero como si acaba de empezar en el y no se atreve a invertir su dinero.

Perfiles:

Usuario:

El usuario del sistema tiene que ser capaz de invertir, mandar mensajes y de apuntarse a cualquier liga que el desee.

Administrador de la liga:

El administrador de la liga será un usuario cualquiera que haya creado una liga podrá aceptar usuarios en su liga, expulsarlos o borrar la liga.

DOCUMENTO DE CONCEPTOS DEL SISTEMA

4.

RESTRICCIONES

Restricción temporal:

El sistema deberá estar completo antes de la convocatoria de septiembre de 2007.

Restricción de recursos

El sistema se desarrollará con Java y deberá contener elementos del WEB 2.0 que es como se denomina a las aplicaciones web de contenido dinámico.

8

8

Stock Market Game

Stock Market Game

Análisis de requisitos

9

9

Stock Market Game

Stock Market Game

3. Análisis de requisitos

El análisis de requisitos consiste en la creación de un modelo conceptual del sistema que satisfaga todos los requisitos, para ello, esta etapa del desarrollo se divide en varias actividades técnicas.

Para el desarrollo de la plataforma web, se realizarán las siguientes actividades definidas por la metodología UML:

Identificar los casos de Uso del Sistema.

Dar detalle de los casos de uso descritos.

Dar una interfaz inicial al sistema.

Desarrollar el modelo de dominio.

Como la metodología elegida para el desarrollo no es la más apropiada para las aplicaciones secuenciales como la aplicación batch que recogerá los datos de las cotizaciones y los analizará, la fase de análisis de requisitos añadirá una actividad extra para la aplicación batch que será:

Lista de requisitos para la aplicación batch.

Por último, en esta fase se va a realizar el modelo conceptual de datos que representa las entidades con sus atributos y las relaciones existentes entre ellas.

Esta primera visión técnica del sistema, se encarga de dar una perspectiva de qué funcionalidades debe tener el sistema sin entrar a definir cómo debe realizarlas.

10

10

Stock Market Game

Stock Market Game

3.1 Modelo conceptual de la aplicación web

3.1.1 Casos de uso del sistema.

Los casos de uso permiten recoger y documentar los requerimientos funcionales de un sistema, para su realización se necesita primeramente identificarlos y posteriormente realizar una descripción detallada de cada caso de uso.

Un caso de uso permite recoger y documentar un requerimiento funcional del sistema y su forma de interactuar con el usuario.

Para identificarlos y representarlos se utilizan los “diagramas de casos de uso” en los que se representa a los actores y sus relaciones con el sistema y otros actores.

Un actor puede ser cualquier persona, organización o sistema que sea externo al sistema que se está analizando y que además interactúa de alguna manera con él. Un actor, más que un ente concreto es un rol abstracto que representa la forma de interactuar con el sistema.

Un caso de uso responde a un objetivo de un actor con respecto al sistema y es una unidad funcional completa. Un ejemplo puede ser un inversor que quiere comprar valores de una empresa, el caso de uso comprendería todas los pasos que necesitaría el usuario para conseguir su fin.

11

11

Stock Market Game

Stock Market Game

3.1.1.1 Diagramas de casos de uso del sistema.

Los diagramas de casos de uso son una representación gráfica del caso de uso, representa gráficamente la relación entre el actor principal el sistema. Para nuestro sistema, además nos va a servir para identificar los casos de uso.

A continuación figura un gráfico explicativo de las figuras que pueden aparecer en los diagramas de casos de uso.

Caso 1
Caso 1
Caso 1 Caso de uso relacionado con el actor principal Actor principal Relación
Caso 1 Caso de uso relacionado con el actor principal Actor principal Relación

Caso de uso relacionado con el actor principal

Actor principal

Relación

12

12

Stock Market Game

Stock Market Game
Stock Market Game 13
Stock Market Game 13

13

13

Stock Market Game

Stock Market Game

3.1.1.2 Descripción de los casos de uso.

La descripción de los casos de uso se ha realizado rellenando una plantilla que se explica a continuación, la plantilla tiene diferentes secciones:

Título: Da nombre al caso de uso, debe ser claro, conciso y auto explicativo.

Actor primario: Es aquel cuyo objetivo da nombre al caso de uso, normalmente es también el que lo inicia aunque no siempre es así.

Actor secundario: Cualquier otro actor que intervenga en el caso de uso y que ayude al sistema a conseguir el objetivo del actor primario.

Trigger: Es el evento que inicia el caso de uso, a veces precede al primer paso del caso de uso, mientras que otras veces es el primer caso.

Precondiciones: Son condiciones que se han de dar para que pueda iniciarse el caso de uso y como se han de cumplir antes, no se vuelven a comprobar una vez iniciado el caso de uso, pueden ser una o varias, pero todas ellas han de cumplirse.

Escenario Primario: Se describe mediante una serie de pasos numerados, cada paso consistirá en una frase activa en tiempo presente, cada paso puede ser únicamente de los siguientes tipos:

o

Una interacción entre sistema y actor o actores.

o

Una validación de cierta información recibida o de una regla de negocio.

o

Un cambio de estado lógico del sistema.

Extensiones: Describen escenarios alternativos al escenario primario, todas las alternativas deben ser activadas por una condición detectable por el sistema.

Descripción de datos: En esta sección se desglosan los datos que son referidos en el escenario principal.

Reglas de negocio: Son reglas externas al sistema.

14

14

Stock Market Game

Stock Market Game

Caso de Uso: Alta Usuario

Actor Principal: Usuario Actor Secundario: ----- Trigger: El usuario inicia la transacción Precondiciones: -----

Escenario principal:

1. El usuario accede al sistema El Sistema le muestra la página de Inicio.

2. El usuario selecciona “crear cuenta”.

3. El sistema muestra un formulario a rellenar.

4. El usuario introduce los datos de la nueva cuenta.

5. El sistema registra el nuevo usuario

Extensiones:

6a. El sistema comprueba que el nick del socio ya existía.

1. El sistema notifica al usuario del fallo y se vuelve al punto 2. 6b. El

sistema comprueba que los datos introducidos son erróneos.

2. El sistema notifica al usuario de los errores en el formulario y se vuelve al punto 4.

Descripción de Datos:

Formulario:

Nick

Contraseña

Comprobación de la contraseña

Nombre

Apellidos

Email.

Reglas de Negocio:

15

15

Stock Market Game

Stock Market Game

Caso de Uso: Conectar a cuenta

Actor Principal: Usuario Actor Secundario: ----- Trigger: El usuario inicia la transacción Precondiciones: -----

Escenario principal:

1. El usuario selecciona la opción de conectarse al sistema de la página de

inicio.

2. El sistema muestra al usuario la página de login.

3. El usuario introduce el nick y la contraseña.

4. El sistema comprueba que el nick y la contraseña concuerdan.

5. El sistema muestra la página principal.

Extensiones:

4a. El sistema comprueba que el nick y la contraseña no existen. 1. El sistema notifica al usuario del fallo y se vuelve al punto 2. 4b. El sistema comprueba que no existe un usuario con ese nick. 1. El sistema notifica al usuario y el sistema muestra la página de inicio.

Descripción de Datos:

Reglas de Negocio:

16

16

Stock Market Game

Stock Market Game

Caso de Uso: Crear Liga

Actor Principal: Usuario Actor Secundario: ----- Trigger: El usuario inicia la transacción. Precondiciones: El usuario está conectado.

Escenario principal:

1. El usuario selecciona en su página principal la opción de crear liga

2. El sistema le muestra un formulario de creación de liga.

3. El usuario introduce los datos de la nueva liga.

4. El sistema comprueba los datos de la liga y le da de alta.

Extensiones:

4a. El sistema comprueba que los datos del formulario no son válidos.

1.

El sistema notifica al usuario de los errores en el formulario y se vuelve al punto 4.

Descripción de Datos:

formulario de creación de liga:

Nombre

Descripción.

Tag.

Reglas de Negocio:

17

17

Stock Market Game

Stock Market Game

Caso de Uso: Petición de alta en una liga

Actor Principal: Usuario Actor Secundario: ----- Trigger: El usuario inicia la transacción. Precondiciones: El usuario está conectado.

Escenario principal:

1. El usuario selecciona la opción de darse de alta en una liga

2. El sistema muestra el formulario para darse de alta.

3. El usuario introduce los datos de alta.

4. El sistema envía la petición de alta al administrador de la liga.

Extensiones:

Descripción de Datos:

formulario de alta en liga:

Tag.

Descripcion

Reglas de Negocio:

18

18

Stock Market Game

Stock Market Game

Caso de Uso: Ver participantes de la liga

Actor Principal: Usuario Actor Secundario: ----- Trigger: El usuario inicia la transacción. Precondiciones: El usuario está conectado. El usuario pertenece a una liga.

Escenario principal:

1. El usuario selecciona ver la sección de ligas.

2. El sistema muestra la información de las ligas a las que pertenece.

3. El usuario selecciona ver una liga específica.

4. El sistema le muestra los datos de la liga.

Extensiones:

Descripción de Datos:

Datos de la liga:

Componentes.

Clasificación de cada componente.

Descripción de la liga.

Administrador de la liga.

Reglas de Negocio:

19

19

Stock Market Game

Stock Market Game

Caso de Uso: Alta de jugador en la liga

Actor Principal: Usuario Actor Secundario: ----- Trigger: El usuario inicia la transacción. Precondiciones: El usuario está conectado. El usuario es Administrador de la liga. Hay una petición de alta en la liga.

Escenario principal:

1. El usuario selecciona ver la sección de ligas.

2. El sistema muestra la información de la liga a la que pertenece.

3. El sistema le muestra los datos de la liga y los datos de administrador de la liga.

4. El usuario selecciona ver las peticiones de entrada.

5. El sistema muestra las peticiones de entrada en la liga.

6. El usuario selecciona aceptar petición.

7. El sistema da de alta al jugador que hizo la petición en la liga.

Extensiones:

 

6a. El usuario selecciona rechazar la petición.

 

1.

El sistema borra el mensaje de petición.

Descripción de Datos:

Datos de la liga:

 

Componentes.

Clasificación de cada componente.

Descripción de la liga.

Administrador de la liga.

Datos de administrador de la liga:

Peticiones pendientes.

Reglas de Negocio:

20

20

Stock Market Game

Stock Market Game

Caso de Uso: Baja de jugador en la liga

Actor Principal: Usuario Actor Secundario: ----- Trigger: El usuario inicia la transacción. Precondiciones: El usuario está conectado. El usuario es Administrador de la liga.

Escenario principal:

1. El usuario selecciona ver la sección de ligas.

2. El sistema muestra la información de la liga a la que pertenece.

3. El sistema le muestra los datos de la liga y los datos de administrador de la liga.

4. El usuario selecciona expulsar al jugador de la liga.

5. El sistema da de baja al jugador seleccionado.

Extensiones:

Descripción de Datos:

Datos de la liga:

Componentes.

Clasificación de cada componente.

Descripción de la liga.

Administrador de la liga.

Datos de administrador de la liga:

Peticiones pendientes.

Reglas de Negocio:

21

21

Stock Market Game

Stock Market Game

Caso de Uso: Abandonar la liga.

Actor Principal: Usuario Actor Secundario: ----- Trigger: El usuario inicia la transacción. Precondiciones: El usuario está conectado. El usuario pertenece a una liga. El usuario no es el administrador de la liga

Escenario principal:

1. El usuario selecciona ver la sección de ligas.

2. El sistema muestra la información de la liga a la que pertenece

3. El sistema le muestra los datos de la liga

4. El usuario selecciona la opción abandonar liga y además el usuario no es el administrador de la liga.

5. El sistema borra al jugador de la liga.

Extensiones:

Descripción de Datos:

Datos de la liga:

Componentes.

Clasificación de cada componente.

Descripción de la liga.

Administrador de la liga.

Reglas de Negocio:

22

22

Stock Market Game

Stock Market Game

Caso de Uso: Comprar valores a precio de mercado.

Actor Principal: Usuario Actor Secundario: ----- Trigger: El usuario inicia la transacción. Precondiciones: El usuario está conectado

Escenario principal:

1. El usuario selecciona ver las cotizaciones del día.

2. El sistema muestra al usuario el menú de cotizaciones.

3. El usuario selecciona comprar un valor.

4. El sistema muestra los datos del valor y un formulario de compra.

5. El usuario introduce el número de acciones que desea comprar.

6. El sistema comprueba que el usuario tiene suficiente cash para realizar la transacción.

7. El sistema registra la orden de compra.

Extensiones:

 

6a. El sistema comprueba que el usuario no tiene suficiente cash para realizar la transacción.

 

1.

El sistema registra una orden de compra con el máximo posible de valores a comprar.

Descripción de Datos:

Cotizaciones actuales:

Abreviatura del nombre de la compañía.

Precio actual de la cotización.

Máximo

 

Mínimo

Apertura.

Incremento.

Volumen. Formulario de compra:

Cantidad a comprar

23

23

Stock Market Game

Stock Market Game

Reglas de Negocio:

(RN001): Las compras no se ejecutan directamente, se ejecutarán cuando el sistema que obtiene los datos de las cotizaciones haga su próxima actualización.

(RN002): Las compras a precio de mercado consisten en comprar X cantidad de acciones de un mismo valor al precio que se obtenga en la próxima ejecución del sistema que obtiene los datos de los valores.

24

24

Stock Market Game

Stock Market Game

Caso de Uso: Comprar valores a precio limitado

Actor Principal: Usuario Actor Secundario: ----- Trigger: El usuario inicia la transacción. Precondiciones: El usuario está conectado

Escenario principal:

1. El usuario selecciona ver las cotizaciones del día.

2. El sistema muestra al usuario el menú de cotizaciones.

3. El usuario selecciona comprar un valor.

4. El sistema muestra los datos del valor y un formulario de compra.

5. El usuario introduce el número de acciones que desea comprar y el limite.

6. El sistema comprueba que el usuario tiene suficiente cash para realizar

 

la transacción.

7. El sistema registra la orden de compra.

Extensiones:

 

6a. El sistema comprueba que el usuario no tiene suficiente cash para realizar la transacción.

 

1.

El sistema registra una orden de compra con el máximo posible de valores a comprar.

Descripción de Datos:

Cotizaciones actuales:

Abreviatura del nombre de la compañía.

Precio actual de la cotización.

Máximo

 

Mínimo

Apertura.

Incremento.

Volumen Formulario de compra:

Cantidad a comprar

Límite de la compra.

25

25

Stock Market Game

Stock Market Game

Reglas de Negocio:

(RN001): Las compras no se ejecutan directamente, se ejecutarán cuando el sistema que obtiene los datos de las cotizaciones haga su próxima actualización. (RN003): Las compras a precio Limitado consisten en comprar X cantidad de acciones de un mismo valor cuando el precio del valor se sitúe por debajo del precio marcado por el límite.

26

26

Stock Market Game

Stock Market Game

Caso de Uso: Comprar valores a precio condicionado

Actor Principal: Usuario Actor Secundario: ----- Trigger: El usuario inicia la transacción. Precondiciones: El usuario está conectado

Escenario principal:

1. El usuario selecciona ver las cotizaciones del día.

2. El sistema muestra al usuario el menú de cotizaciones.

3. El usuario selecciona comprar un valor.

4. El sistema muestra los datos del valor y un formulario de compra.

5. El usuario introduce el número de acciones que desea comprar y la condición.

6. El sistema comprueba que el usuario tiene suficiente cash para realizar

 

la transacción.

7. El sistema registra la orden de compra.

Extensiones:

 

6a. El sistema comprueba que el usuario no tiene suficiente cash para realizar la transacción.

 

1.

El sistema registra una orden de compra con el máximo posible de valores a comprar.

Descripción de Datos:

Cotizaciones actuales:

Abreviatura del nombre de la compañía.

Precio actual de la cotización.

Máximo

 

Mínimo

Apertura.

Incremento.

Volumen Formulario de compra:

Cantidad a comprar

Condición de la compra.

27

27

Stock Market Game

Stock Market Game

Reglas de Negocio:

(RN001): Las compras no se ejecutan directamente, se ejecutarán cuando el sistema que obtiene los datos de las cotizaciones haga su próxima actualización. (RN004): Las compras a precio Condicionado consisten en comprar X cantidad de acciones de un mismo valor cuando el precio del valor se sitúe por encima del precio marcado por el límite.

28

28

Stock Market Game

Stock Market Game

Caso de Uso: Vender valores a precio de mercado.

Actor Principal: Usuario Actor Secundario: ----- Trigger: El usuario inicia la transacción. Precondiciones: El usuario está conectado

Escenario principal:

1. El usuario selecciona ver cartera.

2. El sistema muestra al usuario el menú de cartera.

3. El usuario selecciona vender un valor.

4. El sistema muestra un formulario de venta.

5. El usuario introduce la cantidad a vender.

6. El sistema registra la orden de venta.

 

Extensiones:

Descripción de Datos:

Valores de cartera:

Abreviatura del nombre de la compañía.

Precio actual de la cotización.

Incremento.

Precio de compra

Inversión

Inversión actual

Beneficio

Cantidad de valores Formulario de venta:

Cantidad a vender.

Reglas de Negocio:

(RN005): Las ventas no se ejecutan directamente, se ejecutarán cuando el sistema que obtiene los datos de las cotizaciones haga su próxima actualización.

29

29

Stock Market Game

Stock Market Game

Caso de Uso: Vender valores con limite.

Actor Principal: Usuario Actor Secundario: ----- Trigger: El usuario inicia la transacción. Precondiciones: El usuario está conectado

Escenario principal:

1. El usuario selecciona ver cartera.

2. El sistema muestra al usuario el menú de cartera.

3. El usuario selecciona vender un valor.

4. El sistema muestra un formulario de venta.

5. El usuario introduce la cantidad a vender y el límite de la venta.

6. El sistema registra la orden de venta.

Extensiones:

Descripción de Datos:

Valores de cartera:

Abreviatura del nombre de la compañía.

Precio actual de la cotización.

Incremento.

Precio de compra

Inversión

Inversión actual

Beneficio

Cantidad de valores Formulario de venta:

Cantidad a vender.

Límite de la venta.

Reglas de Negocio:

(RN005): Las ventas no se ejecutan directamente, se ejecutarán cuando el sistema que obtiene los datos de las cotizaciones haga su próxima actualización. (RN006): Las ventas Limitadas consisten en vender acciones de un mismo valor cuando el precio se sitúe por encima del precio marcado por el límite.

30

30

Stock Market Game

Stock Market Game

Caso de Uso: Vender valores condicionados.

Actor Principal: Usuario Actor Secundario: ----- Trigger: El usuario inicia la transacción. Precondiciones: El usuario está conectado

Escenario principal:

1. El usuario selecciona ver cartera.

2. El sistema muestra al usuario el menú de cartera.

3. El usuario selecciona vender un valor.

4. El sistema muestra un formulario de venta.

5. El usuario introduce la cantidad a vender y la condición de la venta.

6. El sistema registra la orden de venta.

Extensiones:

Descripción de Datos:

Valores de cartera:

Abreviatura del nombre de la compañía.

Precio actual de la cotización.

Incremento.

Precio de compra

Inversión

Inversión actual

Beneficio

Cantidad de valores Formulario de venta:

Cantidad a vender.

Condició de la venta.

Reglas de Negocio:

(RN005): Las ventas no se ejecutan directamente, se ejecutarán cuando el sistema que obtiene los datos de las cotizaciones haga su próxima actualización. (RN007): Las ventas condicionadas consisten en vender un valor cuando el precio se sitúe por encima del precio marcado en la condición.

31

31

Stock Market Game

Stock Market Game

Caso de Uso: Ver Cartera de valores.

Actor Principal: Usuario Actor Secundario: ----- Trigger: El usuario inicia la transacción. Precondiciones: El usuario está conectado

Escenario principal:

1. El usuario selecciona ver cartera.

2. El sistema muestra al usuario el menú con los valores de la cartera.

Extensiones:

Descripción de Datos:

Valores de cartera:

Abreviatura del nombre de la compañía.

Precio actual de la cotización.

Incremento.

Precio de compra

Inversión

Inversión actual

Beneficio

Cantidad de valores

Reglas de Negocio:

32

32

Stock Market Game

Stock Market Game

Caso de Uso: Ver cotizaciones.

Actor Principal: Usuario Actor Secundario: ----- Trigger: El usuario inicia la transacción. Precondiciones: El usuario está conectado

Escenario principal:

1. El usuario selecciona ver valores.

2. El sistema muestra las cotizaciones actuales.

Extensiones:

Descripción de Datos:

Cotizaciones actuales:

Abreviatura del nombre de la compañía.

Precio actual de la cotización.

Máximo

Mínimo

Apertura.

Incremento.

Volumen

Reglas de Negocio:

33

33

Stock Market Game

Stock Market Game

Caso de Uso: Ver top 5 jugadores.

Actor Principal: Usuario Actor Secundario: ----- Trigger: El usuario inicia la transacción. Precondiciones: El usuario está conectado

Escenario principal:

1. El usuario selecciona ver los mejores jugadores.

2. El sistema muestra los datos de los 5 mejores.

 

Extensiones:

Descripción de Datos:

Datos de los 5 mejores:

 

Nick.

Valor total de la cartera.

Valor total de la cartera:

Valor de las acciones de la cartera + cash disponible.

Reglas de Negocio:

34

34

Stock Market Game

Stock Market Game

Caso de Uso: Ver buzón.

Actor Principal: Usuario Actor Secundario: ----- Trigger: El usuario inicia la transacción. Precondiciones: El usuario está conectado

Escenario principal:

1. El usuario selecciona la opción del buzón.

2. El sistema le muestra los últimos mensajes y un formulario para enviar mensajes.

Extensiones:

Descripción de Datos:

Mensaje:

Remitente.

Día y hora.

Mensaje escrito Formulario:

Tag.

Texto.

Reglas de Negocio:

35

35

Stock Market Game

Stock Market Game

Caso de Uso: Mandar Mensaje

Actor Principal: Usuario Actor Secundario: ----- Trigger: El usuario inicia la transacción. Precondiciones: El usuario está conectado

Escenario principal:

1. El usuario selecciona la opción del buzón.

2. El sistema le muestra los últimos mensajes y un formulario para enviar mensajes.

3. El usuario rellena el mensaje e introduce el tag del destinatario y envía el mensaje.

4. El sistema envía el mensaje al buzón del destinatario.

Extensiones:

 

4a. El sistema no identifica el tag del destinatario.

 

1.

El sistema notifica del error al usuario.

Descripción de Datos:

Mensaje:

 

Remitente.

Día y hora.

Mensaje escrito Formulario:

Tag.

 

Texto.

Reglas de Negocio:

36

36

Stock Market Game

Stock Market Game

Caso de Uso: Borrar mensaje.

Actor Principal: Usuario Actor Secundario: ----- Trigger: El usuario inicia la transacción. Precondiciones: El usuario está conectado

Escenario principal:

1.

El usuario selecciona la opción del buzón.

2.

El sistema le muestra los últimos mensajes.

3.

El usuario selecciona un mensaje selecciona borrar.

4.

El sistema borra el mensaje.

Extensiones:

 

4a. El sistema no identifica el tag del destinatario.

 

2.

El sistema notifica del error al usuario.

Descripción de Datos:

Mensaje:

 

Remitente.

Día y hora.

Mensaje escrito

Reglas de Negocio:

37

37

Stock Market Game

Stock Market Game

Caso de Uso: Ver los valores que más ganan.

Actor Principal: Usuario Actor Secundario: ----- Trigger: El usuario inicia la transacción. Precondiciones: El usuario está conectado

Escenario principal:

1. El usuario selecciona ver los valores que mas ganan

2. El sistema muestra los datos de los 5 mejores valores.

Extensiones:

Descripción de Datos:

Datos de los 5 mejores:

Ticker.

Incremeto en % y en €.

Reglas de Negocio:

Caso de Uso: Ver los valores que más pierden.

Actor Principal: Usuario Actor Secundario: ----- Trigger: El usuario inicia la transacción. Precondiciones: El usuario está conectado

Escenario principal:

1. El usuario selecciona ver los valores que más pierden.

2. El sistema muestra los datos de los 5 peores valores.

Extensiones:

Descripción de Datos:

Datos de los 5 peores:

Ticker.

Incremeto en % y en €.

Reglas de Negocio:

38

38

Stock Market Game

Stock Market Game

Caso de Uso: Ver los valores más recomendados.

Actor Principal: Usuario Actor Secundario: ----- Trigger: El usuario inicia la transacción. Precondiciones: El usuario está conectado

Escenario principal:

1. El usuario selecciona ver los valores más recomendados

2. El sistema muestra los datos de los 5 valores más recomendados.

Extensiones:

Descripción de Datos:

Datos de las recomendaciones de los valores:

Ticker.

Recomendación.

Reglas de Negocio:

Caso de Uso: Ver los valores menos recomendados.

Actor Principal: Usuario Actor Secundario: ----- Trigger: El usuario inicia la transacción. Precondiciones: El usuario está conectado

Escenario principal:

1. El usuario selecciona ver los valores más recomendados

2. El sistema muestra los datos de los 5 valores menos recomendados.

Extensiones:

Descripción de Datos:

Datos de las recomendaciones de los valores:

Ticker.

Recomendación.

Reglas de Negocio:

39

39

Stock Market Game

Stock Market Game

Caso de Uso: Ver las noticias.

Actor Principal: Usuario Actor Secundario: ----- Trigger: El usuario inicia la transacción. Precondiciones: El usuario está conectado

Escenario principal:

1. El usuario selecciona ver las noticias.

2. El sistema muestra las últimas noticias.

Extensiones:

Descripción de Datos:

Noticias

Titulo con enlace.

Resumen de la noticia.

Reglas de Negocio:

Caso de Uso: Ver los links interesantes.

Actor Principal: Usuario Actor Secundario: ----- Trigger: El usuario inicia la transacción. Precondiciones: El usuario está conectado

Escenario principal:

1. El usuario selecciona ver los links interesantes.

2. El sistema muestra los links a las páginas interesantes.

Extensiones:

Descripción de Datos:

Reglas de Negocio:

40

40

Stock Market Game

Stock Market Game

Caso de Uso: Ver la información sobre la pagina.

Actor Principal: Usuario Actor Secundario: ----- Trigger: El usuario inicia la transacción. Precondiciones: El usuario está conectado

Escenario principal:

1. El usuario selecciona ver la información.

2. El sistema muestra la información.

Extensiones:

Descripción de Datos:

Reglas de Negocio:

Caso de Uso: Ver las recomendaciones

Actor Principal: Usuario Actor Secundario: ----- Trigger: El usuario inicia la transacción. Precondiciones: El usuario está conectado

Escenario principal:

1. El usuario selecciona ver las recomendaciones.

2. El sistema muestra los datos de las recomendaciones.

Extensiones:

Descripción de Datos:

Datos de las recomendaciones de los valores:

Ticker.

Datos de osciladores.

Reglas de Negocio:

41

41

Stock Market Game

Stock Market Game

3.1.2 Modelo de dominio.

El modelo de dominio es un diagrama de la metodología UML que muestra los conceptos básicos del dominio del problema, sus propiedades más importantes y las relaciones existentes entre ellos.

El modelo de dominio obliga a los desarrolladores y usuarios a pensar formalmente sobre el problema para intentar reflejar la realidad sobre un diagrama. Este reflejo de la realidad, permite a los desarrolladores validar su comprensión del problema a tratar.

Para realizar el modelo de dominio, se ha utilizado una perspectiva conceptual, que pretende reflejar lo más fielmente posible el problema, sus conceptos, las propiedades de los conceptos y sus relaciones. El modelo de dominio no es una solución, es una perspectiva del problema.

En el diagrama del modelo de dominio existen varios conceptos que se explican a continuación para una correcta interpretación del diagrama, estos conceptos son:

Clases:

Las clases representan conceptos existentes en el dominio del problema, estos conceptos suelen tener información asociada y relaciones entre ellos, por ejemplo cosas físicas como una empresa o conceptos lógicos como son una operación de compra. Su representación suele ser una caja, en la que el nombre de la caja está en la parte superior y los atributos debajo.

la caja está en la parte superior y los atributos debajo. Esta es la clase Empresa,

Esta es la clase Empresa, con los atributos nombre y ticker, ambos son de tipo String.

42

42

Stock Market Game

Stock Market Game

Atributos:

Los atributos representan información relevante asociado a los conceptos del dominio, es decir, las clases. Suelen ir acompañadas del prototipo del atributo:

String

Boolean

Int

Muchos otros como doublé, float, Date…

Relaciones:

Representan las asociaciones entre las clases del dominio, tienen diversos atributos:

Nombre: Puede ser cualquiera, pero explicativo, como alumnos que pertenecen a un grupo, etc.

Cardinalidad: Indica el numero de instancias como mínimo y como máximo que pueden participar en la asociación con una instancia.

Nombre de asociacion

Clase A

 

Clase B

1

0

*

Existen diferentes tipos de relaciones, pero en el caso que nos ocupa, tan solo se han necesitado 2:

Composición: Una clase puede estar compuesta por otras clases, por ejemplo, un libro puede tener varios capítulos. La composición se representa con una flecha con un rombo en el lado del origen.

con una flecha con un rombo en el lado del origen.  Asociación: Es la relación

Asociación: Es la relación de interacción entre 2 clases. Se representa con una línea recta.

43

43

Stock Market Game

Stock Market Game

3.1.2.1 Diagrama del modelo de dominio

Stock Market Game 3.1.2.1 Diagrama del modelo de dominio 44

44

44

Stock Market Game

Stock Market Game

3.1.2.2 Glosario de clases

En el glosario de clases se explican las clases expuestas en el modelo de dominio haciendo una breve descripción de cada una de ellas.

Clase

Descripción

Usuario

Esta clase representa al usuario de Stock Market Game

Mensajes

Los mensajes forman el buzón del usuario, son todos aquellos mensajes que ha recibido por parte de otros usuarios.

Liga

La liga es un concepto, es una pequeña competición entre unos usuarios determinados que son miembros de la liga.

Acción

El conjunto de las acciones forman la cartera del usuario, son las acciones que posee y que puede comprar o vender a través de las órdenes.

Orden

Una orden representa una transacción, es la compra o venta de una acción que aún no se ha completado, ya sea porque no se cumplen las condiciones o simplemente porque no se ha ejecutado.

Hay diversos tipos de ordenes:

Órdenes de compra a precio de mercado.

Órdenes de compra a precio limitado.

Órdenes de compra a precio condicionado.

Órdenes de venta a precio de mercado.

Órdenes de venta a precio limitado.

Órdenes de venta a precio condicionado.

El atributo tipo es el que marca qué tipo de orden es.

Empresa

Clase que representa a cada una de las empresas que son parte de IBEX35.

45

45

Stock Market Game

Stock Market Game

Cotización

Una cotización son los datos de una empresa en un momento determinado, es decir, el precio al que está cotizando, su variación, etc.

Análisis

Un análisis son todas las operaciones de análisis técnico que se hacen un día sobre una empresa. Además también contendrá los valores obtenidos de los osciladores creados por SMG.

46

46

Stock Market Game

Stock Market Game

3.1.3 Interfaz inicial del sistema

Es el último paso del análisis de requisitos para la aplicación web, en ella se ha definido como será el interfaz inicial que tendrá el sistema, además de dar una aproximación de cómo será estéticamente.

Lo primero que se realizó fue un boceto con DreamWeaver de cuál sería el aspecto de la página, quedando como se ve a continuación.

Pantalla Principal

quedando como se ve a continuación. Pantalla Principal Tal como se puede ver en la imagen,

Tal como se puede ver en la imagen, el diseño consta de varias partes, 2 barras de navegación, sobre las que se podrá acceder a las partes principales del sistema y la parte central en la que se mostrará el contenido de la información solicitada. El diseño es muy simple e intuitivo dejando todas las unidades funcionales accesibles rápidamente.

Por cada caso de uso podrán existir uno o varios archivos .jsp que rellenarán el contenido de la página.

Los principales apartados accesibles desde la barra de navegación, será la visualización de la cartera, las cotizaciones actuales, las ordenes pendientes de ejecución, noticias e información, además de todo lo referente a las ligas y el buzón.

47

47

Stock Market Game

Stock Market Game

Formularios

En la parte del contenido de la página existirán los formularios para la toma de datos, como pueda ser para darse de alta en el sistema o enviar mensajes a los demás jugadores.

Mandar Mensaje

o enviar mensajes a los demás jugadores. Mandar Mensaje El formato del formulario es muy simple

El formato del formulario es muy simple con un textbox para rellenar con el nombre de usuario del destinatario y debajo un textarea con el texto del mensaje. Es bastante intuitivo, el usuario solo tiene que rellenar los campos y hacer click sobre el botón de enviar.

El resto de formularios de los que dispondrá el sistema será muy parecido tal y como se puede ver en algunos ejemplos que figuran a continuación.

48

48

Stock Market Game

Stock Market Game

Crear Liga

Stock Market Game Crear Liga Los diseños se han intentado realizar los más simples posibles, evitando

Los diseños se han intentado realizar los más simples posibles, evitando radiobuttons e intentando mostrar la máxima información.

Este formulario es el que se muestra cuando un usuario que no pertenece a una liga quiere crear la suya propia, en el pondrá el “tag” de la liga (es una abreviatura o un seudónimo del nombre), el nombre y por último una descripción del propósito de la liga.

49

49

Stock Market Game

Stock Market Game

Alta Liga

Stock Market Game Alta Liga Tal como indican los casos de uso, antes de pertenecer a

Tal como indican los casos de uso, antes de pertenecer a una liga, hay que mandar una petición al administrador de la liga, para eso existe este formulario. Este formulario se envía como un mensaje de petición de alta en la liga, la única diferencia entre un mensaje a un usuario y este formulario, es que en vez de el nombre de usuario se usa el “tag” de la liga como destinatario.

El resto de formularios seguirán este mismo tipo de formato, quedando sujetos en su apariencia a la hoja de estilos que se elija definitivamente.

Con este apartado se acaba el análisis de requisitos de la aplicación web, quedando concretados los casos de uso, el modelo de dominio y el interfaz inicial del sistema.

50

50

Stock Market Game

Stock Market Game

3.2 Modelo conceptual de datos.

El modelo conceptual de datos describe las características principales de los datos del sistema. Al igual que el modelo de dominio, el modelo conceptual de datos, consta de 2 partes, un esquema gráfico y una especificación en la que se describen cada uno de los componentes del esquema.

En el modelo conceptual de datos se describe las entidades, atributos y relaciones de interés para el negocio a representar. Este modelo debe ser independiente del hardware y software utilizado para el manejo de los datos.

El modelo que se ha elegido para la representación es el desarrollado por P.Chen en 1976 bautizado como “Análisis entidad-relación”. En el existen los siguientes conceptos:

Entidad: Son objetos que tienen una existencia propia. Es aquello de interés duradero para la empresa, sobre lo cual se pueden almacenar datos e identificar de un modo único.

Relaciones: Representación de asociaciones entre entidades. Las relaciones establecen el grado de asociación entre 2 estructuras de datos diferentes.

Atributos: Datos elementales, son características o propiedades de una entidad que sirven para definir, describir y clasificar. Los atributos.

Estos son los símbolos que se usarán para realizar el modelo entidad relación:

Entidad Relación
Entidad
Relación

51

51

Stock Market Game

Stock Market Game

Las cardinalidades de las relaciones se representarán como:

0,1: Relación de 0 ó 1.

Relación de 0 ó muchos.

de 1 o muchos.

Relación

0

1

*:

*:

Un ejemplo rápido de la nomenclatura sería este:

0 1 *: *: Un ejemplo rápido de la nomenclatura sería este: En él se ve,

En él se ve, que la entidad usuario tiene una relación con la entidad stocks, esa relación es de tipo “posee”, con una cardinalidad de 1 en usuario y de 0 a muchos en Stocks, lo cual se traduce en que 1 usuario posee muchos o ningún stock. Así mismo, un stock no puede pertenecer más que a 1 solo usuario.

Una vez explicado el modelo se van a representar todas las relaciones del sistema.

se van a representar todas las relaciones del sistema. En esta relación un usuario puede pertenecer

En esta relación un usuario puede pertenecer a una liga o no. Pero todas las ligas tienen que tener al menos un miembro.

52

52

Stock Market Game

Stock Market Game
Stock Market Game Cada stock del sistema es de una empresa en concreto, pero no hay

Cada stock del sistema es de una empresa en concreto, pero no hay un límite de stocks por cada empresa. Combinando esta relación con la de stocks-usuarios, se puede observar como un usuario tiene stocks que son de 1 empresa.

observar como un usuario tiene stocks que son de 1 empresa. De cada empresa, el sistema

De cada empresa, el sistema hará un análisis al día, es por eso que las empresas tienen varios análisis. Cada análisis es de 1 empresa únicamente.

análisis. Cada análisis es de 1 empresa únicamente. La entidad cotización representa el precio al que

La entidad cotización representa el precio al que cotiza una empresa en un momento dado, tal y como se ha explicado anteriormente. Es por eso que a lo largo del día y del año hay varias cotizaciones por cada empresa.

día y del año hay varias cotizaciones por cada empresa. Las ligas son creadas por el

Las ligas son creadas por el líder de la liga y cada liga sólo tiene un líder que es el usuario que la creó.

53

53

Stock Market Game

Stock Market Game
Stock Market Game En la relación entre la entidad mensaje y usuario hay 2 opciones. En

En la relación entre la entidad mensaje y usuario hay 2 opciones. En un mensaje un usuario puede ser el origen del mensaje o puede ser el destinatario. Sin embargo cada usuario puede mandar o recibir varios mensajes.

embargo cada usuario puede mandar o recibir varios mensajes. Cuando un usuario quiere comprar o vender

Cuando un usuario quiere comprar o vender un stock, lanza una orden. Es decir, cada usuario puede tener varias órdenes, pero cada orden pertenece a un usuario únicamente.

pero cada orden pertenece a un usuario únicamente. En la relación anterior se puede ver como

En la relación anterior se puede ver como un usuario lanzaba órdenes de compra, las ordenes, son sobre una empresa específica. Cada empresa puede sufrir varias órdenes de compra o venta en un momento dado.

54

54

Stock Market Game

Stock Market Game

En los siguientes diagramas se han agrupado todas las relaciones entorno a las 2

entidades que más relaciones tienen, para de esta manera tener una visión global del

sistema

para de esta manera tener una visión global del sistema En el diagrama se puede ver

En el diagrama se puede ver como de una misma empresa pueden existir al mismo tiempo varios análisis, stocks, cotizaciones y órdenes.

55

55

Stock Market Game

Stock Market Game
Stock Market Game El modelo queda completado con este diagrama en el que se pueden observar

El modelo queda completado con este diagrama en el que se pueden observar las relaciones del usuario con el resto de entidades, que tienen coherencia con las funcionalidades descritas en los casos de uso.

Ambos diagramas se pueden unir entre las relaciones existentes entre usuarios- ordenes-empresas o usuarios-stocks-empresas dando lugar al diagrama entidad relación final del sistema.

56

56

Stock Market Game

Stock Market Game

3.3 Requisitos de la aplicación batch.

3.3.1 Lista de requisitos.

Se ha elaborado una lista de requisitos que debe cumplir la aplicación batch para el correcto funcionamiento del sistema completo. Tal como se ha descrito en la identificación de necesidades, la funcionalidad principal de la aplicación batch es la de recoger las cotizaciones de los valores y analizarlos.

Título: Horario del mercado

Identificador: R01

Descripción: El sistema debe funcionar de lunes a viernes mientras esté abierto el mercado, de 09:00 a 18:00 Horario GMT+1.

Medición:

Los datos se deben recoger entre el horario mencionado ya que es el horario de apertura de la bolsa española.

Beneficio:

Sin este requisito la aplicación no podría obtener los datos del intradía y el sistema no tendría sentido.

57

57

Stock Market Game

Stock Market Game

Título: Frecuencia de muestreo

Identificador: R02

Descripción: Este requisito describe la frecuencia con la que se debe recoger los datos de las cotizaciones durante el horario de mercado

Medición:

Los datos se deben recoger cada 3 minutos aproximadamente, para tener una referencia clara de los cambios rápidos del mercado.

Beneficio:

Una frecuencia muy alta de muestreo podría perder cambios bruscos en la cotización, mientras que una demasiado baja podría saturar las conexiones con la base de datos.

Requisitos relacionados:

R01

Título: Estadísticas

Identificador: R03

Descripción: Este requisito describe las estadísticas que debe mostrar el sistema.

Medición:

Las estadísticas que debe recoger el sistema y representarlas son las de los precios de las cotizaciones de los últimos días y las del intradía.

Beneficio:

Las gráficas muestran más información que muchos otros datos, una aplicación de bolsa sin estadísticas no estaría completa.

58

58

Stock Market Game

Stock Market Game

Título: Análisis técnico

Identificador: R04

Descripción: Este requisito describe los tipos de análisis que debe realizar el sistema sobre las cotizaciones.

Medición:

El análisis técnico describe muchos análisis y osciladores calculables para interpretar los movimientos del mercado. En este sistema se pretende utilizar los más comunes y mas informativos como: RSI, Media móvil, Estocástico y Momentum.

Beneficio:

Para desarrollar el módulo de ayuda a la inversión es necesario contar con las herramientas del análisis chartista.

Título: Histórico

Identificador: R05

Descripción: Este requisito describe los datos que debe recibir el sistema

Medición:

Para calcular osciladores e indicadores, además de las estadísticas es necesario obtener un histórico de las cotizaciones. Se debe obtener los datos del último año siempre que sea posible obtenerlas.

Beneficio:

Con estos datos se podrán realizar las estadísticas y los análisis.

Requisitos relacionados:

R03, R04.

59

59

Stock Market Game

Stock Market Game

3.3.2 Diagrama de contexto de la aplicación batch

Para realizar el modelo lógico se ha utilizado un DFD (diagrama de flujo de datos), para representar el comportamiento de la aplicación.

Los símbolos del DFD son los siguientes:

Proceso Flujo de datos Entidad externa Almacén de datos
Proceso Flujo de datos Entidad externa Almacén de datos
Proceso Flujo de datos Entidad externa Almacén de datos

Proceso

Flujo de datos

Entidad externa

Almacén de datos

Diagrama de contexto

Ficheros Históricos Cotizaciones Stock Market Game
Ficheros Históricos
Cotizaciones
Stock
Market
Game

Yahoo

60

60

Stock Market Game

Stock Market Game

Diseño del Sistema

61

61

Stock Market Game

Stock Market Game

4. Diseño del sistema

4.1 Arquitectura del sistema

La arquitectura elegida para la realización de la aplicación web es el modelo vista controlador (MVC) definido por la enciclopedia online wikipedia como:

Modelo Vista Controlador (MVC) es un patrón de arquitectura de software que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos. El patrón MVC se ve frecuentemente en aplicaciones web, donde la vista es la página HTML y el código que provee de datos dinámicos a la página, el controlador es el Sistema de Gestión de Base de Datos y el modelo es el modelo de datos.

Modelo: Esta es la representación específica de la información con la cual el sistema opera. La lógica de datos asegura la integridad de estos y permite derivar nuevos datos; por ejemplo, no permitiendo comprar un número de unidades negativo, calculando si hoy es el cumpleaños del usuario o los totales, impuestos o portes en un carrito de la compra.

Vista: Este presenta el modelo en un formato adecuado para interactuar, usualmente la interfaz de usuario.

Controlador: Este responde a eventos, usualmente acciones del usuario e invoca cambios en el modelo y probablemente en la vista.

Muchos sistemas informáticos utilizan un Sistema de Gestión de Base de Datos para gestionar los datos. En MVC corresponde al controlador.

Aunque se pueden encontrar diferentes implementaciones de MVC, el flujo que sigue el control generalmente es el siguiente:

1. El usuario interactúa con la interfaz de usuario de alguna forma (por ejemplo, el usuario pulsa un botón, enlace)

2. El controlador recibe (por parte de los objetos de la interfaz-vista) la notificación de la acción solicitada por el usuario. El controlador gestiona el evento que llega, frecuentemente a través de un gestor de eventos (handler) o callback.

3. El controlador accede al modelo, actualizándolo, posiblemente modificándolo de forma adecuada a la acción solicitada por el usuario (por ejemplo, el controlador actualiza el carro de la compra del usuario). Los controladores complejos están a menudo estructurados usando un patrón de comando que encapsula las acciones y simplifica su extensión.

62

62

Stock Market Game

Stock Market Game

4. El controlador delega a los objetos de la vista la tarea de desplegar la interfaz de usuario. La vista obtiene sus datos del modelo para generar la interfaz apropiada para el usuario donde se refleja los cambios en el modelo (por ejemplo, produce un listado del contenido del carro de la compra). El modelo no debe tener conocimiento directo sobre la vista. Sin embargo, el patrón de observador puede ser utilizado para proveer cierta indirección entre el modelo y la vista, permitiendo al modelo notificar a los interesados de cualquier cambio. Un objeto vista puede registrarse con el modelo y esperar a los cambios, pero aun así el modelo en sí mismo sigue sin saber nada de la vista. El controlador no pasa objetos de dominio (el modelo) a la vista aunque puede dar la orden a la vista para que se actualice. Nota: En algunas implementaciones la vista no tiene acceso directo al modelo, dejando que el controlador envíe los datos del modelo a la vista.

5. La interfaz de usuario espera nuevas interacciones del usuario, comenzando el ciclo nuevamente.

del usuario, comenzando el ciclo nuevamente. ” Para el modelo MVC se ha elegido una implementación

Para el modelo MVC se ha elegido una implementación basada en J avaEE.

Modelo:

El modelo se controla a través de los DAOs (Data Access Control) para el acceso a los datos, que son clases java que acceden a la base de datos y transmiten al controlador los datos solicitados.

Controlador:

El controlador lo llevan los Servicios, que controlan todo el flujo de datos y realizan todas las funcionalidades del sistema, los DAOs existen únicamente para acceder a los datos, el encargado de operar con ellos son los servicios. Para la recepción de eventos se utilizan los Servlets que ceden el cont rol a los servicios.

63

63

Stock Market Game

Stock Market Game

Vista:

La vista la generan los JSPs (Java Server Pages) generando un código HTML interpretable por cualquier navegador.

Para la implementación de características de WEB 2.0 en la vista, se ha elegido AJAX (Asynchronous JavaScript and XML) para generar contenido dinámico en las páginas generadas por el sistema.

AJAX permite cambiar contenidos o mostrar nuevos contenidos en una página web sin necesidad de recargar la página, esto se realiza a través de eventos generados por el navegador en el ordenador del cliente sin que él se entere.

Estos eventos son generados por códigos javascript que se ejecutan cuando el usuario provoca un evento, ya sea haciendo click en algún botón, pasando por encima de secciones de una página, que genera una petición asíncrona a un Servlet. Para más información sobre la tecnología AJAX consulta el apartado 6 de este mismo documento (Tecnología AJAX y el Framework DWR).

64

64

Stock Market Game

Stock Market Game

4.2 Diagramas de secuencia.

Una vez elegida la implementación para el sistema, se realizan los diagramas de secuencia para los casos de uso. Los diagramas de secuencia son un tipo de diagramas de interacción.

Estos diagramas representan las interacciones, que consisten en el intercambio de mensajes entre un conjunto de objetos con un propósito específico. Los diagramas de secuencia hacen énfasis en la secuencia temporal de los mensajes enviados.

A continuación se va a mostrar unos diagramas de secuencia que representan todos los intercambios de mensajes necesarios para ejecutar un caso de uso:

Caso de uso: “Comprar valores a precio limitado”:

Recordemos los pasos del caso de uso:

1. El usuario selecciona ver las cotizaciones del día.

2. El sistema muestra al usuario el menú de cotizaciones.

3. El usuario selecciona comprar un valor.

4. El sistema muestra los datos del valor y un formulario de compra.

5. El usuario introduce el número de acciones que desea comprar y el límite.

6. El sistema comprueba que el usuario tiene suficiente cash para realizar la transacción.

7. El sistema registra la orden de compra.

65

65

Stock Market Game

Stock Market Game
Stock Market Game El usuario selecciona en el menú de cotizaciones comprar un valor, que en

El usuario selecciona en el menú de cotizaciones comprar un valor, que en este caso es ACS pulsando el botón comprar. Este botón genera una petición al servlet “ComprarTipoServlet”.

genera una petición al servlet “ComprarTipoServlet”. El servlet, cede el control a ComprarTipo.jsp, que muestra

El servlet, cede el control a ComprarTipo.jsp, que muestra un formulario de compra, tal y como se relata en el caso de uso.

66

66

Stock Market Game

Stock Market Game
Stock Market Game El usuario introduce el número de acciones y el límite para la compra,

El usuario introduce el número de acciones y el límite para la compra, presiona el botón comprar.

y el límite para la compra, presiona el botón comprar. El servlet ComprarLimitadaServlet, recibe la petición

El servlet ComprarLimitadaServlet, recibe la petición de compra, que cede el control al ServicioComprar, que introduce la orden de compra en la base de datos a través de OrdenDAO. Por último se cede el control a ordenes.jsp que muestra la página con las ordenes del usuario.

67

67

Stock Market Game

Stock Market Game
Stock Market Game Estas son las interacciones necesari as para realizar el caso de uso, como

Estas son las interacciones necesari as para realizar el caso de uso, como se puede ver, la lógica de negocio está en los servicios, el Servlet le proporciona los datos de la petición para que genere las órdenes de compra, el Servicio comprueba que el usuario tiene suficientes fondos sin usar y delega en ordenDAO para que inserte en la base de datos la orden de compra.

El resto de casos de uso se realizan de la misma manera, la lógica de negocio en los servicios, la vista en los jsp y la recepción de eventos en los servlets.

68

68

Stock Market Game

Stock Market Game

Diagrama de secuencia de una petición asíncrona:

En este diagrama se muestra un ejemplo de cómo funciona una petición asíncrona de AJAX usando el frameworkDWR. En este caso, la petición consiste en refrescar los datos del usuario, sus órdenes, stocks y fondos actuales.

datos del usuario, sus órdenes, stocks y fondos actuales.  El navegador, genera una petición asíncrona

El navegador, genera una petición asíncrona forzada por un javascript. Dicha petición llega al servlet proporcionado por DWR, que recibe la pet ición asíncrona, cediendo la petición al servicio que en este caso se llama Cotizar. Este servicio, recibe todas las peticiones asíncronas existentes y las gestiona.

En este caso, el servicio Cotizar necesita todos los datos del usuario, llamando al ServicioUsuario que casualmente tiene un método para recopilar toda la información e usuario.

ServicioUsuario, llama a UsuarioDAO que crea una instancia de Usuario y se la devuelve a Servicio Usuario que a su vez se la pasa a Cotizar, que introduce en la sesión el usuario recibido.

Como el navegador sólo entiende código HTML, cotizar ejecuta usuario.jsp para generar un String con el código y devolvérselo a través del servlet DWR al navegador.

69

69

Stock Market Game

Stock Market Game

Diseño

Detallado

70

70

Stock Market Game

Stock Market Game

5. Diseño detallado

En esta fase del desarrollo, se realiza la última fase del proceso de diseño, en esta fase, se agregan los detalles de implementación del modelo del mundo y se desarrollan los modelos de control persistencia y comunicaciones.

El diseño detallado se va a dividir en 3 partes, referentes a:

Aplicación web:

En esta fase, se realizarán los diagramas de clases y paquetes en los que se describirán todos los atributos y métodos necesarios en cada clase y la comunicación entre los paquetes.

También se definirá como se ha de estructurar la aplicación, sus carpetas y subcarpetas, el código fuente y todo lo necesario para que funcione la aplicación.

Aplicación Batch:

Para la aplicación batch se realizarán los DFDs de primer nivel y los diagramas de flujo de cada uno de los procesos.

La base de datos:

Para la base de datos, se realizará un diagrama con el diseño final y las sentencias sql necesarias para crear las tablas.

Esta última fase del diseño, precede directamente a la programación, por lo tanto tiene que dejar claros todos los detalles de diseño del sistema.

71

71

Stock Market Game

Stock Market Game

5.1 Diseño de la aplicación web.

5.1.1 Estructura de la aplicación.

La aplicación web se estructurará de la siguiente manera:

La aplicación web se estructurará de la siguiente manera: Carpetas:  Src: Esta carpeta contendrá los

Carpetas:

Src: Esta carpeta contendrá los paquetes con el código fuente de los DAOs, objetos del dominio, los servlets y los servicios.

Etc: Contendrá el código sql necesario para crear la base de datos.

META-INF: contendrá en context.xml y el manifest.

Web: Dentro de esta carpeta se ubican todos los archivos accesibles desde el navegador. Cada subcarpeta contiene un tipo de archivo, los htmls, las imágenes, los javascripts, las paginas jsp y las hojas de estilo.

WEB-INF: Contiene el web.xml, el dwr.xml y las librerías necesarias.

72

72

Stock Market Game

Stock Market Game

5.1.2 Diagrama de paquetes.

Los paquetes se utilizan para descomponer el sistema en partes más pequeñas y manejables. Un paquete puede agrupar cualquier tipo de elementos, en nuestra aplicación, cada paquete agrupará clases relacionadas entre sí.

En el diagrama de paquetes, cada paquete se muestra como un rectángulo con una solapa, las flechas indican qué paquetes pueden acceder a los demás paquetes. El diagrama de paquetes es en realidad un diagrama de clases especial donde se muestran los paquetes.

diagrama de clases especial donde se muestran los paquetes. Todos los paquetes pueden acceder a los

Todos los paquetes pueden acceder a los objetos del dominio y son los servicios los que pueden acceder a los DAOs, los servlets, incluidos en el paquete “iu” , acceden a los servicios y al paquete de domino.

73

73

Stock Market Game

Stock Market Game

5.1.3 Diagramas de clase.

Los diagramas de clase, especifican los atributos, métodos y relaciones entre las clases de un mismo paquete.

La sintaxis de un atributo es la siguiente:

[Visibilidad]nombre[:tipo]

La visibilidad puede ser:

Public:

Private: Representado por un cubo rojo

Protected:

El tipo ser refiere al tipo de atributo que es, si es una clas e Usuario por ejemplo, o un String.

Las relaciones se representan igual que en el modelo de dominio, tanto de composición como de relación. Las primeras representadas como una flecha con un rombo en el origen y las segundas como una flecha simple o doble d ependiendo de su navegabilidad.

74

74

Stock Market Game

Stock Market Game

5.1.2.1 Diagrama de clase del paquete“iu”

Stock Market Game 5.1.2.1 Diagrama de clase del paquete“iu” 75
Stock Market Game 5.1.2.1 Diagrama de clase del paquete“iu” 75

75

75

Stock Market Game

Stock Market Game
Stock Market Game En este diagrama se ven todas las clases del paquete iu, que contiene

En este diagrama se ven todas las clases del paquete iu, que contiene los servlets, todos con sus métodos doGet y doPost.

76

76

Stock Market Game

Stock Market Game

5.1.2.2 Diagrama de clase del paquete“DAO

Stock Market Game 5.1.2.2 Diagrama de clase del paquete“ DAO ” 77

77

77

Stock Market Game

Stock Market Game

5.1.2.3 Diagrama de clase del paquete“Servicios

Stock Market Game 5.1.2.3 Diagrama de clase del paquete“ Servicios ” 78

78

78

Stock Market Game

Stock Market Game

5.1.2.4 Diagrama de clase del paquete“Dominio

Stock Market Game 5.1.2.4 Diagrama de clase del paquete“ Dominio ” 79

79

79

Stock Market Game

Stock Market Game

5.2 Diseño de la base de datos.

5.2.1 Diagrama de la base de datos

Después de realizar el diagrama entidad relación, el siguiente paso es transformarlo en el diseño de una base de datos, quedando como se puede ver en la figura siguiente.

siguiente paso es transformarlo en el diseño de una base de datos, quedando como se puede

80

80

Stock Market Game

Stock Market Game

5.2.2 Diseño físico de la base de datos

Por último, se ha desarrollado el diseño físico de la base de datos, con todos sus atributos, claves extranjeras. Este modelo se representa mediante el lenguaje de descripción de datos o DLL, con las siguientes tablas:

Tabla Empresas

CREATE TABLE `empresas` ( `idEmpresa` int(11) NOT NULL auto_increment, `nombre` varchar(20) NOT NULL, `tiker` varchar(5) NOT NULL, PRIMARY KEY (`idEmpresa`)

)

Tabla Análisis

CREATE TABLE `analisis` ( `idAnalisis` int(11) NOT NULL auto_increment, `idEmpresa` int(11) NOT NULL, `mediaMovil` double NOT NULL, `rsi` double NOT NULL, `momentum` double NOT NULL, `estocasticoD` double NOT NULL, `estocasticoK` double NOT NULL, `volatilidad` double NOT NULL, `subidaLibre` int(11) NOT NULL, `stopLoss` int(11) NOT NULL, `osciladorVuelta` int(11) NOT NULL, `fecha` date NOT NULL, `osciladorSMG` double(6,2) NOT NULL, PRIMARY KEY (`idAnalisis`)

)

81

81

Stock Market Game

Stock Market Game

Tabla Usuarios

CREATE TABLE `usuarios` ( `idUsuario` int(11) NOT NULL auto_increment, `nombre` varchar(20) NOT NULL, `apellidos` varchar(20) NOT NULL, `email` varchar(40) NOT NULL, `login` varchar(20) NOT NULL, `pass` varchar(20) NOT NULL, `fondos` double(10,2) NOT NULL, `idLiga` int(11) default NULL, PRIMARY KEY (`idUsuario`)

)

Tabla Ligas

CREATE TABLE `ligas` ( `idLiga` int(11) NOT NULL auto_increment, `nombre` varchar(20) NOT NULL, `descripcion` varchar(250) NOT NULL, `tag` varchar(20) NOT NULL, `idUsuario` int(11) NOT NULL,

PRIMARY KEY (`idLiga`), KEY `FK_idUSuario_Lider` (`idUsuario`), CONSTRAINT `FK_idUSuario_Lider` FOREIGN KEY (`idUsuario`) REFERENCES `usuarios` (`idUsuario`)

)

ALTER TABLE usuarios ADD CONSTRAINT FK_idLigaPertenece FOREIGN KEY (`idLiga`) REFERENCES `ligas` (`idLiga`);

82

82

Stock Market Game

Stock Market Game

Tabla Mensajes

CREATE TABLE `mensajes` ( `idMensaje` int(11) NOT NULL auto_increment, `idUsuarioOri` int(11) NOT NULL,

`idUsuarioDest` int(11) NOT NULL, `texto` varchar(250) NOT NULL, `fecha` date NOT NULL, `peticion` int(11) NOT NULL, PRIMARY KEY (`idMensaje`), KEY `FK_idUsuarioOri` (`idUsuarioOri`), KEY `FK_idUsuarioDest` (`idUsuarioDest`), CONSTRAINT `FK_idUsuarioDest` FOREIGN KEY (`idUsuarioDest`) REFERENCES `usuarios` (`idUsuario`), CONSTRAINT `FK_idUsuarioOri` FOREIGN KEY (`idUsuarioOri`) REFERENCES `usuarios` (`idUsuario`)

)

Tabla Stocks

CREATE TABLE `stocks` ( `idStock` int(11) NOT NULL auto_increment, `idUsuario` int(11) NOT NULL, `idEmpresa` int(11) NOT NULL, `titulos` int(11) NOT NULL, `precioCompra` double(6,2) NOT NULL, PRIMARY KEY (`idStock`), KEY `FK_idEmpresaSt` (`idEmpresa`), KEY `FK_idUsuarioSt` (`idUsuario`), CONSTRAINT `FK_idEmpresa_st` FOREIGN KEY (`idEmpresa`) REFERENCES `empresas`

(`idEmpresa`), CONSTRAINT `FK_idUsuario_st` FOREIGN KEY (`idUsuario`) REFERENCES `usuarios` (`idUsuario`)

)

83

83

Stock Market Game

Stock Market Game

Tabla Ordenes

CREATE TABLE `ordenes` ( `idOrden` int(11) NOT NULL auto_increment, `idUsuario` int(11) NOT NULL,

`idEmpresa` int(11) NOT NULL, `tipo` int(11) NOT NULL, `cantidad` int(11) NOT NULL, `condicion` decimal(6,2) NOT NULL, PRIMARY KEY (`idOrden`), KEY `FK_idUsuario_ord` (`idUsuario`), KEY `FK_idEmpresa_ord` (`idEmpresa`), CONSTRAINT `FK_idEmpresaOrd` FOREIGN KEY (`idEmpresa`) REFERENCES `empresas` (`idEmpresa`), CONSTRAINT `FK_idUsuarioOrd` FOREIGN KEY (`idUsuario`) REFERENCES `usuarios` (`idUsuario`)

)

Tabla Cotizaciones

CREATE TABLE `cotizaciones` ( `idCotizacion` int(11) NOT NULL auto_increment, `idEmpresa` int(11) NOT NULL, `precio` double(6,2) NOT NULL, `fecha` date NOT NULL, `hora` varchar(20) NOT NULL, `variacion` double(6,2) NOT NULL, `max` double(6,2) NOT NULL,

`min` double(6,2) NOT NULL, `apertura` double(6,2) NOT NULL, `volumen` int(11) NOT NULL, PRIMARY KEY (`idCotizacion`), KEY `FK_idEmpresa_cot` (`idEmpresa`), CONSTRAINT `FK_idEmpresa_cot` FOREIGN KEY (`idEmpresa`) REFERENCES `empresas` (`idEmpresa`)

)

84

84

Stock Market Game

Stock Market Game

5.3 Diseño de la aplicación batch

Para realizar el diseño de la aplicación batch, primeramente se ha realizado un diagrama de flujo de datos de primer nivel de la aplicación. Los símbolos utilizados, son los mismos que se han explicado a la hora de realizar el diagrama de contexto en el análisis de requisitos.

Primero se han identificado los procesos:

Main: Este proceso se encarga de gestionar la ejecución de los demás procesos, coordina la ejecución de todos, debe ejecutar la obtención de cotizaciones en el horario de mercado, arrancar el histórico al iniciar el sistema y ejecutar el sistema experto al final del día.

Histórico: El sistema necesita datos históricos de las cotizaciones para iniciar su funcionamiento, este proceso se encarga de la obtención de dichos históricos.

Obtener cotizaciones: Como su nombre indica, este proceso se encarga de ir recibiendo las cotizaciones del día según llegan.

Sistema experto, análisis técnico y el simulador: Este proceso se tratará en el punto 7 de este mismo documento por ser un apartado fundamental en el desarrollo del proyecto y necesitando una explicación más exhaustiva.

85

85

Stock Market Game

Stock Market Game

5.3.1 DFD de primer nivel.

Stock Market Game 5.3.1 DFD de primer nivel. Los flujos de datos se pueden ver claramente

Los flujos de datos se pueden ver claramente en el diagrama, los diversos procesos se comunican entre sí usando el almacén de datos. Con este diagrama se tiene un diseño de cómo funcionan los flujos de datos entre los diversos procesos.

Los datos de los ficheros históricos y las cotizaciones vienen de la página de yahoo finanzas.

La aplicación web, aunque no aparece en el DFD por no ser parte de la aplicación batch, también usa el mismo almacén de datos.

86

86

Stock Market Game

Stock Market Game

5.3.2 Diagramas de flujo

Al ser estos programas de una naturaleza lineal, los diagramas que más se ajustan a su comportamiento son los más tradicionales tal y como son los diagramas de flujo.

En este apartado se van a representar los diagramas de flujo de cada uno de los programas y sus funcionalidades.

Se pueden observar los siguientes símbolos en los diagramas de flujo.

Flechas:

Representan el orden de ejecución de cada una de las funciones, cuando una operación termina, se pasa a la siguiente a través de una de las flechas.

Rectángulos:

Son operaciones que ejecuta el proceso, las operaciones aquí presentadas son a alto nivel y conllevan muchas instrucciones de ejecución.

Rombos:

Son decisiones que pueden desembocar en varios caminos según sea la decisión que se tome. Una sentencia “if” que desemboque en 2 hilos de ejecución totalmente diferentes puede ser una decisión.

87

87

Stock Market Game

Stock Market Game

Main

Stock Market Game Main En el diagrama, se puede observar como el hilo de ejecución del

En el diagrama, se puede observar como el hilo de ejecución del programa no acaba nunca. El horario de mercado está marcado por los requisitos. Tal como se ha mencionado anteriormente, este proceso se encarga de la coordinación de cada uno de los procesos involucrados en la aplicación batch.

88

88

Stock Market Game

Stock Market Game

Histórico

Stock Market Game Histórico El histórico se encarga de descargar de los servidores de yahoo un

El histórico se encarga de descargar de los servidores de yahoo un archivo por cada una de las empresas del

IBEX35.

Cada vez que se descarga uno, lo carga en memora, realiza un rastreo de los datos en él y los introduce en la base de datos.

Por último llama al un método de la

clase

que

realiza

las

estadísticas

históricas

para

que

cree

las

estadísticas.

 

SI existen más empresas se vuelve a repetir el proceso hasta que no

quedan más empresas.

89

89

Stock Market Game

Stock Market Game

Obtener cotizaciones

Stock Market Game Obtener cotizaciones las cotizaciones se encarga de recibir las cotizaciones de un fichero

las

cotizaciones se encarga de recibir las cotizaciones de un fichero de yahoo.

El

proceso

de

obtener

Cada línea de dicho fichero contiene los datos de una empresa del ibex35, que introduce en la base de datos.

Luego se invoca a una función de la clase estadísticas que realiza la estadística del intradía de dicha empresa.

El último paso, consiste en ejecutar las órdenes de los usuarios con las nuevas cotizaciones, tal y como viene descrito en los casos de uso. De esta manera, las operaciones no son inmediatas y se pueden realizar operaciones a largo plazo con órdenes con precio limitado o condicionado.

90

90

Stock Market Game

Stock Market Game

Programación

91

91

Stock Market Game

Stock Market Game

6. Programación

En este apartado se detallan los lenguajes de programación utilizados, las herramientas y las tecnologías que han sido utilizadas para la realización de la fase de programación.

Para la realización de la aplicación web se ha utilizado las siguientes tecnologías:

JavaEE

AJAX con el framework DWR

Para la aplicación batch se han utilizado las siguientes tecnologías:

JavaSE

Framework JFreeChart (realización de estadísticas).

Las herramientas utilizadas para la programación han sido:

Eclipse 3.2: Entorno de desarrollo muy completo de código libre.

Jakarta Tomcat 5.0.28: Contenedor de servlets, servirá como servidor de la aplicación web.

MySql 5.0.37: Gestor de base de datos de software libre bajo la licencia GNU GPL, las empresas que quieran incorporarlo en productos privativos deben abonar la licencia.

A continuación se va a realizar una descripción de cada una de las tecnologías haciendo énfasis en aquellas que pueden ser más desconocidas por su menor uso como son JFreeChart y AJAX usando DWR. Java en sus 2 versiones está muy extendido y no se necesita describirlo en exceso.

92

92

Stock Market Game

Stock Market Game

6.1 AJAX con DWR

AJAX

AJAX (Asynchronous JavaScript and XML) es una técnica de desarrollo para crear páginas interactivas. Estas aplicaciones se ejecutan en el navegador del usuario realizando peticiones al servidor en segundo plano. De esta manera es posible realizar cambios en una página sin necesidad de recargarla.

Las principales ventajas que se obtienen con esta tecnología son:

Interactividad: El contenido de las paginas cambia dinámicamente, el contenido de la página que no se vea afectado por las peticiones en segundo plano no cambia.

Velocidad: Realizar una petición asíncrona es más ligera que una síncrona, además no se transmite tanta información ya que tan sólo se transmite la información solicitada no toda la página con sus imágenes y contenido repetido.

Usabilidad: Estas páginas creadas con AJAX son siempre mucho más útiles, permiten mostrar más información en menos espacio al ir cambiado esta información poco a poco.

AJAX en sí misma no es una tecnología, al igual que DHTML, no es una única tecnología sino que se compone de varias:

HTML o XHTML: El HTML (HyperText Markup Languaje es el lenguaje de programación de páginas web tradicionales, pero combinadas con el resto de tecnologías se obtiene AJAX. El HTML se utiliza para el diseño que acompaña a la información.

CSS: Cascade Style Sheet, se utiliza para definir el formato de los objetos del HTML, es un estándar del W3C.

93

93

Stock Market Game

Stock Market Game

El Objeto XMLHttpRequest: Es un interfaz para realizar peticiones HTML asíncronas al servidor. La interfaz se presenta encapsulado en una clase. Para utilizarlo la aplicación cliente debe crear una nueva instancia mediante el constructor adecuado. Es posible realizar peticiones síncronas y asíncronas al servidor; en una llamada asíncrona el flujo de proceso no se detiene a esperar la respuesta como se haría en una llamada síncrona, si no que se define una función que se ejecutará cuando se complete la petición: un manejador de evento.

DOM: Document Object Model: es una forma de representar los elementos de un documento estructurado (tal como una página web HTML o un documento XML) como objetos que tienen sus propios métodos y propiedades. El responsable del DOM es el W3C. El DOM proporciona una API para poder modificar los objetos de un HTML dinámicamente.

94

94

Stock Market Game

Stock Market Game

DWR

Una vez definido lo que es AJAX, vamos a ver cómo funciona la implementación que utiliza el FrameWork DWR.

DWR consiste básicamente en 2 cosas:

JavaScript: Funcionando en el lado del cliente para lanzar las peticiones asíncronas.

Un Servlet que procesa las peticiones y envía las respuestas al cliente.

El enfoque interesante del DWR es que el javascript se genera dinámicamente a partir de clases java. Lo interesante de esto es que el cliente puede ejecutar códigos javascript como si fuera código java con la excepción de que las clases que se ejecutan no lo hacen en el cliente sino que se están ejecutando en el servidor.

Por razones de seguridad, no se permite la ejecución de cualquier clase java, tan sólo las que se den permiso en el servidor.

Una vez proporcionadas a DWR las clases java que quieres poder ejecutar, DWR te proporciona una función javascript que hay que incorporar a la página, el código está oculto para el desarrollador, se encuentra dentro de las librerías del DWR.

95

95

Stock Market Game

Stock Market Game

Un ejemplo de funcionamiento:

Stock Market Game Un ejemplo de funcionamiento: Desde una página web, en el código de un

Desde una página web, en el código de un formulario se introduce un evento que al activar el formulario pide información al servidor a través de una petición asíncrona para rellenar una lista de opciones. En este caso, con las opciones 1,2 y 3.

La ventaja fundamental de DWR es que no hay que preocuparse del objeto XMLHttpRequest ya que él tiene su propia implementación y se encarga de controlar sus estados a través del código javascript que te proporciona. Únicamente hay que crear funciones de javascript que actúen con el DOM para situar la información dent ro de la página web.

Es por su simplicidad que este FrameWork está cada día más extendido.

Su instalación es bastante simple, hay que incorporar 1 librería, retocar el web.xml y poner un archivo dwr.xml al lado del web.xml. Sin embargo hay que cerciorarse de que las librerías necesarias para AJAX estén también en el Tomcat.

96

96

Stock Market Game

Stock Market Game

Vamos ahora a ver un ejemplo de la aplicación de cómo funciona DWR:

Actualizar el marquee de cotizaciones con DWR

Al instalar el DWR, hemos creado una clase Java que funcionará como el coordinador de las peticiones que nos sirva el servlet de DWR. Esta clase es Cotizar.java y está dentro del paquete “servicios”.

Al indicarle al servlet que puede acceder a esa clase java nos crea 2 javascripts ocultos. DWR nos proporciona entonces 2 líneas de código para importar esas funciones javascripts e incorporarlas a la página.

<script type='text/javascript' src='/smg/dwr/engine.js'></script> <script type='text/javascript' src='/smg/dwr/util.js'></script>

Estas 2 funciones son para el funcionamiento del DWR

<script type='text/javascript' src='/smg/dwr/interface/Cotizar.js'></script>

Ésta función es la que DWR crea para poder acceder a Cotizar.java

Adicionalmente nos hemos creado un javascript que es el que llamará a la función getMarquee() de Cotizar.java y volverá a ejecutarla a los 60 segundos, así el contenido del marquee se actualizará al minuto.

<script type="text/javascript" src='/smg/js/marquee.js'></script>

function updatemarquee() {

Cotizar.getMarquee(marquee);

setTimeout(updatemarquee,60000);

}

function marquee(data)

{

document.getElementById("cotizaciones").innerHTML = data;

}

Cotizar.getMarquee(marquee); Con esta sentencia se llama a la función getMarquee de Cotizacion.java y le decimos que la vuelta la debe recibir la función “marquee”.

97

97

Stock Market Game

Stock Market Game

Ahora tan solo necesitamos que el evento ejecute la función updatemarquee(), para ello hemos incorporado al tag body un evento onload.

<body bgcolor="#CCCCCC" onload="updatemarquee();=>

Ahora veamos el código de Cotizar.java para ver que hace.

public String getMarquee() throws ServletException, IOException

{

WebContext webContext = WebContextFactory.get(); HttpSession session = webContext.getSession();

HttpServletRequest request = webContext.getHttpServletRequest();

ServicioIndice l = new ServicioIndice(); ArrayList cot = null; cot=l.cotizaciones(); Date dia = new Date(); session.setAttribute("dia",dia); session.setAttribute("cotizaciones",cot); String html = webContext.forwardToString("/jsp/marqueecotizaciones.jsp");

return html;

}

Básicamente, el método llama al servicio índice para que le suministre las últimas cotizaciones, luego las introduce en la sesión. A continuación con la sentencia

webContext.forwardToString("/jsp/marqueecotizaciones.jsp");

Realiza una request a un jsp para que cree el código con las nuevas cotizaciones y se lo devuelva en un String que será el que Cotizacion.java devuelva al Servlet DWR.

Una vez en el servlet, éste devuelve a través de la request asíncrona el código HTML a la función marquee:

function marquee(data)

{

document.getElementById("cotizaciones").innerHTML = data;

}

Ésta utiliza una de las funciones del DOM para encontrar el elemento marcado con el nombre “cotizaciones” dentro de la página que está mostrando el navegador y actualiza su código con en recibido por el servlet DWR y generado por Cotizar.java.

98

98

Stock Market Game

Stock Market Game

6.2 FrameWork JFreeChart

JFreeChart es una librería de java que permite crear estadísticas puede mostrarlas a través de streaming, formatos pdf, jpg,png y muchos más. Es software libre aunque la documentación no lo es y la API no es fácil de utilizar.

JFreeChart permite hacer muchos tipos de gráficas como gráficos de barras, líneas, puntos, tartas y muchos otros tipos.

Algunos ejemplos de lo que se puede hacer con JFreeChart:

de barras, líneas, puntos, tartas y muchos otros tipos. Algunos ejemplos de lo que se puede
de barras, líneas, puntos, tartas y muchos otros tipos. Algunos ejemplos de lo que se puede

99

99

Stock Market Game

Stock Market Game

Para poder utilizarlo únicamente hay que introducir los archivos .jar que hay en las librerías de la aplicación a desarrollar.

Para ver cómo funciona vamos a explicar un ejemplo que se ha realizado con para el sistema.

Histórico de una Empresa

public void graficaHistorica(String tiker, Connection con, int id)

{

try

{

int i=0;

PreparedStatement pstmt = con.prepareStatement("SELECT * FROM COTIZACIONES WHERE idEmpresa=? ORDER BY fecha DESC"); pstmt.setInt(1, id); ResultSet rs = pstmt.executeQuery(); XYSeries series = new XYSeries("precio",false);

rs.afterLast();

while(rs.previous())

{

double precio =rs.getDouble("precio"); series.add(precio, i); i++;

}

i=0;

XYDataset xyDataset = new XYSeriesCollection(series); JFreeChart chart = ChartFactory. createXYLineChart(tiker, "precio", "dia", xyDataset, PlotOrientation. HORIZONTAL , true, false, false);

BufferedImage imgPantalla =

chart.createBufferedImage(300,300);

String root=System.getenv("CATALINA_HOME"); File foto= new File(root+"/webapps/smg/images/"+tiker+"historicomax.jpg"); FileOutputStream os;

os = new FileOutputStream(foto);

JPEGImageEncoder objCodifica = JPEGCodec.createJPEGEncoder (os); objCodifica.encode(imgPantalla);

os.close();

} catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace();

}

}

100

100

Stock Market Game

Stock Market Game

Veamos cómo funciona detalladamente.

Primero se obtienen los datos a representar con una sentencia SQL.

Creamos una serie en el eje XY (XYSeries).

Recorremos el ResultSet y vamos añadiendo a la serie valores.

Añadimos al xyDataSet la serie creada, con esta clase podríamos añadir a un mismo gráfico varias series.

Por último se crea la gráfica con la clase JFreeChart, se le pasan el título, los nombres de los ejes, los datos del DataSet, y otras opciones.

En ete caso queremos crear una imagen con la gráfica y depositarla en la carpeta “$CATALINA_HOME/webapps/smg/images” para que pueda ser accedida desde navegador.

JFreeChart también proporciona un codificador a varios formatos, en este caso usamos JPEG, el JPEGImageEncoder codifica la gráfica y lo enviía a un Stream.

El resultado es el siguiente:

caso usamos JPEG, el JPEGImageEncoder codifica la gráfica y lo enviía a un Stream. El resultado

101

101

Stock Market Game

Stock Market Game

6.3 Java EE y Java SE

La tecnología Java proporciona un entorno de desarrollo multiplataforma y admite varias plataformas, desde servidores hasta teléfonos celulares y tarjetas inteligentes. La tecnología de Java unifica la infraestructura de negocio creando una plataforma ininterrumpida, segura y conectada en red para los usuarios.

JavaEE (Java Enterprise Edition) es el estándar utilizado para la creación de aplicaciones web Java, portables, robustas, escalables y seguras. S on aplicaciones Server Side, donde todo se ejecuta sobre el servidor.

Ventajas de JavaEE:

Múltiples clientes: Es un servidor de aplicaciones y permite a varios usuarios utilizar sus recursos al mismo tiempo.

Múltiples arquitecturas, en nuestro caso hemos elegido MVC.

Código portable: Al ser java sólo se necesita una JavaVM y un servidor compatible con la plataforma en la que se instale.

Orientación a objetos: Al ser Java tiene todas las ventajas de java.

JavaSE (Java Standard Edition)

Java Platform, Standard Edition o Java SE (conocido anteriormente hasta la versión 5.0 como Plataforma Java 2, Standard Edition o J2SE), es una colección de APIs del lenguaje de programación Java útiles para muchos programas de la Plataforma Java.

102

102

Stock Market Game

Stock Market Game

El Sistema Experto de Análisis Técnico

103

103

Stock Market Game

Stock Market Game

7. El Sistema Experto de Análisis Técnico

Al ser una parte importante del proyecto, es necesario hacer un apartado especial para abarcarlo de una forma más amplia y profunda.

Para entender el problema primero se va a estudiar en qué consiste el análisis técnico bursátil, los indicadores y osciladores utilizados, su interpretación y su forma de calcularlos.

Al realizar Stock Market Game se han creado nuevos osciladores propios y que se describen en el punto 7.2

El sistema experto está basado en reglas de producción, una vez obtenido los resultados del análisis técnico, el sistema aplicará unas reglas y como resultado dará recomendaciones de compra, fuerte compra, venta, fuerte venta y mantener el valor.

Por último, se ha creado un simulador, que participa en el juego de Stock Market Game y que utiliza únicamente las recomendaciones del sistema experto para invertir. De esta manera podemos comprobar que el sistema experto minimiza pérdidas y aumenta las ganancias.

Para estudiar el sistema experto es necesari o primero entender cómo funciona la bolsa, sus osciladores e indicadores, luego los osciladores creados explícitamente para Stock Market Game y por último las reglas que mueven el sistema.

104

104

Stock Market Game

Stock Market Game