# MATRIZ-DEPENDENCIAS-TRADING.yml # Trading Platform Trading Platform # Sistema de Dependencias del Ecosistema de Trading # Fecha: 2025-12-12 # Version: 1.0.0 metadata: proyecto: "Trading Platform - Trading Platform" proposito: "Mapa completo de dependencias entre componentes del sistema de trading" ultima_actualizacion: "2025-12-12" autor: "Architecture-Analyst" # ============================================ # GRAFO DE DEPENDENCIAS # ============================================ # Direccion: componente -> depende_de dependencias: # ----------------------------------------- # MT4 Gateway Service (apps/mt4-gateway/) # ----------------------------------------- mt4_gateway: id: "SVC-MT4GW" tipo: "Python/FastAPI" puerto: 8090 depende_de: internos: - id: "SVC-ML" nombre: "ML Engine" tipo: "Senales de trading" protocolo: "HTTP REST" endpoint: "http://localhost:8000/api/v1/signals" criticidad: "Alta" estado: "Pendiente integrar" - id: "SVC-DATA" nombre: "Data Service" tipo: "Datos de mercado" protocolo: "HTTP REST" endpoint: "http://localhost:8001/api/v1" criticidad: "Media" estado: "Referencia" externos: - id: "EXT-MT4-EA" nombre: "MT4 Terminal + EA Bridge" tipo: "Broker Connection" protocolo: "HTTP REST" puertos: [8081, 8082, 8083] criticidad: "Critica" estado: "Configurado" - id: "EXT-BROKER" nombre: "EBC Financial Group" tipo: "Broker MT4" servidor: "EBCFinancialGroupKY-Demo02" criticidad: "Critica" estado: "Activo" provee_a: - id: "SVC-BACKEND" nombre: "Backend Express" tipo: "Trading API" endpoint: "/api/trading/*" criticidad: "Alta" estado: "Pendiente" - id: "SVC-LLM" nombre: "LLM Agent" tipo: "Trade Execution" protocolo: "HTTP REST" criticidad: "Media" estado: "Planificado" # ----------------------------------------- # ML Engine (apps/ml-engine/) # ----------------------------------------- ml_engine: id: "SVC-ML" tipo: "Python/FastAPI" puerto: 8000 depende_de: internos: - id: "SVC-DATA" nombre: "Data Service" tipo: "Datos historicos" protocolo: "HTTP REST" criticidad: "Alta" estado: "Activo" - id: "DB-PG" nombre: "PostgreSQL" tipo: "Feature Store" schema: "ml" criticidad: "Alta" estado: "Activo" externos: - id: "EXT-POLYGON" nombre: "Polygon.io / Massive.com" tipo: "Market Data API" rate_limit: "5 req/min" criticidad: "Alta" estado: "Configurado" provee_a: - id: "SVC-MT4GW" nombre: "MT4 Gateway" tipo: "Trading Signals" endpoint: "/api/v1/signals" modelos: - AMDDetector - RangePredictor - TPSLClassifier criticidad: "Alta" estado: "Pendiente integrar" - id: "SVC-BACKEND" nombre: "Backend Express" tipo: "Predictions API" endpoint: "/api/v1/predictions" criticidad: "Alta" estado: "Parcial" - id: "SVC-LLM" nombre: "LLM Agent" tipo: "Analysis Data" protocolo: "HTTP REST" criticidad: "Media" estado: "Planificado" # ----------------------------------------- # Data Service (apps/data-service/) # ----------------------------------------- data_service: id: "SVC-DATA" tipo: "Python/FastAPI" puerto: 8001 depende_de: externos: - id: "EXT-POLYGON" nombre: "Polygon.io / Massive.com" tipo: "Market Data API" api_key: "Configurado en .env" rate_limit: "5 req/min" criticidad: "Critica" estado: "Verificado OK" - id: "EXT-MT4-FEED" nombre: "MT4 Price Feed" tipo: "Real-time Prices" protocolo: "EA Bridge" criticidad: "Media" estado: "Opcional" internos: - id: "DB-PG" nombre: "PostgreSQL" tipo: "Storage" schemas: ["public", "market_data"] criticidad: "Alta" estado: "Activo" - id: "CACHE-REDIS" nombre: "Redis" tipo: "Cache" puerto: 6379 criticidad: "Media" estado: "Activo" provee_a: - id: "SVC-ML" nombre: "ML Engine" tipo: "Historical Data" criticidad: "Alta" - id: "SVC-BACKEND" nombre: "Backend Express" tipo: "Market Data API" criticidad: "Alta" # ----------------------------------------- # LLM Agent (apps/llm-agent/) - PLANIFICADO # ----------------------------------------- llm_agent: id: "SVC-LLM" tipo: "Python/FastAPI" puerto: 8002 estado: "Planificado (20%)" depende_de: internos: - id: "SVC-ML" nombre: "ML Engine" tipo: "Analysis & Signals" criticidad: "Alta" estado: "Planificado" - id: "SVC-MT4GW" nombre: "MT4 Gateway" tipo: "Trade Execution" criticidad: "Alta" estado: "Planificado" - id: "SVC-DATA" nombre: "Data Service" tipo: "Market Context" criticidad: "Media" estado: "Planificado" externos: - id: "EXT-CLAUDE" nombre: "Claude API / Anthropic" tipo: "LLM Provider" modelo: "claude-3.5-sonnet" criticidad: "Critica" estado: "Planificado" - id: "EXT-OPENAI" nombre: "OpenAI API" tipo: "LLM Provider (Fallback)" modelo: "gpt-4-turbo" criticidad: "Media" estado: "Planificado" provee_a: - id: "SVC-BACKEND" nombre: "Backend Express" tipo: "Conversational API" criticidad: "Alta" # ----------------------------------------- # Backend Express (apps/backend/) # ----------------------------------------- backend: id: "SVC-BACKEND" tipo: "Node.js/Express" puerto: 3001 depende_de: internos: - id: "DB-PG" nombre: "PostgreSQL" tipo: "Primary Database" puerto: 5432 criticidad: "Critica" estado: "Activo" - id: "CACHE-REDIS" nombre: "Redis" tipo: "Session/Cache" puerto: 6379 criticidad: "Alta" estado: "Activo" - id: "SVC-ML" nombre: "ML Engine" tipo: "Predictions" criticidad: "Alta" estado: "Parcial" - id: "SVC-DATA" nombre: "Data Service" tipo: "Market Data" criticidad: "Alta" estado: "Parcial" - id: "SVC-MT4GW" nombre: "MT4 Gateway" tipo: "Trading Operations" criticidad: "Alta" estado: "Pendiente" - id: "SVC-LLM" nombre: "LLM Agent" tipo: "AI Assistant" criticidad: "Media" estado: "Planificado" externos: - id: "EXT-STRIPE" nombre: "Stripe" tipo: "Payment Processing" criticidad: "Alta" estado: "Parcial" provee_a: - id: "SVC-FRONTEND" nombre: "Frontend React" tipo: "REST API" criticidad: "Critica" # ----------------------------------------- # Frontend React (apps/frontend/) # ----------------------------------------- frontend: id: "SVC-FRONTEND" tipo: "React/Vite" puerto: 5173 depende_de: internos: - id: "SVC-BACKEND" nombre: "Backend Express" tipo: "API Gateway" criticidad: "Critica" estado: "Activo" provee_a: - id: "USER" nombre: "End Users" tipo: "Web Application" # ============================================ # MATRIZ DE IMPACTO # ============================================ # Si X falla, que sistemas se ven afectados matriz_impacto: # Si PostgreSQL falla postgresql_down: afectados: - servicio: "Backend Express" impacto: "Critico - Sin acceso a datos" - servicio: "ML Engine" impacto: "Alto - Sin feature store" - servicio: "Data Service" impacto: "Alto - Sin storage persistente" mitigacion: "Implementar cache en Redis para operaciones criticas" # Si Polygon API falla o rate limit polygon_unavailable: afectados: - servicio: "Data Service" impacto: "Alto - Sin datos nuevos" - servicio: "ML Engine" impacto: "Medio - Usa datos en cache" mitigacion: "Fallback a MT4 price feed via EA Bridge" # Si MT4 Terminal desconectado mt4_disconnected: afectados: - servicio: "MT4 Gateway" impacto: "Critico - Sin ejecucion de trades" - servicio: "LLM Agent" impacto: "Alto - No puede operar" mitigacion: "Alertas inmediatas, cola de ordenes pendientes" # Si ML Engine falla ml_engine_down: afectados: - servicio: "MT4 Gateway" impacto: "Alto - Sin senales automaticas" - servicio: "LLM Agent" impacto: "Medio - Sin analisis ML" - servicio: "Backend" impacto: "Medio - Sin predicciones" mitigacion: "Operacion manual via dashboard, senales manuales" # Si Redis falla redis_down: afectados: - servicio: "Backend Express" impacto: "Medio - Sesiones afectadas" - servicio: "Data Service" impacto: "Bajo - Sin cache rapido" mitigacion: "Fallback a DB para sesiones" # ============================================ # FLUJOS DE DATOS CRITICOS # ============================================ flujos_criticos: # Flujo 1: Senal ML -> Trade Execution senal_a_trade: descripcion: "Flujo desde deteccion ML hasta ejecucion en MT4" pasos: - origen: "Data Service" destino: "ML Engine" datos: "OHLCV historico + Spread" protocolo: "HTTP REST" - origen: "ML Engine" destino: "MT4 Gateway" datos: "Signal {symbol, direction, confidence, tpsl}" protocolo: "HTTP REST / WebSocket (futuro)" - origen: "MT4 Gateway" destino: "MT4 Terminal" datos: "TradeRequest {symbol, action, lots, sl, tp}" protocolo: "HTTP (EA Bridge)" - origen: "MT4 Terminal" destino: "Broker (EBC)" datos: "Order Execution" protocolo: "MT4 Protocol" latencia_objetivo: "<2 segundos end-to-end" criticidad: "Critica" # Flujo 2: LLM Analysis -> Decision llm_analysis: descripcion: "Flujo de analisis LLM para decision de trading" pasos: - origen: "User/Scheduler" destino: "LLM Agent" datos: "Analysis Request" - origen: "LLM Agent" destino: "ML Engine" datos: "Get Current Predictions" - origen: "LLM Agent" destino: "Data Service" datos: "Get Market Context" - origen: "LLM Agent" destino: "Claude API" datos: "Prompt + Context" - origen: "LLM Agent" destino: "MT4 Gateway" datos: "Trade Decision (if approved)" criticidad: "Alta" # Flujo 3: Dashboard Update dashboard_update: descripcion: "Flujo de actualizacion del dashboard admin" pasos: - origen: "Frontend" destino: "Backend" datos: "GET /api/trading/summary" - origen: "Backend" destino: "MT4 Gateway" datos: "GET /api/agents/summary" - origen: "Backend" destino: "ML Engine" datos: "GET /api/v1/predictions/latest" - origen: "Backend" destino: "Frontend" datos: "Consolidated Dashboard Data" frecuencia: "Cada 5 segundos" criticidad: "Media" # ============================================ # CONFIGURACION DE PUERTOS (CONSOLIDADO) # ============================================ puertos: servicios_core: - puerto: 3001 servicio: "Backend Express" tipo: "Node.js" - puerto: 5173 servicio: "Frontend React" tipo: "Vite Dev Server" servicios_python: - puerto: 8000 servicio: "ML Engine" tipo: "FastAPI" - puerto: 8001 servicio: "Data Service" tipo: "FastAPI" - puerto: 8002 servicio: "LLM Agent" tipo: "FastAPI" - puerto: 8090 servicio: "MT4 Gateway" tipo: "FastAPI" agentes_mt4: - puerto: 8081 servicio: "MT4 Agent 1 (Atlas)" tipo: "EA Bridge" - puerto: 8082 servicio: "MT4 Agent 2 (Orion)" tipo: "EA Bridge" - puerto: 8083 servicio: "MT4 Agent 3 (Nova)" tipo: "EA Bridge" infraestructura: - puerto: 5432 servicio: "PostgreSQL" tipo: "Database" - puerto: 6379 servicio: "Redis" tipo: "Cache" # ============================================ # REFERENCIAS # ============================================ referencias: - documento: "MASTER_INVENTORY.yml" path: "orchestration/inventarios/MASTER_INVENTORY.yml" tipo: "Inventario principal" - documento: "MT4_GATEWAY_INVENTORY.yml" path: "docs/90-transversal/inventarios/MT4_GATEWAY_INVENTORY.yml" tipo: "Inventario MT4 Gateway" - documento: "INT-MT4-001-gateway-service.md" path: "docs/90-transversal/integraciones/INT-MT4-001-gateway-service.md" tipo: "Documento de integracion" - documento: "ARQUITECTURA-MULTI-AGENTE-MT4.md" path: "docs/01-arquitectura/ARQUITECTURA-MULTI-AGENTE-MT4.md" tipo: "Arquitectura" - documento: "ADR-002-MVP-OPERATIVO-TRADING.md" path: "docs/97-adr/ADR-002-MVP-OPERATIVO-TRADING.md" tipo: "Decision de arquitectura"