PyQuotex

pyquotex is a Python library designed to easily integrate with the Quotex API, enabling automated trading operations. Fully open-source and licensed under MIT, the library provides features like order execution, balance checking, real-time market data collection, and more. Perfect for traders and developers looking to build efficient and customized solutions.

View the Project on GitHub cleitonleonel/pyquotex

Documentación Técnica PyQuotex

1. Aspectos Técnicos

1.1 Estructura del Proyecto

El proyecto sigue una estructura modular organizada de la siguiente manera:

📦 pyquotex/
 ┣ 📂 docs/                    # Documentación
 ┣ 📂 examples/                # Ejemplos de uso
 ┃ ┣ 📜 custom_config.py       # Configuración personalizada
 ┃ ┣ 📜 monitoring_assets.py   # Monitoreo de activos
 ┃ ┣ 📜 trade_bot.py          # Bot de trading
 ┃ ┗ 📜 user_test.py          # Tests de usuario
 ┣ 📂 quotexapi/              # Núcleo de la API
 ┃ ┣ 📂 http/                 # Módulos HTTP
 ┃ ┃ ┣ 📜 login.py
 ┃ ┃ ┣ 📜 logout.py
 ┃ ┃ ┗ 📜 settings.py
 ┃ ┣ 📂 utils/                # Utilidades
 ┃ ┣ 📂 ws/                   # WebSocket
 ┃ ┃ ┣ 📂 channels/          # Canales WS
 ┃ ┃ ┗ 📂 objects/           # Objetos WS
 ┃ ┣ 📜 api.py               # API principal
 ┃ ┗ 📜 stable_api.py        # API estable

1.2 Arquitectura de la API

La API está construida sobre una arquitectura cliente-servidor utilizando WebSocket como protocolo principal de comunicación. Los componentes principales son:

Core Components

Canales de WebSocket

La API implementa varios canales WebSocket para diferentes funcionalidades:

Procesamiento de Datos

1.3 Manejo de Sesiones

El sistema implementa un sofisticado manejo de sesiones que incluye:

Autenticación

async def authenticate(self):
    status, message = await self.login(
        self.username,
        self.password,
        self.user_data_dir
    )
    if status:
        global_value.SSID = self.session_data.get("token")
        self.is_logged = True
    return status, message

Persistencia de Sesión

Estado de la Conexión

1.4 Consideraciones de Seguridad

Autenticación y Autorización

Protección de Datos

ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
ssl_context.options |= ssl.OP_NO_TLSv1 | ssl.OP_NO_TLSv1_1 | ssl.OP_NO_TLSv1_2
ssl_context.minimum_version = ssl.TLSVersion.TLSv1_3

Medidas de Seguridad Implementadas

  1. Uso exclusivo de TLS 1.3
  2. Verificación de certificados SSL
  3. Protección contra ataques de intermediarios
  4. Rate limiting para prevenir abuso de la API
  5. Validación de datos de entrada

Manejo de Errores

Notas Importantes

  1. Rate Limiting: La API implementa límites de tasa para prevenir el abuso:
    • Máximo de reconexiones
    • Delays entre operaciones
    • Límites de solicitudes por minuto
  2. Manejo de Errores: Sistema robusto de manejo de errores:
    try:
        await self.connect()
    except Exception as e:
        logger.error(f"Connection error: {e}")
        await self.reconnect()
    
  3. Logging: Sistema comprensivo de logging para debugging y monitoreo:
    logging.basicConfig(
        level=logging.DEBUG,
        format='%(asctime)s %(message)s'
    )
    

Recomendaciones de Uso

  1. Configuración:
    • Usar variables de entorno para credenciales
    • Configurar timeouts apropiados
    • Implementar manejo de errores personalizado
  2. Seguridad:
    • No almacenar credenciales en código
    • Mantener actualizadas las dependencias
    • Usar conexiones seguras (SSL/TLS)
  3. Rendimiento:
    • Implementar caché cuando sea posible
    • Manejar reconexiones de forma eficiente
    • Monitorear el uso de recursos