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.
O projeto segue uma estrutura modular organizada da seguinte maneira:
📦 pyquotex/
┣ 📂 docs/ # Documentação
┣ 📂 examples/ # Exemplos de uso
┃ ┣ 📜 custom_config.py # Configuração personalizada
┃ ┣ 📜 monitoring_assets.py # Monitoramento de ativos
┃ ┣ 📜 trade_bot.py # Bot de trading
┃ ┗ 📜 user_test.py # Testes de usuário
┣ 📂 pyquotex/ # Núcleo da API
┃ ┣ 📂 network/ # Módulos de Rede (Autenticação, Configurações)
┃ ┃ ┣ 📜 login.py
┃ ┃ ┣ 📜 logout.py
┃ ┃ ┗ 📜 settings.py
┃ ┣ 📂 utils/ # Utilitários
┃ ┣ 📂 ws/ # WebSocket
┃ ┃ ┣ 📂 channels/ # Canais WS
┃ ┃ ┗ 📂 objects/ # Objetos WS
┃ ┣ 📜 api.py # API principal
┃ ┗ 📜 stable_api.py # API estável
A API é construída sobre uma arquitetura cliente-servidor utilizando WebSocket como protocolo principal de comunicação. Os componentes principais são:
A API implementa vários canais WebSocket para diferentes funcionalidades:
O sistema implementa um sofisticado gerenciamento de sessões que inclui:
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 as operações de rede
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"Erro de conexão: {e}")
await self.reconnect()
logging.basicConfig(
level=logging.DEBUG,
format='%(asctime)s %(message)s'
)
Para evitar vazamentos de memória (Memory Leaks) em execuções de longa duração, a API utiliza collections.deque com
limites estritos (maxlen). Isso garante que o histórico de preços em tempo real não cresça indefinidamente.
O processamento de indicadores técnicos agora é totalmente orientado a eventos. O sistema apenas recalcula indicadores
quando o sinal candle_generated é recebido, reduzindo drasticamente o uso de CPU.
Utilizamos httpx.AsyncClient com pooling de conexões para acelerar requisições de rede e reduzir o overhead de rede.