StockTracker es una aplicación web moderna para monitorear precios de acciones en tiempo real, visualizar gráficos históricos y gestionar alertas de precio. Permite seguimiento centralizado de múltiples empresas cotizadas con datos de hasta 1 año de histórico.
- Índices de Mercado: Visualización de SPY, QQQ, DIA, VIX en tiempo real
- Mis Empresas: Vista rápida de todas las empresas en tu portfolio con precios actuales y cambios
- Estadísticas: Total de empresas, alertas activas y noticias guardadas
- Búsqueda y adición de empresas por símbolo bursátil
- Almacenamiento automático de 1 año de datos históricos al agregar una empresa
- Gestión de lista personal de empresas monitoradas
- Eliminación de empresas del seguimiento
- Gráfico Interactivo: Visualización de precios de cierre y volumen con Plotly
- Noticias Recientes: Panel lateral con últimas noticias de la empresa
- Tema light/dark automático según preferencias del usuario
- Datos de hasta 365 días de histórico
- Alertas de precio subiendo a un nivel específico
- Alertas de precio bajando a un nivel específico
- Alertas de pico de volumen
- Notificaciones en navegador
- Gestión completa: crear, editar, eliminar alertas
- Noticias en tiempo real de empresas monitoreadas
- Análisis de sentimiento (positivo, negativo, neutral)
- Guardar/marcar noticias importantes
- Filtrado por noticias guardadas
- Soporte completo para modo Light y Dark
- Persistencia de preferencias en localStorage
- Gráficos y UI adaptativos al tema seleccionado
- Flask: Framework web Python
- SQLAlchemy: ORM para base de datos
- SQLite: Base de datos por defecto
- Finnhub API: Datos de mercado en tiempo real (con fallback a yfinance)
- Flask-CORS: Soporte CORS
- Vue 3: Framework JavaScript reactivo
- Tailwind CSS: Estilos utility-first
- Plotly.js: Gráficos interactivos
- Axios: Cliente HTTP
- Font Awesome: Iconografía
- Finnhub: API principal para datos de mercado (requiere API key)
- yfinance: Fallback automático para obtener datos históricos
- Python 3.8+
- pip o conda
- Navegador moderno (Chrome, Firefox, Safari, Edge)
- (Opcional) Clave API de Finnhub para datos premium
git clone https://github.com/tu-usuario/StockTracker.git
cd StockTrackerpython · flask · stock-market · portfolio-tracker · financial-analysis · plotly · vuejs · tailwindcss · candlestick-chart · investing · rest-api · stock-tracker
python -m venv venv
source venv/bin/activate # En Windows: venv\Scripts\activatepip install -r requirements.txt# Opcional: Clave API de Finnhub
export FINNHUB_API_KEY="tu_clave_api_aqui"
# Opcional: Seleccionar proveedor de datos
export DATA_PROVIDER="yfinance" # o "finnhub" (defecto)
# Opcional: Clave secreta para sesiones
export SECRET_KEY="una-clave-secreta-fuerte"python seed_prices.py # Genera datos de pruebapython app.pyLa aplicación estará disponible en http://localhost:5000
StockTrackerKimi/
├── app.py # Aplicación principal Flask
├── models.py # Modelos de base de datos (SQLAlchemy)
├── services.py # Servicios de datos (Finnhub, yfinance)
├── requirements.txt # Dependencias Python
├── seed_prices.py # Script para generar datos de prueba
├── instance/ # Base de datos SQLite (generada automáticamente)
├── static/
│ ├── css/
│ │ └── styles.css # Estilos personalizados
│ └── js/
│ └── app.js # Lógica principal Vue 3
└── templates/
├── index.html # Página principal (dashboard, empresas, alertas, noticias)
└── company.html # Página de detalles de empresa (gráfico + noticias)
GET /api/companies- Listar todas las empresasPOST /api/companies- Agregar nueva empresaDELETE /api/companies/<id>- Eliminar empresaGET /api/companies/search/<keyword>- Buscar empresas
GET /api/companies/<id>/prices- Histórico de precios (últimos 30 días)GET /api/companies/<id>/quote- Cotización en tiempo real
GET /api/alerts- Listar alertasPOST /api/alerts- Crear alertaPUT /api/alerts/<id>- Actualizar alertaDELETE /api/alerts/<id>- Eliminar alerta
GET /api/companies/<id>/news- Noticias de una empresaPUT /api/news/<id>- Actualizar estado (guardada/importante)GET /api/news/saved- Noticias guardadas
GET /api/dashboard- Datos del dashboard (índices, empresas, estadísticas)
{
"id": int,
"symbol": str, # Símbolo bursátil (ej: AAPL)
"name": str, # Nombre de la empresa
"sector": str, # Sector industrial
"industry": str, # Industria específica
"exchange": str, # Bolsa (ej: NASDAQ)
"currency": str # Divisa (ej: USD)
}{
"id": int,
"company_id": int,
"open_price": float,
"high_price": float,
"low_price": float,
"close_price": float,
"volume": int,
"date": date,
"is_realtime": bool
}{
"id": int,
"company_id": int,
"alert_type": str, # "price_up", "price_down", "volume_spike"
"target_price": float, # (opcional)
"target_volume": int, # (opcional)
"is_active": bool,
"notify_browser": bool,
"notify_email": bool
}{
"id": int,
"company_id": int,
"title": str,
"summary": str,
"url": str,
"source": str,
"published_at": datetime,
"sentiment": str, # "positive", "negative", "neutral"
"is_saved": bool
}La aplicación soporta automáticamente temas light y dark:
- Detección automática: Se adapta a las preferencias del sistema
- Persistencia: Guarda la preferencia en localStorage
- Aplicación completa: Todos los componentes incluyen estilos para ambos temas
- Gráficos adaptativos: Plotly ajusta colores según el tema activo
- Variables de entorno para credenciales sensibles
- CORS habilitado para desarrollo (ajustar en producción)
- Validación básica en rutas
- Base de datos encriptada recomendada para producción
- Agregar empresas: Dashboard → "Añadir Empresa" → Buscar símbolo (ej: AAPL)
- Ver detalles: Haz clic en "Detalles" de cualquier empresa para ver gráfico + noticias
- Crear alertas: Alertas → "Nueva Alerta" → Configurar tipo y precio objetivo
- Seguimiento: El dashboard actualiza automáticamente cada 30 segundos
- Verificar conexión a internet
- Comprobar FINNHUB_API_KEY (si está configurada)
- Revisar que yfinance esté disponible como fallback
- Ver logs en la consola del navegador
- Limpiar caché del navegador (F12 → Application → Clear)
- Verificar que Plotly.js se cargue correctamente
- Comprobar que existan datos históricos para la empresa
- Ver consola del navegador para errores de JavaScript
rm instance/tracker.db
python seed_prices.py # Regenerar con datos de pruebaPara desplegar en producción:
- Usar servidor WSGI (Gunicorn, uWSGI)
- Configurar variables de entorno seguras
- Habilitar HTTPS
- Usar base de datos PostgreSQL/MySQL
- Implementar caché (Redis)
- Configurar CI/CD
Ejemplo con Gunicorn:
pip install gunicorn
gunicorn -w 4 -b 0.0.0.0:5000 app:appLas contribuciones son bienvenidas. Por favor:
- Fork el repositorio
- Crear rama feature (
git checkout -b feature/AmazingFeature) - Commit cambios (
git commit -m 'Add AmazingFeature') - Push a rama (
git push origin feature/AmazingFeature) - Abrir Pull Request
Este proyecto está bajo licencia MIT. Ver archivo LICENSE para más detalles.
Joan Serra - Desarrollo inicial
Para reportar bugs o solicitar features, abre un issue en GitHub.
Última actualización: Febrero 20264. Push a la rama (git push origin feature/AmazingFeature)
5. Abre un Pull Request
Si tienes preguntas o problemas:
- Revisa la sección de Solución de Problemas
- Abre un issue en el repositorio
- Consulta la documentación de Alpha Vantage
Desarrollado con ❤️ para la comunidad financiera
Versión: 1.0.0 Última actualización: 2024