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

Documentação Técnica PyQuotex

1. Aspectos Técnicos

1.1 Estrutura do Projeto

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
 ┣ 📂 quotexapi/              # Núcleo da API
 ┃ ┣ 📂 http/                 # Módulos HTTP
 ┃ ┃ ┣ 📜 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

1.2 Arquitetura da API

A API é construída sobre uma arquitetura cliente-servidor utilizando WebSocket como protocolo principal de comunicação. Os componentes principais são:

Componentes Principais

Canais WebSocket

A API implementa vários canais WebSocket para diferentes funcionalidades:

Processamento de Dados

1.3 Gerenciamento de Sessões

O sistema implementa um sofisticado gerenciamento de sessões que inclui:

Autenticação

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

Persistência de Sessão

Estado da Conexão

1.4 Considerações de Segurança

Autenticação e Autorização

Proteção de Dados

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 Segurança Implementadas

  1. Uso exclusivo de TLS 1.3
  2. Verificação de certificados SSL
  3. Proteção contra ataques man-in-the-middle
  4. Rate limiting para prevenir abuso da API
  5. Validação de dados de entrada

Tratamento de Erros

Notas Importantes

  1. Rate Limiting: A API implementa limites de taxa para prevenir abuso:
    • Máximo de reconexões
    • Delays entre operações
    • Limites de requisições por minuto
  2. Tratamento de Erros: Sistema robusto de tratamento de erros:
    try:
        await self.connect()
    except Exception as e:
        logger.error(f"Erro de conexão: {e}")
        await self.reconnect()
    
  3. Logging: Sistema abrangente de logging para debugging e monitoramento:
    logging.basicConfig(
        level=logging.DEBUG,
        format='%(asctime)s %(message)s'
    )
    

Recomendações de Uso

  1. Configuração:
    • Usar variáveis de ambiente para credenciais
    • Configurar timeouts apropriados
    • Implementar tratamento de erros personalizado
  2. Segurança:
    • Não armazenar credenciais no código
    • Manter dependências atualizadas
    • Usar conexões seguras (SSL/TLS)
  3. Desempenho:
    • Implementar cache quando possível
    • Gerenciar reconexões de forma eficiente
    • Monitorar o uso de recursos