- Add 5 frontend specification documents (ET-*-frontend.md): - ET-AUTH-006: Authentication module frontend spec - ET-ML-008: ML Signals module frontend spec - ET-LLM-007: LLM Agent module frontend spec - ET-PFM-008: Portfolio Manager frontend spec (design) - ET-MKT-003: Marketplace frontend spec (design) - Add 8 new user stories: - US-AUTH-013: Global logout - US-AUTH-014: Device management - US-ML-008: Ensemble signal view - US-ML-009: ICT analysis view - US-ML-010: Multi-symbol scan - US-LLM-011: Execute trade from chat - US-PFM-013: Rebalance alerts - US-PFM-014: PDF report generation - Update task index with completed analysis Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
21 KiB
| id | title | type | status | priority | epic | project | story_points | created_date | updated_date |
|---|---|---|---|---|---|---|---|---|---|
| US-ML-009 | Ver Análisis ICT | User Story | Pending | Alta | OQI-006 | trading-platform | 5 | 2026-01-25 | 2026-01-25 |
US-ML-009: Ver Análisis ICT
Metadata
| Campo | Valor |
|---|---|
| ID | US-ML-009 |
| Épica | OQI-006 - Señales ML y Predicciones |
| Módulo | ml-signals |
| Prioridad | P0 (Alta) |
| Story Points | 5 |
| Sprint | Sprint 8 |
| Estado | Pendiente |
| Asignado a | Por asignar |
Historia de Usuario
Como trader/inversor, quiero ver el análisis ICT (Inner Circle Trader) que incluye zonas de liquidez, fair value gaps, y order blocks, para identificar puntos de entrada/salida de alto potencial basados en la metodología ICT.
Descripción Detallada
El usuario debe poder visualizar en el chart de precios un análisis completo de la metodología ICT que incluya:
- Zonas de Liquidez (Liquidity Zones): Áreas donde se acumulan órdenes de compra/venta
- Fair Value Gaps (FVGs): Brechas de precio donde no hay transacciones (gaps de aire)
- Order Blocks (OB): Bloques de órdenes que actúan como soporte/resistencia
- Puntos de Interés (POI): Zonas clave de reversión y manipulación de precios
Cada elemento debe ser interactivo mostrando detalles como tamaño de la zona, potencia, fechas de formación, y probabilidad de inversión de precio.
Mockups/Wireframes
┌──────────────────────────────────────────────────────────────────┐
│ ICT ANALYSIS - BTCUSDT 4h │
├──────────────────────────────────────────────────────────────────┤
│ │
│ Controls: │
│ [Liquidity Zones ☑] [FVGs ☑] [Order Blocks ☑] [POI ☑] │
│ [Bias: Bullish ▼] [Threshold: Medium ▼] [Legend] │
│ │
│ ══════════════════════════════════════════════════════════════ │
│ │
│ ┌────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ BTCUSDT / 4H Chart │ │
│ │ │ │
│ │ ╱╲ │ │
│ │ ╱┌──┐╲ 🔵 Order Block │ │
│ │ ╱╲ ╱│ 🔵 │╲ (Bullish, 8.2/10) │ │
│ │ ╱┌──┐╲ ╱ │ │ ╲ Entry: $89,200 │ │
│ │ ╱ │ 🟢│ ╲ ╱ │ │ ╲ Strength: 95% │ │
│ │ ╱┌───┼────┼───╲╱ │ │ ╲ │ │
│ │ ╱ │ 🟡 │ 🔴 │ ║ │ │ ╲ ☑ Liquidity Zone │ │
│ │╱───┼────┼────┼──║──────┼────┼──────╲ Above: $90,100 │ │
│ │─────┼────┼────┼──║──────┼────┼─────── Strength: High │ │
│ │ │ │ │ ║ │ │ Probability: 75% │ │
│ │ │ │ │ ║ │ 🔘 │ │ │
│ │ │ │ │ ║ │ 🟣 │ 🟡 Fair Value Gap │
│ │ └────┴────┴──║──────┴────┴── $89,850 - $89,650 │
│ │ ║ Gap Size: 0.2% │
│ │ ║ Type: Bullish Breaker │
│ │ │
│ │ [Zoom] [Reset] [Compare] [Backtest This] [Alerts] │
│ │ │
│ └────────────────────────────────────────────────────────────┘ │
│ │
│ ICT ELEMENTS FOUND (16) │
│ ═════════════════════════════════════════════════════════════ │
│ │
│ ┌─ LIQUIDITY ZONES (4) ─────────────────────────────────────┐ │
│ │ ☑ Above Current Price: │ │
│ │ • $90,100 - $90,500 (Strength: 94%) - Last 3H ago │ │
│ │ • $91,200 - $91,800 (Strength: 87%) - Last 8H ago │ │
│ │ ☑ Below Current Price: │ │
│ │ • $88,500 - $88,200 (Strength: 91%) - Last 2H ago │ │
│ └────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─ FAIR VALUE GAPS (3) ──────────────────────────────────────┐ │
│ │ • $89,850 - $89,650 (Bullish Breaker, Gap Size: 0.2%) │ │
│ │ ├─ Formed: 45 min ago │ │
│ │ ├─ Status: Unmitigated (Not touched by price) │ │
│ │ └─ Probability: High that will be filled in 4-8H │ │
│ │ • $87,900 - $87,500 (Bearish Breaker, Gap Size: 0.4%) │ │
│ │ ├─ Formed: 6H ago │ │
│ │ ├─ Status: Partially Mitigated │ │
│ │ └─ Probability: Medium that will be retested │ │
│ │ • $90,200 - $89,950 (Bullish Breaker, Gap Size: 0.25%) │ │
│ │ ├─ Formed: 2H ago │ │
│ │ ├─ Status: Unmitigated │ │
│ │ └─ Probability: Very High (needs mitigation) │ │
│ └────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─ ORDER BLOCKS (5) ────────────────────────────────────────┐ │
│ │ ☑ Bullish Order Block: │ │
│ │ • Entry: $89,200 - $89,350 (Strength: 95%, Score: 8.2) │ │
│ │ • Formed during strong uptrend 3H ago │ │
│ │ • Touch points: 2 (May retry) │ │
│ │ • Next resistance: $90,100 (Liquidity Zone) │ │
│ │ ☑ Bearish Order Block: │ │
│ │ • Entry: $90,500 - $90,650 (Strength: 88%, Score: 7.9) │ │
│ │ • Formed during downtrend 6H ago │ │
│ │ • Touch points: 1 (Fresh block) │ │
│ │ • Next support: $89,500 (FVG area) │ │
│ └────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─ POINTS OF INTEREST (4) ──────────────────────────────────┐ │
│ │ • $90,100 (Swing High + Liquidity Zone) │ │
│ │ ├─ Type: Supply/Resistance │ │
│ │ ├─ Confluence: 3 levels │ │
│ │ └─ Probability of reversal: 82% │ │
│ │ • $88,500 (Swing Low + Liquidity Zone) │ │
│ │ ├─ Type: Demand/Support │ │
│ │ ├─ Confluence: 2 levels │ │
│ │ └─ Probability of bounce: 76% │ │
│ └────────────────────────────────────────────────────────────┘ │
│ │
└──────────────────────────────────────────────────────────────────┘
Criterios de Aceptación
Escenario 1: Mostrar análisis ICT completo
DADO que el usuario está en la pantalla de chart
CUANDO abre la sección "ICT Analysis"
ENTONCES se visualizan en el chart:
- Zonas de liquidez (coloreadas y etiquetadas)
- Fair Value Gaps (dibujados como rectángulos vacíos)
- Order Blocks (rectángulos rellenos con poder)
- Puntos de Interés (círculos/estrelas destacadas)
Y cada elemento tiene color diferenciado (bullish/bearish)
Y se muestra un panel lateral con listado de todos los elementos
Escenario 2: Filtrar elementos ICT
DADO que el usuario está viendo el análisis ICT
CUANDO desactiva un tipo de elemento (ej: FVGs)
ENTONCES desaparecen del chart
Y se actualiza el contador en el panel lateral
Y el resto de elementos se mantienen visibles
Escenario 3: Ver detalles de zona de liquidez
DADO que el usuario está en ICT Analysis
CUANDO hace hover/click en una zona de liquidez
ENTONCES aparece un tooltip/modal con:
- Rango de precios (high-low)
- Fortaleza/poder de la zona (%)
- Fecha de formación
- Número de toques/veces que fue tocada
- Probabilidad de que el precio vuelva a esa zona
- Botón para crear orden en esa zona
Escenario 4: Ver detalles de Fair Value Gap
DADO que el usuario está en ICT Analysis
CUANDO hace click en un FVG
ENTONCES aparece un modal con:
- Rango del gap (precio alto - precio bajo)
- Tipo de gap (Bullish Breaker / Bearish Breaker / Continuation)
- Tamaño del gap (en pips/%)
- Estado (Unmitigated / Partially mitigated / Fully mitigated)
- Fecha de formación
- Probabilidad de que se cierre el gap (%)
- Momento estimado de cierre
- [Ver en chart] [Crear alerta] [Crear orden]
Escenario 5: Ver detalles de Order Block
DADO que el usuario está en ICT Analysis
CUANDO hace click en un Order Block
ENTONCES aparece un modal con:
- Rango de entrada del bloque
- Tipo (Bullish / Bearish)
- Score de fortaleza (1-10)
- Potencia del bloque (%)
- Número de veces que fue tocado
- Formación: qué vela/candle lo creó
- Próxima resistencia/soporte
- [Crear orden en este bloque] [Crear alerta]
Escenario 6: Cambiar timeframe
DADO que el usuario está en ICT Analysis
CUANDO cambia el timeframe (ej: 1H → 4H → 1D)
ENTONCES se recalcula y redibuja todo el análisis ICT
Y los elementos cambian según el timeframe elegido
Y el API actualiza con los datos del nuevo timeframe
Escenario 7: Crear alerta en zona ICT
DADO que el usuario está viendo un elemento ICT
CUANDO hace click en "Crear alerta" desde el modal
ENTONCES se abre un formulario para crear una alerta:
- Precio de trigger (pre-rellenado)
- Tipo de alerta (email/push/SMS)
- Mensaje personalizado
CUANDO confirma
ENTONCES se crea la alerta
Y se muestra confirmación "Alerta creada para $90,100"
Escenario 8: Comparar análisis entre timeframes
DADO que el usuario está en ICT Analysis
CUANDO hace click en "Compare"
ENTONCES se abre una vista con dos charts lado a lado:
- Izquierda: timeframe actual (ej: 4H)
- Derecha: timeframe diferente (ej: 1D)
Y ambos muestran su análisis ICT correspondiente
Y se resaltan confluyencias entre timeframes
Escenario 9: Backtesting de zona ICT
DADO que el usuario está viendo un Order Block o FVG
CUANDO hace click en "Backtest This"
ENTONCES se abre un análisis histórico mostrando:
- Cuántas veces el precio tocó esta zona en el pasado
- Cuántas veces resultó en reversión
- Ganancia promedio si se hubiera operado en esta zona
- Tasa de éxito (%)
- Gráfico histórico de touch points
Criterios Adicionales
- El análisis debe cargar en menos de 1.5 segundos
- Debe soportar todos los timeframes (1m, 5m, 15m, 1h, 4h, 1d, 1w)
- Debe recalcularse automáticamente cada nueva vela
- Los colores deben ser customizables por tema (light/dark)
- Bullish elements en verde/azul, Bearish en rojo/naranja
- Responsive en tablets y mobile (scrollable chart)
- Performance: máximo 50 elementos ICT dibujados simultáneamente
- Debe funcionar sin valores reales de market data si es necesario (mock data)
Tareas Técnicas
Backend (FastAPI - ml-engine):
- BE-ML-016: Crear endpoint GET /api/ml/ict/:symbol
- BE-ML-017: Implementar análisis de Liquidity Zones
- BE-ML-018: Implementar detección de Fair Value Gaps
- BE-ML-019: Implementar detección de Order Blocks
- BE-ML-020: Implementar cálculo de Points of Interest
- BE-ML-021: Implementar score/strength para cada elemento
- BE-ML-022: Endpoint GET /api/ml/ict/:symbol/compare (compare timeframes)
- BE-ML-023: Implementar caching de análisis ICT
Python ML Service:
- ML-ICT-001: Desarrollar módulo ICT detector
- ML-ICT-002: Algoritmo de identificación de Liquidity Zones
- ML-ICT-003: Algoritmo de detección de FVGs
- ML-ICT-004: Algoritmo de detección de Order Blocks
- ML-ICT-005: Algoritmo de cálculo de POI (Points of Interest)
- ML-ICT-006: Validación y backtesting de elementos ICT
- ML-ICT-007: Tests unitarios de detección
Frontend (React):
- FE-ML-035: Crear componente
ICTAnalysis.tsx - FE-ML-036: Crear componente
ICTChart.tsx(integración lightweight-charts) - FE-ML-037: Crear componente
ICTControls.tsx(filtros y toggles) - FE-ML-038: Crear componente
ICTSidebar.tsx(listado de elementos) - FE-ML-039: Crear componente
LiquidityZoneModal.tsx - FE-ML-040: Crear componente
FVGModal.tsx - FE-ML-041: Crear componente
OrderBlockModal.tsx - FE-ML-042: Crear componente
POIModal.tsx - FE-ML-043: Crear componente
ComparisonChart.tsx - FE-ML-044: Crear componente
BacktestModal.tsx - FE-ML-045: Implementar dibujado en lightweight-charts
- FE-ML-046: Implementar state management (Zustand) para ICT data
- FE-ML-047: Implementar tooltips interactivos
- FE-ML-048: Implementar colores customizables por tema
Tests:
- TEST-ML-016: Test detección de Liquidity Zones
- TEST-ML-017: Test detección de FVGs
- TEST-ML-018: Test detección de Order Blocks
- TEST-ML-019: Test E2E de análisis completo
- TEST-ML-020: Test de performance (<1.5s load)
Documentación:
- DOC-ICT-001: Guía de análisis ICT en la plataforma
- DOC-ICT-002: Explicación de cada elemento ICT
- DOC-ICT-003: Cómo interpretar las métricas
Dependencias
Depende de:
- RF-ML-001: Integración de datos de mercado (OHLCV)
- US-ML-001: Ver chart de trading
- US-ML-002: Ver señal en chart
- OQI-003: Trading Charts (infraestructura base)
Bloquea:
- US-ML-010: Alertas ICT
- US-ML-011: Backtesting de estrategia ICT
Notas Técnicas
Endpoints involucrados:
| Método | Endpoint | Descripción |
|---|---|---|
| GET | /api/ml/ict/:symbol | Obtener análisis ICT para símbolo |
| GET | /api/ml/ict/:symbol/timeframe/:tf | Análisis ICT por timeframe |
| GET | /api/ml/ict/:symbol/compare | Comparar análisis entre TFs |
| POST | /api/ml/ict/:symbol/backtest | Backtesting de zona ICT |
| GET | /api/alerts/:symbol/ict | Obtener alertas ICT activas |
Query Parameters - ICT Analysis:
GET /api/ml/ict/BTCUSDT?
timeframe=4h&
include=liquidity_zones,fvgs,order_blocks,poi&
threshold=medium&
bias=bullish
Response esperado:
interface ICTAnalysisResponse {
symbol: string;
timeframe: string;
timestamp: string;
analysis: {
liquidity_zones: LiquidityZone[];
fair_value_gaps: FairValueGap[];
order_blocks: OrderBlock[];
points_of_interest: PointOfInterest[];
};
summary: {
total_elements: number;
bullish_elements: number;
bearish_elements: number;
strongest_level: number;
nearest_liquidity_up: number;
nearest_liquidity_down: number;
};
}
interface LiquidityZone {
id: string;
type: 'BUY' | 'SELL';
price_high: number;
price_low: number;
strength: number; // 0-100
formed_at: string;
touch_count: number;
probability_return: number; // 0-100
}
interface FairValueGap {
id: string;
type: 'BULLISH_BREAKER' | 'BEARISH_BREAKER' | 'CONTINUATION';
gap_high: number;
gap_low: number;
gap_size_pips: number;
gap_size_percent: number;
status: 'UNMITIGATED' | 'PARTIALLY_MITIGATED' | 'FULLY_MITIGATED';
formed_at: string;
probability_fill: number; // 0-100
estimated_fill_time: string; // ISO duration
}
interface OrderBlock {
id: string;
type: 'BULLISH' | 'BEARISH';
entry_high: number;
entry_low: number;
strength_score: number; // 1-10
power_percent: number; // 0-100
touch_count: number;
formed_at: string;
candle_formation: string;
next_target: number;
}
interface PointOfInterest {
id: string;
price: number;
type: 'SWING_HIGH' | 'SWING_LOW' | 'CONFLUENCE';
confluence_count: number;
reversal_probability: number; // 0-100
bounce_probability: number; // 0-100
elements: string[]; // IDs de elementos que confluyen
}
Componentes UI principales:
ICTAnalysis: Container del análisisICTChart: Canvas del chart con dibujado de elementosICTControls: Controles de filtrado y displayICTSidebar: Listado de elementos detectadosICTModals: Familia de modales (Liquidity, FVG, OB, POI)ComparisonChart: Vista comparativa de timeframesBacktestView: Análisis histórico de una zona
State Management (Zustand):
interface ICTStore {
ictData: ICTAnalysisResponse | null;
selectedElement: ICTElement | null;
timeframe: string;
visibleElements: {
liquidity_zones: boolean;
fvgs: boolean;
order_blocks: boolean;
poi: boolean;
};
bias: 'BULLISH' | 'BEARISH' | 'NEUTRAL';
threshold: 'LOW' | 'MEDIUM' | 'HIGH';
fetchICTAnalysis: (symbol: string, tf: string) => Promise<void>;
selectElement: (element: ICTElement) => void;
toggleElementType: (type: keyof visibleElements) => void;
setBias: (bias: string) => void;
setThreshold: (threshold: string) => void;
}
Integración con Chart:
- Usar series personalizada de lightweight-charts
- Plugins para dibujado de zonas y elementos
- Overlay layers para diferentes tipos de elementos
Definition of Ready (DoR)
- Historia claramente escrita (quién, qué, por qué)
- Criterios de aceptación detallados (9 escenarios)
- Story points estimados (5)
- Dependencias identificadas
- Sin bloqueadores
- Diseño/mockup disponible
- APIs especificadas
Definition of Done (DoD)
- Código Python implementado (ICT detectors)
- Código TypeScript implementado (endpoints + frontend)
- Tests unitarios escritos y pasando (Python y TS)
- Tests E2E pasando
- Code review aprobado
- Documentación actualizada
- Backtesting validado (accuracy > 80%)
- Rendimiento verificado (<1.5s load)
- Responsive en mobile/tablet
- QA aprobado en staging
- Desplegado en producción
Historial de Cambios
| Fecha | Cambio | Autor |
|---|---|---|
| 2026-01-25 | Creación | Claude Code |
Creada por: Claude Code Fecha: 2026-01-25 Última actualización: 2026-01-25