📐 Calculadora de Fibonacci
🌊 Proyección Onda 5
💰 Tamaño de Posición
📍 Puntos Pivote
Apariencia
Datos
Información
¿Cómo arrancar la aplicación?
- Haz doble clic en iniciar.bat. Se abre una ventana de PowerShell (el servidor local) y el navegador se lanza en
http://localhost:7432. - Para cerrar la app, cierra la ventana de PowerShell.
cava-importar.json sin que tengas que hacer nada.Tu primera posición
- Ve a la pestaña 📊 Cartera y pulsa "+ Añadir posición".
- Escribe el ticker del activo: aparecerá un desplegable con sugerencias. Si el activo ya está en cartera, aparece destacado en la sección "📦 En cartera" para que puedas añadir un nuevo lote de compra.
- Introduce el número de acciones, el precio de compra en euros y, opcionalmente, la fecha de compra.
- Define un stop loss y un objetivo si quieres recibir alertas automáticas.
- Pulsa "Actualizar precios" para obtener cotizaciones en tiempo real de Yahoo Finance.
Tickers — sufijos por mercado
AAPL,MSFT— EE.UU. (NYSE / NASDAQ), precio en USDBBVA.MC,SAN.MC— España (IBEX 35), precio en EURVOW3.DE— Alemania (DAX), precio en EURMC.PA— Francia (CAC 40), precio en EURENI.MI— Italia (FTSE MIB), precio en EURSHEL.L— Reino Unido (LSE), precio en peniques GBPNESN.SW— Suiza (SIX), precio en CHF
Columnas de la tabla
- Activo — Icono, ticker y nombre. Si la posición tiene más de un lote de compra, aparece el botón ▶ para expandir el desglose por lote.
- Acciones — Total de acciones (suma de todos los lotes).
- Compra (€) — Precio medio ponderado cuando hay más de un lote (se muestra con la etiqueta media); precio único si solo hay un lote.
- Coste total (€) — Acciones totales × precio medio.
- Precio actual — Cotización en tiempo real (se actualiza cada 2 min).
- Cambio día % — Variación respecto al cierre anterior (verde/rojo).
- P&L (€) — Beneficio/pérdida total en euros más porcentaje.
- % cartera — Peso de esta posición sobre el capital total.
- Stop / Objetivo — Niveles configurados con indicador de color.
- Estado — Badge de estado de la alerta.
- Notas — Campo libre de hasta 200 caracteres.
Filtros
- Buscador de texto — Filtra en tiempo real por ticker o nombre de empresa.
- Botones rápidos — Todos | 🟢 En positivo | 🔴 En negativo | 🔔 Con alerta | 🇺🇸 USA | 🇪🇺 Europa.
Tarjetas de estadísticas
- Posiciones — Total y desglose por mercado.
- Capital invertido — Suma en € y equivalente en $.
- P&L total — Beneficio/pérdida acumulado con porcentaje.
- Alertas activas — Desglose de stops y objetivos configurados.
Reordenar
Arrastra cualquier fila desde el manejador ⠿ para cambiar el orden. Se guarda automáticamente.
Tipos de alertas
- 🛑 Stop Loss — Se activa cuando el precio cae por debajo del nivel definido. Sonido descendente (3 tonos).
- 🎯 Objetivo — Se activa cuando el precio supera el nivel objetivo. Sonido ascendente (4 tonos).
¿Qué es un lote?
Cada vez que compras acciones de un mismo activo a un precio o en una fecha distintos, se crea un lote de compra independiente. La posición acumula todos sus lotes y el precio medio que ves en la tabla es el promedio ponderado por acciones.
Cada lote almacena: fecha, número de acciones y precio en euros.
Forma 1 — Autocompletado "📦 En cartera"
Al escribir un ticker en el formulario de nueva posición, si ese ticker ya existe en tu cartera aparece como primera opción del desplegable, destacado en una sección separada con la etiqueta 📦 En cartera. Al seleccionarlo:
- El formulario entra en modo acumulación: aparece un badge morado, los labels cambian y el botón pasa a "➕ Añadir lote".
- Solo tienes que rellenar acciones, precio y fecha del nuevo lote.
Forma 2 — Botón ➕ directo en la tabla
Cada fila de la tabla tiene un botón ➕. Al pulsarlo se abre el formulario ya en modo acumulación para esa posición concreta. El ticker está preseleccionado; solo hay que introducir los datos del nuevo lote.
Forma 3 — Safety net automático
Si introduces un ticker que ya existe y guardas sin seleccionarlo del desplegable, la app detecta el duplicado y acumula el nuevo lote automáticamente, sin preguntar y sin crear una posición duplicada.
Ver los lotes en la tabla
Las posiciones con más de un lote muestran el botón ▶ junto al ticker. Al pulsarlo se expande una sub-fila con una columna por lote mostrando: fecha, acciones, precio de compra, coste total, P&L en euros y P&L en porcentaje (con colores verde/rojo). Pulsa ▼ para colapsar.
Editar lotes desde el modal
Con 1 lote: los campos de acciones y precio son editables directamente. La sección "Lotes de compra" solo muestra el botón "➕ Añadir lote".
Con 2 o más lotes: los campos de acciones y precio pasan a readonly (muestran los valores calculados). Aparece la lista completa de lotes con edición inline: fecha, acciones, precio, botón 💾 para guardar y 🗑 para eliminar ese lote.
Datepicker personalizado
Al pulsar en el campo de fecha de un lote se abre un calendario visual con el tema oscuro de la app (no el selector nativo del navegador). La semana empieza en lunes, el día de hoy aparece resaltado en lila y el día seleccionado en morado. Navega entre meses con las flechas laterales.
Abrir el modal de venta
Pulsa el botón 📤 en cualquier fila de la cartera. El modal se abre con todos los campos pre-rellenos:
- Acciones a vender — Total de acciones que tienes. Reduce el número para hacer una venta parcial.
- Precio de salida (€/acc) — Precio actual de mercado convertido a euros en tiempo real. Para acciones USA se usa EUR/USD; para UK, EUR/GBP con ajuste de peniques; para Suiza, EUR/CHF.
- Fecha de salida — Hoy por defecto, editable.
Botón dinámico
El botón de confirmación cambia mientras escribes:
- "📤 Cerrar posición completa" — si las acciones a vender son todas las que tienes.
- "📤 Vender X acc (quedan Y)" — si vendes solo una parte.
Preview FIFO en tiempo real
Mientras rellenas el modal aparece un bloque de vista previa que se actualiza en tiempo real y muestra:
- Qué lotes se consumen, del más antiguo al más nuevo.
- Cuántas acciones se toman de cada lote.
- P&L estimado por lote:
(precio venta − precio compra del lote) × acciones del lote. - Qué lotes quedan intactos después de la venta.
Lógica FIFO
- Las acciones más antiguas se venden primero (primer lote por fecha de compra).
- Si una venta consume varios lotes, se crean varios registros en el Diario, uno por lote, agrupados bajo un mismo identificador de venta.
- Venta total → la posición desaparece de cartera.
- Venta parcial → la posición queda con los lotes restantes y el precio medio se recalcula automáticamente.
En el Diario
Las ventas FIFO que han consumido varios lotes aparecen en la pestaña 📔 Diario con un botón de expansión. Pulsa para ver el desglose completo por lote: precio de compra de cada lote, acciones vendidas y P&L individual.
¿Para qué sirve?
La Watchlist te permite seguir activos que te interesan pero en los que todavía no tienes posición abierta. Ves el precio en tiempo real sin que afecte a las estadísticas de tu cartera.
Campos al añadir un activo
- Ticker — Símbolo del activo (mismo formato que en cartera).
- Nombre — Opcional.
- Precio de referencia — Opcional. Si lo introduces, la tabla mostrará la diferencia % entre ese precio y el actual (útil para saber cuánto se ha movido desde que empezaste a seguirlo).
- Notas — Campo libre para anotar por qué lo estás siguiendo.
Operaciones cerradas
Cada vez que vendes una posición desde la cartera (botón 📤), la operación se registra automáticamente aquí. También puedes registrar operaciones manualmente.
- Cada operación almacena: ticker, acciones, precio de entrada (€), precio de salida (€), fechas y notas.
- El P&L se calcula como
(precio_salida − precio_entrada) × acciones. - Las ventas FIFO que consumen varios lotes aparecen agrupadas con un botón de expansión para ver el desglose por lote.
Notas
Diario libre con fecha, título y texto. Puedes asociar cada nota a un ticker concreto. Útil para registrar observaciones de mercado, análisis de ondas o decisiones tomadas.
Estadísticas
Calculadas automáticamente a partir de todas las operaciones cerradas:
- Total de operaciones, % ganadoras, P&L total realizado.
- Mejor y peor operación individual.
- Racha ganadora y perdedora máxima.
Evolución del portfolio
Línea temporal del valor total de tu cartera en euros. La app guarda un snapshot automático cada día al actualizar precios. Necesitas al menos 2 días de datos para ver la gráfica.
Distribución por posición
Barras horizontales mostrando qué peso tiene cada posición sobre el capital total invertido. Ordenadas de mayor a menor.
Heatmap del día
Vista de cuadrícula con una celda por activo, coloreada según la variación del día:
- Verde oscuro: más de +2% | Verde claro: 0 a +2%
- Rojo claro: 0 a −2% | Rojo oscuro: más de −2%
Calculadora de Fibonacci
Introduce el mínimo y máximo de un movimiento y obtén todos los niveles automáticamente. Soporta retrocesos (23.6%, 38.2%, 50%, 61.8%, 78.6%) y extensiones (100%, 127.2%, 161.8%, 200%, 261.8%) tanto en tendencia alcista como bajista.
Proyección de Onda 5
Introduce los 5 pivotes (W0–W4) y calcula los cuatro objetivos clásicos para la onda 5 según las relaciones de Fibonacci de Cava: igualdad con onda 1, 0.618×, 1.618×, e igualdad con ondas 1+3.
Calculadora de tamaño de posición
Gestión del riesgo: introduce tu capital, el % máximo que quieres arriesgar por operación, el precio de entrada y el precio de stop. La calculadora determina en tiempo real cuántas acciones comprar, el capital necesario y el peso en el portfolio.
Puntos pivote
Calcula los niveles PP, R1, R2, R3, S1, S2, S3 a partir del máximo, mínimo y cierre del día anterior. Disponible en método Clásico y método Fibonacci.
Stops trailing (dinámicos)
Un stop trailing se desplaza automáticamente hacia arriba cuando el precio sube, fijando siempre un porcentaje de distancia desde el máximo alcanzado.
- Define el % de distancia (ej: 8%).
- La app rastrea el máximo del precio desde que se activó el trailing.
- El stop actual = máximo × (1 − %/100).
- Si el precio cae hasta ese nivel, se dispara la alerta igual que un stop normal.
Alertas personalizadas
Configura condiciones específicas sobre cualquier activo:
- Precio supera X / Precio baja de X — Alerta cuando el precio actual cruza el nivel.
- Sube más de X% en el día / Baja más de X% en el día — Alerta basada en la variación diaria.
Modo claro / oscuro
Cambia entre tema oscuro (por defecto) y tema claro con el toggle de la sección Apariencia o con el botón 🌙/☀️ del header. La preferencia se guarda automáticamente.
Importar desde CSV
- DEGIRO — Exporta tu cartera desde la web de DEGIRO en formato CSV y cárgala directamente. La app detecta las columnas automáticamente.
- CSV genérico — Formato esperado:
ticker,nombre,acciones,precio_eur, una posición por línea. Sin cabecera.
Limpiar y resetear
- Limpiar historial de alertas — Borra solo el log de alertas disparadas, sin tocar las posiciones.
- Resetear app — Borra absolutamente todos los datos. Requiere escribir
CONFIRMARpara evitar borrados accidentales.
Inicio de sesión
Al abrir la aplicación (versión NestJS), verás la pantalla de acceso. Introduce tu email y contraseña para entrar.
.env dentro de cava-server/.Registro de nuevos usuarios
Para crear una cuenta necesitas un código de invitación generado por el administrador:
- El administrador va a ⚙️ Ajustes → sección Administración y pulsa ➕ Generar código.
- Configura el número máximo de usos y una descripción opcional.
- Comparte el código con el nuevo usuario (formato:
CAVA-2026-XK7). - El nuevo usuario pulsa "Regístrate con código" en la pantalla de login e introduce email, contraseña y el código.
Sesión y seguridad
- Duración de sesión: 16 horas. Se renueva automáticamente durante 30 días sin que tengas que volver a hacer login.
- Cerrar sesión: botón 🚪 en el header superior derecho.
- Aislamiento de datos: cada usuario solo ve y puede modificar sus propias posiciones, watchlist, diario y configuraciones.
Panel de administración (solo para administradores)
En ⚙️ Ajustes, los usuarios con rol administrador ven una sección extra con:
- Códigos de invitación: crear nuevos, ver cuántos usos han consumido, activar/desactivar o eliminar.
- Usuarios registrados: lista con email, nombre, rol, fecha de registro y código de invitación usado.
Protección contra ataques
- Límite de intentos de login: máximo 5 intentos por minuto desde la misma dirección IP. Al superarlo, la respuesta es HTTP 429 y hay que esperar un minuto. Este límite es por IP — si un usuario agota sus intentos, los demás usuarios desde otras IPs pueden seguir accediendo normalmente.
- Registro limitado: máximo 3 registros por minuto desde la misma IP.
- Renovación de sesión limitada: máximo 10 renovaciones por minuto.
- Refresh token de un solo uso: cada vez que la sesión se renueva automáticamente, el token anterior queda invalidado. Si alguien robara tu token, solo podría usarlo una vez antes de que quede inútil.
¿Qué es y para qué sirve?
El sistema de alertas por email envía notificaciones a tu correo cuando se disparan stops, objetivos o trailing stops, y puede enviarte resúmenes periódicos del estado de tu cartera. Usa Resend (resend.com) como proveedor de envío.
Configuración inicial (una sola vez)
- Crea una cuenta en resend.com.
- Añade y verifica tu dominio en Dashboard → Domains (añade los registros DNS que te proporcionen).
- Crea una API key en resend.com/api-keys con permiso Sending access.
- En la app, pulsa el icono 🔑 en el header e introduce tu API key.
- Pulsa el icono ✉️ para configurar el email de destino, el remitente y los tipos de alerta.
onboarding@resend.dev como remitente para hacer pruebas.Icono 🔑 — Gestión de la API key
- Muestra si hay una API key configurada (enmascarada por seguridad).
- Permite añadir, cambiar o eliminar la key.
- La API key nunca se guarda en el archivo JSON ni sale del navegador. Solo vive en el almacenamiento local del navegador.
Icono ✉️ — Configuración de emails
Solo visible si hay una API key guardada. Permite configurar:
- Para (to): tu dirección de correo de destino.
- De (from): la dirección remitente con tu dominio verificado.
- Prefijo del asunto: texto que aparece al inicio de todos los asuntos.
Tipos de alerta
Cada tipo se puede activar/desactivar independientemente y configurar con una hora de envío:
- Vacío (inmediato): el email se envía en el momento en que la alerta se dispara.
- HH:MM (programado): la alerta se encola y se envía a esa hora. Útil para no recibir interrupciones durante el día.
Resumen de alertas activas (sección 2)
A la hora que configures, se envía un email con dos secciones:
- Alertas activas ahora: posiciones cuyo stop o target sigue siendo superado en ese momento.
- Disparadas hoy, ya recuperadas: alertas que saltaron durante el día pero el precio ya volvió a zona normal.
Resumen de cartera (sección 3)
A la hora configurada, envía una tabla con todas tus posiciones: acciones, precio de compra, precio actual y P&L en € y %. Muestra el capital total invertido y el P&L total de la cartera.
Si los precios no están disponibles en ese momento, la app espera hasta 5 minutos a que lleguen. Si en 5 minutos no hay datos, envía el resumen con "Sin dato" en las posiciones sin precio.
Emails de prueba
Desde el modal 🔑, al tener la API key configurada, aparecen 6 botones para enviar un email de prueba de cada tipo:
- 🛑 Stop loss, 🎯 Objetivo, 📉 Trailing stop, ⚡ Alerta personalizada
- ⚠️ Resumen de alertas, 📊 Resumen de cartera
Los tests usan tus posiciones reales si las hay, o datos de ejemplo si la cartera está vacía. El asunto lleva [TEST] para distinguirlos.
Plan gratuito de Resend
- 3.000 emails/mes
- 100 emails/día
Más que suficiente para uso personal de alertas de trading.
¿Qué es el Asistente Elliott?
Un árbol de decisión que te guía paso a paso aplicando la metodología de José Luis Cava para identificar en qué punto del ciclo se encuentra el mercado y qué hacer.
Situación A — Contratendencia
- La pauta de 5 ondas de impulso ha terminado.
- El mercado empieza a girar en sentido contrario.
- Se busca entrada contra la tendencia anterior (venta si era alcista, compra si era bajista).
- Se confirma con la Línea 2-4 y la ruptura del canal.
Situación B — En tendencia
- El precio está en corrección de onda 4 dentro de un impulso incompleto.
- Se busca entrada en la dirección de la tendencia hacia la onda 5.
- Se confirma con divergencia en oscilador (RSI, MACD) y nivel Fibonacci (38.2%, 50%, 61.8% del recorrido de onda 3).
Cómo usar el asistente
- Opcionalmente escribe el ticker en el campo superior para etiquetar el análisis.
- Responde las preguntas con honestidad sobre lo que ves en el gráfico.
- El asistente te llevará a una de las situaciones A o B y te dará instrucciones concretas.
- Pulsa "↺ Reiniciar" para comenzar un análisis nuevo.
¿Cómo usar el validador?
- Selecciona la tendencia del impulso (alcista o bajista).
- Introduce los precios de los 6 pivotes: W0 (inicio) y W1 a W5 (finales de cada onda).
- El gráfico se actualiza en tiempo real. Pulsa "✓ Validar estructura" para ver el análisis completo.
Las 7 Reglas de Oro (Cava)
Proyecciones de onda 5
- Onda 5 = Onda 1 — El caso más frecuente.
- Onda 5 = 61.8% × Onda 1 — Onda 5 truncada.
- Onda 5 = 1.618 × Onda 1 — Onda 5 extendida.
- Onda 5 = 61.8% × Onda 3 — Alternativa frecuente.
Guardado automático con el servidor local
Abre la app haciendo doble clic en iniciar.bat. El servidor local arranca en segundo plano y la app lee y escribe cava-importar.json automáticamente en cada cambio. No necesitas hacer nada más.
- Al abrir: carga
cava-importar.jsonautomáticamente. - Al guardar cualquier cambio (posiciones, lotes, watchlist, diario…): escribe el archivo sin preguntar.
- Para cerrar: cierra la ventana de PowerShell que se abrió.
⬇ Exportar JSON
Descarga una copia de todos tus datos (cartera con lotes, watchlist, diario, historial…) como archivo JSON. Útil como copia de seguridad adicional o para trasladar los datos a otro dispositivo.
⬆ Importar JSON
Carga un archivo JSON exportado anteriormente. Reemplaza todos los datos actuales. Asegúrate de exportar antes si tienes cambios sin guardar.
Estructura básica
- Un ciclo completo tiene 8 ondas: 5 de impulso (1, 2, 3, 4, 5) + 3 de corrección (A, B, C).
- Las ondas 1, 3 y 5 son impulsivas (en la dirección de la tendencia principal).
- Las ondas 2 y 4 son correctivas (en contra de la tendencia).
La Línea 2-4 (concepto clave Cava)
- Se traza uniendo los finales de onda 2 y onda 4.
- Cuando el precio rompe la línea 2-4 en la Situación A, confirma que la onda 5 ha terminado y comienza la corrección A-B-C.
- La velocidad de ruptura es crucial: una ruptura rápida es señal fuerte; una lenta puede indicar estructura terminal (cuña).
Fibonacci en Elliott
- Onda 2 retrocede típicamente el 38.2%, 50% o 61.8% de onda 1.
- Onda 3 se extiende generalmente 1.618× onda 1 (nivel áureo).
- Onda 4 retrocede típicamente el 23.6% o 38.2% de onda 3.
- Onda 5 suele igualar a onda 1, o proyectar 0.618× o 1.618× onda 1 desde el final de onda 4.
Divergencias en osciladores
- Situación A — Divergencia bajista: el precio marca nuevo máximo pero el oscilador no lo confirma → agotamiento de la tendencia.
- Situación B — Divergencia alcista: el precio marca nuevo mínimo en onda 4 pero el oscilador sube → fin de la corrección.