Mibolsa

De Open movilforum wiki

mibolsa

Tabla de contenidos

[editar] Descripcion

Crea alertas de bolsa en una base de datos MySQL, luego chequea estas alertas y envia los resultados por sms. Por ejemplo podemos definir que nos avise si las acciones de Apple han bajado de 100$. Es necesario registrarse para poder crear alertas. Hay un demonio (demonio.php) chequeando constantemente los valores de la bolsa.

[editar] Fases del proyecto

1. Registro de usuarios. (ok)
2. Registro de alertas en la base de datos. (ok)
3. Modificacion de usuarios. (ok)
4. Demonio que comprueba valores de bolsa de Yahoo! Finance. (ok)
5. Depurar errores y añadir comprobacion antes de Submit en los formularios. (falta)
6. Sacar lista de simbolos de bolsa para hacer un value-list cuando se crea una nueva alerta.  (falta)
7. Desarrollar nuevas funciones y tipos de alerta. (falta)


[editar] Código fuente

[editar] Instrucciones de instalación

1. Crear un directorio en el raiz de nuestro servidor web o en un virtual host y hacer un svn checkout del repositorio.
2. Editar el fichero setting.php y hacer los cambios necesarios.
3. Arrancar el demonio, usaremos el siguiente comando: $nohup php demonio.php &
   Nota: Es necesario tener instalado el paquete php cli, si utilizas debian: apt-get install php5-cli o apt-get install php4-cli
4. Crear la base de datos y el usuario y lanzar el script creartablas.sql

[editar] Función que extrae valores de bolsa

 #obtiene un valor haciendo un fopen de yahoo finances
 function obtiene_valor($simbolo) {
 $handle = fopen("http://es.old.finance.yahoo.com/d/quotes.csv?s=".$simbolo."&f=sl1d1t1c1ohgv&e=.csv", 'r');
 $data = fgetcsv($handle, 1000, ";");
 return $data[1];
 fclose($handle);
 }

[editar] demonio.php

 <?
 include_once("include/mysql.inc.php");
 include_once("include/main.php");
 include_once("include/clasesms.php");
 
 while (true) {
   $result = mysql_query("select * from alertas");
   while ($row = mysql_fetch_assoc($result)) {
     if ($row['indicador'] == "igual a") {
     $valor = obtiene_valor($row['simbolo']);
     if ($valor = $row['cuando']) {
       $mensaje = $row['simbolo']." es igual a ".$valor;
       send_sms($row['usuario'],$mensaje);
       borra_alerta($row['usuario'],$row['nombre']);
       }		
   } elseif ($row['indicador'] == "menor que") {
     $valor = obtiene_valor($row['simbolo']);
     if ($valor < $row['cuando']) {
       $mensaje = $row['simbolo']." es menor que ".$row['cuando']." ahora vale ".$valor;
       send_sms($row['usuario'],$mensaje);
       borra_alerta($row['usuario'],$row['nombre']);
       }		
   } elseif ($row['indicador'] == "mayor que") {
     $valor = obtiene_valor($row['simbolo']);
     if ($valor > $row['cuando']) {
       $mensaje = $row['simbolo']." es mayor que ".$row['cuando']." ahora vale ".$valor;
       send_sms($row['usuario'],$mensaje);
       borra_alerta($row['usuario'],$row['nombre']);
       }		
   }
   }
 }
 ?>


[editar] Enlaces externos

Ejemplo en funcionamiento