ML Engine Updates: - Updated BTCUSD with Polygon API data (2024-2025): 215,699 new records - Re-trained all ML models: Attention (R²: 0.223), Base, Metamodel (87.3% confidence) - Backtest results: +176.71R profit with aggressive_filter strategy Documentation Consolidation: - Created docs/99-analisis/_MAP.md index with 13 new analysis documents - Consolidated inventories: removed duplicates from orchestration/inventarios/ - Updated ML_INVENTORY.yml with BTCUSD metrics and training results - Added execution reports: FASE11-BTCUSD, correction issues, alignment validation Architecture & Integration: - Updated all module documentation with NEXUS v3.4 frontmatter - Fixed _MAP.md indexes across all folders - Updated orchestration plans and traces Files: 229 changed, 5064 insertions(+), 1872 deletions(-) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
7.9 KiB
| id | title | type | project | version | updated_date |
|---|---|---|---|---|---|
| SETUP-MT4-TRADING | Setup MT4 Trading - EBC Financial Group | Documentation | trading-platform | 1.0.0 | 2026-01-04 |
Setup MT4 Trading - EBC Financial Group
Fecha: 2025-12-12 Estado: Configuración Inicial Broker: EBC Financial Group (Demo)
Resumen de Credenciales
Polygon/Massive API (Datos de Mercado)
API_KEY: pxwp1peelaTqnKAGVCSEo2hHXVolpoT8
RATE_LIMIT: 5 requests/minuto (tier gratuito)
BASE_URL: https://api.polygon.io
MT4 Demo Account (EBC)
SERVER: EBCFinancialGroupKY-Demo02
LOGIN: 22437
PASSWORD: AfcItz2391!
BROKER: EBC Financial Group
TIPO: Demo
Opciones de Conexión a MT4
Hay 3 opciones para conectar con MT4 y ejecutar operaciones:
Opción 1: MetaAPI.cloud (RECOMENDADA)
MetaAPI es un servicio cloud que actúa como bridge hacia cualquier broker MT4/MT5.
Ventajas:
- No requiere terminal MT4 corriendo
- API REST + WebSocket
- Funciona en servidores cloud/VPS
- Soporte para todos los brokers
Pasos de Configuración:
-
Crear cuenta en MetaAPI:
https://app.metaapi.cloud/sign-up -
Obtener API Token:
- Dashboard → Settings → API Access Tokens
- Crear token con permisos:
full-access - Guardar el token (solo se muestra una vez)
-
Agregar cuenta MT4:
- Dashboard → Accounts → Add Account
- Seleccionar: MetaTrader 4
- Llenar datos:
Name: Trading Platform Demo Login: 22437 Password: AfcItz2391! Server: EBCFinancialGroupKY-Demo02 Platform: mt4 Type: cloud-g2 (recomendado) - Click "Add Account"
- Esperar deployment (1-2 minutos)
- Copiar el Account ID generado
-
Configurar .env:
METAAPI_TOKEN=eyJ...tu_token_aqui METAAPI_ACCOUNT_ID=abc123...tu_account_id -
Verificar conexión:
cd apps/data-service python -c " import asyncio from src.providers.metaapi_client import MetaAPIClient async def test(): client = MetaAPIClient() await client.connect() info = await client.get_account_info() print(f'Connected! Balance: {info.balance} {info.currency}') await client.disconnect() asyncio.run(test()) "
Costo: Gratis hasta 1 cuenta, luego desde $10/mes
Opción 2: Expert Advisor Bridge (Sin costo adicional)
Usar un EA (Expert Advisor) que expone una API local.
Requiere:
- Terminal MT4 corriendo 24/7
- VPS Windows (si quieres 24/7)
EAs Recomendados:
- MT4-to-REST (open source)
- ZeroMQ-MT4
Pasos:
-
Descargar terminal MT4:
https://www.ebc.com/ebc-download-center -
Login con credenciales demo
-
Instalar EA bridge:
- Copiar EA a:
MT4/MQL4/Experts/ - Reiniciar MT4
- Arrastrar EA al chart
- Habilitar "Allow DLL imports"
- Habilitar "Allow live trading"
- Copiar EA a:
-
El EA expone API en:
http://localhost:8080/api/...
Opción 3: Conexión TCP Directa (Avanzado)
Conexión directa al servidor MT4 usando protocolo propietario.
NO RECOMENDADO - Requiere:
- Ingeniería reversa del protocolo
- Mantenimiento complejo
- Posibles bloqueos del broker
Configuración de Pares de Trading
Pares Iniciales (Prioridad)
| Par | Polygon Symbol | MT4 Symbol | Spread Típico | Sesión Óptima |
|---|---|---|---|---|
| XAU/USD | C:XAUUSD | XAUUSD | 25-35 pips | London/NY |
| EUR/USD | C:EURUSD | EURUSD | 0.8-1.5 pips | London/NY Overlap |
| GBP/USD | C:GBPUSD | GBPUSD | 1.2-2.0 pips | London |
| USD/JPY | C:USDJPY | USDJPY | 0.8-1.5 pips | Asian/London |
Configuración Risk Management
# Para cuenta de $200
starter_config:
max_risk_per_trade: 1% # = $2 máximo
max_daily_loss: 5% # = $10 máximo
max_open_positions: 1
allowed_pairs: [XAUUSD] # Solo oro inicialmente
lot_size: 0.01 # Micro lot
# Para cuenta de $1000
optimal_config:
max_risk_per_trade: 2% # = $20 máximo
max_daily_loss: 5% # = $50 máximo
max_open_positions: 3
allowed_pairs: [XAUUSD, EURUSD, GBPUSD, USDJPY]
lot_size_range: [0.01, 0.10]
Sincronización de Datos (Polygon)
Rate Limiting Adaptado
Con el tier gratuito de Polygon (5 req/min), la estrategia es:
# Configuración actual
POLYGON_RATE_LIMIT=5 # 5 requests por minuto
RATE_LIMIT_DELAY_SECONDS=12 # 60/5 = 12 segundos entre requests
# Para 4 pares en sync:
# - 1 request por par cada 5 minutos = factible
# - Backfill histórico: ~48 segundos por día de datos
Script de Sync Inicial
# Sync últimos 30 días para pares iniciales
cd apps/data-service
python -m src.main --backfill --days=30 --symbols=XAUUSD,EURUSD,GBPUSD,USDJPY
Sync Automático (Cronjob)
# Agregar a crontab
*/5 * * * * cd /path/to/data-service && python -m src.main --sync
Verificación de Setup
1. Test Polygon API
curl "https://api.polygon.io/v2/aggs/ticker/C:EURUSD/range/5/minute/2025-12-11/2025-12-12?apiKey=pxwp1peelaTqnKAGVCSEo2hHXVolpoT8"
Respuesta esperada:
{
"ticker": "C:EURUSD",
"status": "OK",
"resultsCount": 288,
"results": [...]
}
2. Test MT4 Connection (con MetaAPI)
import asyncio
from src.providers.metaapi_client import MetaAPIClient
async def test_mt4():
client = MetaAPIClient()
await client.connect()
# Info de cuenta
info = await client.get_account_info()
print(f"Balance: {info.balance}")
print(f"Equity: {info.equity}")
print(f"Leverage: {info.leverage}")
# Tick actual
tick = await client.get_tick("XAUUSD")
print(f"XAUUSD Bid: {tick.bid}, Ask: {tick.ask}, Spread: {tick.spread}")
await client.disconnect()
asyncio.run(test_mt4())
3. Test Trade Execution (DEMO ONLY)
async def test_trade():
client = MetaAPIClient()
await client.connect()
# Abrir trade de prueba
result = await client.open_trade(
symbol="XAUUSD",
order_type=OrderType.BUY,
volume=0.01, # Micro lot
sl=None, # Sin SL por ahora
tp=None, # Sin TP por ahora
comment="Test Trading Platform"
)
if result.success:
print(f"Trade abierto! Position ID: {result.position_id}")
# Ver posiciones
positions = await client.get_positions()
for p in positions:
print(f"Position: {p.symbol} {p.type} @ {p.open_price}")
# Cerrar inmediatamente
close_result = await client.close_position(result.position_id)
print(f"Trade cerrado: {close_result.success}")
else:
print(f"Error: {result.error_message}")
await client.disconnect()
asyncio.run(test_trade())
Próximos Pasos
-
[ ] Crear cuenta MetaAPI.cloud
- Registrarse en https://app.metaapi.cloud
- Agregar cuenta MT4 de EBC
- Obtener token y account_id
-
[ ] Verificar conexión Polygon
- Test del endpoint con curl
- Verificar rate limiting
-
[ ] Backfill datos históricos
- Ejecutar sync inicial para 4 pares
- Verificar datos en PostgreSQL
-
[ ] Test de trading en demo
- Abrir/cerrar trade de prueba
- Verificar logging
Troubleshooting
Error: "Rate limit exceeded" (Polygon)
- Reducir frecuencia de requests
- El código ya tiene rate limiting de 5 req/min
Error: "Account deployment failed" (MetaAPI)
- Verificar credenciales MT4
- El servidor debe estar correcto
- Intentar con tipo
cloud-g1en lugar decloud-g2
Error: "Connection timeout" (MT4)
- Verificar que el servidor está disponible
- EBC servers pueden tener mantenimiento fines de semana
Error: "Invalid volume"
- El volumen mínimo es 0.01 lots
- Verificar configuración del símbolo
Archivo de configuración: apps/data-service/.env
Documentación MetaAPI: https://metaapi.cloud/docs
Documentación Polygon: https://polygon.io/docs