---
id: "README"
title: "Especificaciones Técnicas - OQI-003 Trading y Charts"
type: "Documentation"
project: "trading-platform"
version: "1.0.0"
updated_date: "2026-01-04"
---

# Especificaciones Técnicas - OQI-003 Trading y Charts

Este directorio contiene las especificaciones técnicas detalladas para el módulo de Trading y Charts de Trading Platform.

## Índice de Especificaciones

### 1. Integración de Datos de Mercado
**[ET-TRD-001: Market Data Integration](./ET-TRD-001-market-data.md)**
- Integración con Binance API (REST + WebSocket)
- Obtención de klines/candles, tickers, order book
- Caché con Redis
- Rate limiting y optimización de requests
- **Tecnologías:** Axios, Redis, PostgreSQL

### 2. Conexiones WebSocket
**[ET-TRD-002: WebSocket Connections](./ET-TRD-002-websocket.md)**
- WebSocket server para clientes (ws library)
- Conexión a Binance WebSocket
- Sistema de suscripciones por símbolo
- Reconexión automática y heartbeat
- Stream manager para multiplexación
- **Tecnologías:** ws, EventEmitter, JWT auth

### 3. Modelo de Datos
**[ET-TRD-003: Database Schema](./ET-TRD-003-database.md)**
- Schema `trading` completo en PostgreSQL 15+
- Tablas: watchlists, watchlist_symbols, paper_orders, paper_positions, paper_balances, paper_trades
- ENUMs personalizados para tipos de datos
- Funciones y triggers para lógica de negocio
- Vistas para consultas optimizadas
- **Tecnologías:** PostgreSQL 15+, SQL

### 4. API REST
**[ET-TRD-004: REST API Endpoints](./ET-TRD-004-api.md)**
- Endpoints de market data (klines, tickers, orderbook, symbols)
- Endpoints de watchlists (CRUD completo)
- Endpoints de paper trading (balances, orders, positions, trades)
- Endpoints de estadísticas
- Validación con Zod
- **Tecnologías:** Express.js, TypeScript, Zod

### 5. Componentes Frontend
**[ET-TRD-005: Frontend Components](./ET-TRD-005-frontend.md)**
- TradingPage con layout completo
- ChartComponent con Lightweight Charts v4
- OrderPanel, PositionsPanel, WatchlistPanel, OrderBookPanel
- Stores con Zustand (tradingStore, orderStore, chartStore)
- Hooks personalizados (useWebSocket, useMarketData)
- **Tecnologías:** React 18, Lightweight Charts v4, Zustand, TailwindCSS

### 6. Indicadores Técnicos
**[ET-TRD-006: Technical Indicators](./ET-TRD-006-indicadores.md)**
- SMA (Simple Moving Average)
- EMA (Exponential Moving Average)
- RSI (Relative Strength Index)
- MACD (Moving Average Convergence Divergence)
- Bollinger Bands
- Fórmulas matemáticas y optimizaciones
- Integración con Lightweight Charts
- **Tecnologías:** TypeScript, Lightweight Charts

### 7. Motor de Paper Trading
**[ET-TRD-007: Paper Trading Engine](./ET-TRD-007-paper-engine.md)**
- OrderExecutionService (market, limit, stop orders)
- PositionService (gestión de posiciones long/short)
- BalanceService (gestión de balances multi-asset)
- Cálculo de PnL (realizado y no realizado)
- Simulación de slippage y comisiones
- **Tecnologías:** TypeScript, PostgreSQL

### 8. Optimizaciones de Performance
**[ET-TRD-008: Performance Optimizations](./ET-TRD-008-performance.md)**
- Web Workers para cálculos pesados
- Virtualización de listas con react-window
- Caché con IndexedDB y LRU cache
- React.memo, useMemo, useCallback
- Lazy loading y code splitting
- Debouncing y throttling
- **Tecnologías:** Web Workers, react-window, IndexedDB

---

## Stack Tecnológico Completo

### Backend
- **Runtime:** Node.js 20+
- **Framework:** Express.js + TypeScript
- **Database:** PostgreSQL 15+ (schema: trading)
- **Cache:** Redis 7+
- **WebSocket:** ws library
- **API Client:** Axios
- **Validation:** Zod

### Frontend
- **Framework:** React 18
- **State Management:** Zustand
- **Charts:** Lightweight Charts v4
- **Styling:** TailwindCSS
- **HTTP Client:** Axios
- **Virtualization:** react-window
- **Storage:** IndexedDB

### External APIs
- **Market Data:** Binance API (REST + WebSocket)
  - REST: https://api.binance.com
  - WebSocket: wss://stream.binance.com:9443/ws

### Infrastructure
- **Container:** Docker
- **Reverse Proxy:** Nginx (opcional)

---

## Relación entre Especificaciones

```
┌─────────────────────────────────────────────────────────────────┐
│                        Frontend Layer                           │
│                                                                 │
│  ET-TRD-005 (Components)                                       │
│  ├── ChartComponent ──uses──> ET-TRD-006 (Indicators)         │
│  ├── OrderPanel ──uses──> ET-TRD-004 (API)                    │
│  └── Optimizations ──uses──> ET-TRD-008 (Performance)         │
└────────────────────────┬────────────────────────────────────────┘
                         │
                         │ HTTP/WSS
                         ▼
┌─────────────────────────────────────────────────────────────────┐
│                        Backend Layer                            │
│                                                                 │
│  ET-TRD-004 (API Endpoints)                                    │
│  ├── Routes ──uses──> ET-TRD-007 (Paper Engine)               │
│  ├── Market Data ──uses──> ET-TRD-001 (Binance API)           │
│  └── WebSocket ──uses──> ET-TRD-002 (WS Server)               │
└────────────────────────┬────────────────────────────────────────┘
                         │
                         ▼
┌─────────────────────────────────────────────────────────────────┐
│                        Data Layer                               │
│                                                                 │
│  ET-TRD-003 (Database Schema)                                  │
│  ├── Watchlists Tables                                         │
│  ├── Paper Trading Tables                                      │
│  └── Market Data Tables                                        │
└─────────────────────────────────────────────────────────────────┘
```

---

## Orden de Implementación Recomendado

1. **ET-TRD-003** - Database Schema (base de datos primero)
2. **ET-TRD-001** - Market Data Integration (datos externos)
3. **ET-TRD-002** - WebSocket Connections (tiempo real)
4. **ET-TRD-007** - Paper Trading Engine (lógica de negocio)
5. **ET-TRD-004** - REST API Endpoints (interfaz backend)
6. **ET-TRD-006** - Technical Indicators (cálculos)
7. **ET-TRD-005** - Frontend Components (UI)
8. **ET-TRD-008** - Performance Optimizations (refinamiento)

---

## Archivos Relacionados

- **Épica:** [OQI-003 README](../README.md)
- **Mapa del Módulo:** [_MAP.md](../_MAP.md)
- **Requerimientos Funcionales:** [../requerimientos/](../requerimientos/)
- **Historias de Usuario:** [../historias-usuario/](../historias-usuario/)

---

## Convenciones de Nomenclatura

### Archivos
- `ET-TRD-XXX-nombre.md` - Especificación Técnica

### Código Backend
- `*.service.ts` - Servicios de lógica de negocio
- `*.controller.ts` - Controladores de endpoints
- `*.routes.ts` - Definición de rutas
- `*.types.ts` - Interfaces y tipos TypeScript

### Código Frontend
- `*.tsx` - Componentes React
- `*.store.ts` - Stores de Zustand
- `use*.ts` - Custom hooks

### Base de Datos
- `trading.*` - Schema de trading
- `*_enum` - Tipos ENUM
- `idx_*` - Índices
- `*_trigger` - Triggers

---

## Notas de Desarrollo

### Variables de Entorno Requeridas

```bash
# Binance API
BINANCE_API_KEY=your_api_key
BINANCE_API_SECRET=your_api_secret

# Database
DATABASE_URL=postgresql://user:password@localhost:5432/trading
DB_SCHEMA=trading

# Redis
REDIS_URL=redis://localhost:6379
REDIS_DB_MARKET_DATA=1

# JWT
JWT_SECRET=your_jwt_secret

# API
API_URL=http://localhost:3001
WS_URL=ws://localhost:3001
```

### Comandos Útiles

```bash
# Crear schema de base de datos
psql -d trading -f migrations/001_create_trading_schema.sql

# Ejecutar tests
npm run test:backend
npm run test:frontend

# Desarrollo
npm run dev:backend
npm run dev:frontend

# Build producción
npm run build
```

---

## Contacto y Soporte

Para preguntas sobre estas especificaciones técnicas:
- Revisar documentación en `/docs`
- Consultar ejemplos de código en `/examples`
- Crear issue en repositorio del proyecto

---

**Última actualización:** 2025-12-05
**Versión de especificaciones:** 1.0.0
