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.
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
┣ 📂 pyquotex/ # Núcleo de la API
┃ ┣ 📂 network/ # Módulos de Red (Autenticación, Configuración)
┃ ┃ ┣ 📜 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
La API está construida sobre una arquitectura cliente-servidor utilizando WebSocket como protocolo principal de comunicación. Los componentes principales son:
La API implementa varios canales WebSocket para diferentes funcionalidades:
El sistema implementa un sofisticado manejo de sesiones que incluye:
async def authenticate(self):
logger.info("Connecting User Account...")
async with self.login as login:
status, message = await login(
self.username,
self.password,
self.user_data_dir
)
if status:
self.state.SSID = self.session_data.get("token")
self.is_logged = True
return status, message
session.json# Contexto SSL unificado para todas las operaciones de red
ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
ssl_context.minimum_version = ssl.TLSVersion.TLSv1_2
ssl_context.maximum_version = ssl.TLSVersion.TLSv1_3
ssl_context.set_ciphers('ECDHE-ECDSA-AES128-GCM-SHA256:...')
try:
await self.connect()
except Exception as e:
logger.error(f"Connection error: {e}")
await self.reconnect()
logging.basicConfig(
level=logging.DEBUG,
format='%(asctime)s %(message)s'
)
Para evitar fugas de memoria (Memory Leaks) en ejecuciones de larga duración, la API utiliza collections.deque con
límites estrictos (maxlen). Esto garantiza que el historial de precios en tiempo real no crezca indefinidamente.
El procesamiento de indicadores técnicos ahora está totalmente orientado a eventos. El sistema solo recalcula
indicadores cuando se recibe la señal candle_generated, reduciendo drásticamente el uso de CPU.
Utilizamos httpx.AsyncClient con pooling de conexiones para acelerar las peticiones de red y reducir el overhead de
red.