--- id: "INT-MT4-001-gateway-service" title: "MT4 Gateway Service - Integración Multi-Agente" type: "Documentation" project: "trading-platform" version: "1.0.0" updated_date: "2026-01-04" --- # INT-MT4-001: MT4 Gateway Service - Integración Multi-Agente ## Metadata | Campo | Valor | |-------|-------| | **ID** | INT-MT4-001 | | **Módulo** | MT4 Gateway Service | | **Tipo** | Especificación de Integración | | **Versión** | 1.0.0 | | **Estado** | En Desarrollo | | **Fecha creación** | 2025-12-12 | | **Última actualización** | 2025-12-12 | | **Autor** | Architecture-Analyst | | **Épica relacionada** | OQI-009 | --- ## 1. Resumen Ejecutivo El **MT4 Gateway Service** es un componente crítico que permite: - Gestión de **múltiples cuentas MT4** de forma independiente - Cada cuenta con su propio **agente de trading** (Atlas, Orion, Nova) - **API unificada** para interactuar con todas las cuentas - **Risk management** por agente - Integración con el **ML Engine** para ejecución de señales --- ## 2. Arquitectura de la Integración ``` ┌─────────────────────────────────────────────────────────────────────────────┐ │ ORBIQUANT TRADING PLATFORM │ ├─────────────────────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ Admin │ │ Backend │ │ ML Engine │ │ LLM Agent │ │ │ │ Dashboard │ │ Express │ │ FastAPI │ │ (Future) │ │ │ │ :5173 │ │ :3001 │ │ :8000 │ │ :8002 │ │ │ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │ │ │ │ │ │ │ │ └─────────────────┴─────────────────┴─────────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │ │ MT4 GATEWAY SERVICE (:8090) │ │ │ │ │ │ │ │ /api/agents - Lista agentes │ │ │ │ /api/agents/summary - Resumen consolidado │ │ │ │ /api/agents/{id}/trade - Ejecutar trade │ │ │ │ /api/agents/{id}/account - Info de cuenta │ │ │ │ /api/emergency/stop-all - Parada de emergencia │ │ │ │ │ │ │ │ ┌─────────────────────────────────────────────────────────────┐ │ │ │ │ │ Agent Registry │ │ │ │ │ │ │ │ │ │ │ │ agent_1 (Atlas) → MT4 Bridge @ :8081 → Account 22437 │ │ │ │ │ │ agent_2 (Orion) → MT4 Bridge @ :8082 → Account XXXXX │ │ │ │ │ │ agent_3 (Nova) → MT4 Bridge @ :8083 → Account YYYYY │ │ │ │ │ └─────────────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────┘ │ │ │ │ │ ┌─────────────────────────┼─────────────────────────┐ │ │ │ │ │ │ │ ▼ ▼ ▼ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ MT4 │ │ MT4 │ │ MT4 │ │ │ │ Terminal │ │ Terminal │ │ Terminal │ │ │ │ Agent 1 │ │ Agent 2 │ │ Agent 3 │ │ │ │ │ │ │ │ │ │ │ │ EA Bridge │ │ EA Bridge │ │ EA Bridge │ │ │ │ :8081 │ │ :8082 │ │ :8083 │ │ │ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │ │ │ │ │ │ │ └─────────────────────────┴─────────────────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │ │ EBC Financial Group (Broker) │ │ │ │ Server: EBCFinancialGroupKY-Demo02 │ │ │ └─────────────────────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────────┘ ``` --- ## 3. Componentes del Sistema ### 3.1 MT4 Gateway Service | Atributo | Valor | |----------|-------| | **Ubicación** | `apps/mt4-gateway/` | | **Framework** | Python/FastAPI | | **Puerto** | 8090 | | **Inventario** | `docs/90-transversal/inventarios/MT4_GATEWAY_INVENTORY.yml` | #### Archivos Principales | Archivo | Propósito | Líneas | |---------|-----------|--------| | `src/main.py` | Aplicación FastAPI principal | ~400 | | `src/providers/mt4_bridge_client.py` | Cliente para EA Bridge | ~350 | | `config/agents.yml` | Configuración de agentes | ~150 | | `requirements.txt` | Dependencias Python | ~25 | ### 3.2 Agentes de Trading | ID | Nombre | Puerto | Strategy | Pares | Risk | Estado | |----|--------|--------|----------|-------|------|--------| | agent_1 | Atlas | 8081 | AMD | XAUUSD | 1% | Enabled | | agent_2 | Orion | 8082 | ICT | EUR/GBP | 1.5% | Disabled | | agent_3 | Nova | 8083 | Mixed | ALL | 2% | Disabled | ### 3.3 EA Bridge (por terminal MT4) Cada terminal MT4 requiere un Expert Advisor (EA) que expone una API REST. | Endpoint | Método | Descripción | |----------|--------|-------------| | `/account` | GET | Información de cuenta | | `/tick/{symbol}` | GET | Precio actual | | `/positions` | GET | Posiciones abiertas | | `/trade` | POST | Ejecutar operación | | `/history` | GET | Historial de trades | --- ## 4. Flujo de Datos ### 4.1 Flujo de Señal → Ejecución ``` ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ ML Engine │────▶│ Gateway │────▶│Risk Manager │────▶│ MT4 Client │ │ │ │ Service │ │ │ │ │ │ Signal: │ │ │ │ Validates: │ │ Executes: │ │ • XAUUSD │ │ Routes to: │ │ • Max risk │ │ • OpenOrder │ │ • LONG │ │ • agent_1 │ │ • Position │ │ • SL/TP │ │ • Conf: 78% │ │ • agent_3 │ │ • Daily DD │ │ • Logging │ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │ ▼ ┌─────────────┐ │ MT4 │ │ Terminal │ │ + EA │ └─────────────┘ ``` ### 4.2 Flujo de Datos de Cuenta ``` Frontend (Dashboard) │ ▼ GET /api/agents/summary │ ▼ MT4 Gateway Service │ ├───▶ Agent 1: GET /account → MT4 Terminal 1 ├───▶ Agent 2: GET /account → MT4 Terminal 2 └───▶ Agent 3: GET /account → MT4 Terminal 3 │ ▼ Consolidate Response │ ▼ { total_balance: 1700, total_equity: 1720, total_profit: 45.30, agents: [...] } ``` --- ## 5. Matriz de Trazabilidad ### 5.1 Dependencias de Componentes | Componente Origen | Componente Destino | Tipo | Protocolo | Estado | |-------------------|-------------------|------|-----------|--------| | Admin Dashboard | MT4 Gateway | Consumer | HTTP REST | Pendiente | | Backend Express | MT4 Gateway | Consumer | HTTP REST | Pendiente | | ML Engine | MT4 Gateway | Provider | HTTP REST | Pendiente | | MT4 Gateway | MT4 Terminal 1 | Consumer | HTTP REST | Ready | | MT4 Gateway | MT4 Terminal 2 | Consumer | HTTP REST | Ready | | MT4 Gateway | MT4 Terminal 3 | Consumer | HTTP REST | Ready | | MT4 Gateway | PostgreSQL | Consumer | TCP | Pendiente | ### 5.2 Relación con Épicas | Épica | Relación | Descripción | |-------|----------|-------------| | OQI-003 | Consumer | Trading Charts consume datos de posiciones | | OQI-004 | Integration | Investment Accounts integra con agentes | | OQI-006 | Provider | ML Signals provee señales a ejecutar | | OQI-007 | Integration | LLM Agent puede ejecutar via Gateway | | OQI-008 | Integration | Portfolio Manager consolida agentes | | **OQI-009** | **Owner** | **Épica principal del MT4 Gateway** | ### 5.3 Archivos Relacionados | Archivo | Tipo | Relación | |---------|------|----------| | `apps/mt4-gateway/src/main.py` | Source | Implementación principal | | `apps/mt4-gateway/config/agents.yml` | Config | Configuración de agentes | | `apps/data-service/.env` | Config | Credenciales MT4 | | `docs/01-arquitectura/ARQUITECTURA-MULTI-AGENTE-MT4.md` | Doc | Arquitectura detallada | | `docs/90-transversal/setup/SETUP-MT4-TRADING.md` | Doc | Guía de setup | | `docs/90-transversal/inventarios/MT4_GATEWAY_INVENTORY.yml` | Inventory | Inventario del servicio | --- ## 6. Configuración de Risk Management ### 6.1 Por Agente ```yaml agent_1 (Atlas): initial_balance: $200 max_risk_per_trade: 1% # $2 max_daily_loss: 5% # $10 max_positions: 1 allowed_pairs: [XAUUSD] agent_2 (Orion): initial_balance: $500 max_risk_per_trade: 1.5% # $7.50 max_daily_loss: 5% # $25 max_positions: 2 allowed_pairs: [EURUSD, GBPUSD] agent_3 (Nova): initial_balance: $1000 max_risk_per_trade: 2% # $20 max_daily_loss: 5% # $50 max_positions: 3 allowed_pairs: [XAUUSD, EURUSD, GBPUSD, USDJPY] ``` ### 6.2 Global ```yaml emergency_stop_all: false max_total_exposure: 10% correlation_limit: 0.5 ``` --- ## 7. API Reference ### 7.1 Endpoints | Endpoint | Método | Descripción | Auth | |----------|--------|-------------|------| | `/health` | GET | Health check | No | | `/api/status` | GET | Estado detallado | No | | `/api/agents` | GET | Lista agentes | Yes | | `/api/agents/summary` | GET | Resumen consolidado | Yes | | `/api/agents/{id}` | GET | Info de agente | Yes | | `/api/agents/{id}/account` | GET | Info de cuenta MT4 | Yes | | `/api/agents/{id}/positions` | GET | Posiciones abiertas | Yes | | `/api/agents/{id}/tick/{symbol}` | GET | Precio actual | Yes | | `/api/agents/{id}/trade` | POST | Ejecutar trade | Yes | | `/api/agents/{id}/close` | POST | Cerrar posición | Yes | | `/api/agents/{id}/modify` | POST | Modificar SL/TP | Yes | | `/api/agents/{id}/close-all` | POST | Cerrar todas | Yes | | `/api/emergency/stop-all` | POST | EMERGENCY stop | Admin | ### 7.2 Modelos de Request/Response #### TradeRequest ```json { "symbol": "XAUUSD", "action": "buy", "lots": 0.01, "sl": 2640.00, "tp": 2660.00, "comment": "Trading Platform-Atlas" } ``` #### GlobalSummary Response ```json { "total_balance": 1700.00, "total_equity": 1720.50, "total_profit": 45.30, "total_positions": 2, "agents_online": 2, "agents_offline": 1, "agents": [ { "agent_id": "agent_1", "name": "Atlas", "status": "online", "balance": 200.00, "equity": 205.50, "profit": 5.50, "open_positions": 1, "strategy": "amd" } ] } ``` --- ## 8. Impacto en el Sistema ### 8.1 Componentes Afectados | Componente | Tipo Impacto | Acción Requerida | |------------|--------------|------------------| | Backend Express | Nuevo módulo | Crear `/api/trading/*` routes | | Admin Dashboard | Nueva página | Crear página de agentes | | ML Engine | Nuevo consumer | WebSocket para señales | | PostgreSQL | Nuevas tablas | Tablas de trades y logs | | Data Service | Referencia | Sin cambios | ### 8.2 Cambios en Base de Datos ```sql -- Nuevas tablas requeridas (futuro) CREATE TABLE trading.agent_trades ( id SERIAL PRIMARY KEY, agent_id VARCHAR(50), ticket INTEGER, symbol VARCHAR(20), action VARCHAR(10), lots DECIMAL(10,2), open_price DECIMAL(20,5), close_price DECIMAL(20,5), stop_loss DECIMAL(20,5), take_profit DECIMAL(20,5), profit DECIMAL(20,5), open_time TIMESTAMP, close_time TIMESTAMP, signal_id INTEGER, created_at TIMESTAMP DEFAULT NOW() ); CREATE TABLE trading.agent_logs ( id SERIAL PRIMARY KEY, agent_id VARCHAR(50), event_type VARCHAR(50), message TEXT, metadata JSONB, created_at TIMESTAMP DEFAULT NOW() ); ``` --- ## 9. Requisitos de Infraestructura ### 9.1 Para Ejecución Local | Componente | Requisito | |------------|-----------| | Python | 3.10+ | | MT4 Terminal | Windows (o Wine en Linux) | | EA Bridge | Instalado en MT4 | | PostgreSQL | 15+ | | Redis | 7+ (opcional, para cache) | ### 9.2 Para Producción | Componente | Requisito | |------------|-----------| | VPS Windows | Para terminales MT4 24/7 | | VPS Linux | Para servicios Python | | Supervisord | Process manager | | Nginx | Reverse proxy | --- ## 10. Testing ### 10.1 Tests Requeridos - [ ] `test_mt4_bridge_client.py` - Conexión con EA Bridge - [ ] `test_gateway_endpoints.py` - Endpoints REST - [ ] `test_risk_manager.py` - Validaciones de riesgo - [ ] `test_trade_execution.py` - Ejecución de trades ### 10.2 Test de Integración ```bash # Verificar gateway curl http://localhost:8090/health # Verificar agentes curl http://localhost:8090/api/agents/summary # Test trade (demo only) curl -X POST http://localhost:8090/api/agents/agent_1/trade \ -H "Content-Type: application/json" \ -d '{"symbol":"XAUUSD","action":"buy","lots":0.01}' ``` --- ## 11. Próximos Pasos | # | Tarea | Prioridad | Dependencia | |---|-------|-----------|-------------| | 1 | Instalar MT4 y EA Bridge | Alta | VPS Windows | | 2 | Test conexión Gateway → MT4 | Alta | #1 | | 3 | Integrar con ML Engine | Alta | ML Engine WebSocket | | 4 | Implementar Risk Manager | Alta | - | | 5 | Crear Admin Dashboard | Media | Backend routes | | 6 | Agregar autenticación JWT | Media | Backend auth | | 7 | Logging a PostgreSQL | Baja | DB migrations | --- ## 12. Referencias - [ARQUITECTURA-MULTI-AGENTE-MT4.md](../../01-arquitectura/ARQUITECTURA-MULTI-AGENTE-MT4.md) - [SETUP-MT4-TRADING.md](../setup/SETUP-MT4-TRADING.md) - [MT4_GATEWAY_INVENTORY.yml](../inventarios/MT4_GATEWAY_INVENTORY.yml) - [ADR-002-MVP-OPERATIVO-TRADING.md](../../97-adr/ADR-002-MVP-OPERATIVO-TRADING.md) - [INT-DATA-001-data-service.md](./INT-DATA-001-data-service.md) --- ## 13. Historial de Cambios | Versión | Fecha | Autor | Cambios | |---------|-------|-------|---------| | 1.0.0 | 2025-12-12 | Architecture-Analyst | Creación inicial | --- **Estado de Validación:** | Aspecto | Estado | Notas | |---------|--------|-------| | Código Gateway implementado | ✅ | Estructura base completa | | Configuración de agentes | ✅ | 3 agentes definidos | | Documentación | ✅ | Este documento | | Tests | ⏳ | Pendiente | | Integración ML Engine | ⏳ | Pendiente | | Integración Admin | ⏳ | Pendiente |