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.
PyQuotex utiliza a biblioteca websockets (assíncrona) para manter conexões de alto desempenho com o servidor do
Quotex. A implementação principal está dividida entre WebsocketClient e QuotexAPI.
A conexão é mantida ativa através de um sistema de Heartbeat que envia uma mensagem de “tick” a cada 5 segundos, garantindo que o servidor não encerre a sessão por inatividade.
from pyquotex.global_value import WebsocketStatus
# Heartbeat implementado no QuotexAPI._on_open
async def heartbeat():
while self.state.status == WebsocketStatus.CONNECTED:
try:
await self.websocket.send('42["tick"]')
except Exception:
break
await asyncio.sleep(5)
PyQuotex oferece vários métodos para se inscrever em diferentes tipos de streams:
def start_candles_stream(self, asset, period=0):
self.api.current_asset = asset
self.api.subscribe_realtime_candle(asset, period)
self.api.follow_candle(asset)
async def start_realtime_sentiment(self, asset, period=0):
self.start_candles_stream(asset, period)
while True:
if self.api.realtime_sentiment.get(asset):
return self.api.realtime_sentiment[asset]
await asyncio.sleep(0.2)
async def start_realtime_price(self, asset, period=0):
self.start_candles_stream(asset, period)
while True:
if self.api.realtime_price.get(asset):
return self.api.realtime_price
await asyncio.sleep(0.2)
O sistema suporta os seguintes tipos de streams:
O PyQuotex utiliza uma arquitetura avançada de WebSocket para garantir estabilidade e performance em nível comercial.
A conexão é monitorada por um supervisor dedicado (_websocket_supervisor) que realiza reconexões automáticas com
Exponential Backoff. Se o socket cair, o sistema re-autentica e reabre a conexão sem necessidade de intervenção
manual.
# O Supervisor gerencia o ciclo de vida da conexão automaticamente
await client.connect()
Para maximizar a velocidade de processamento, implementamos um sistema de despacho baseado em dicionário (O(1)). Em vez
de percorrer cadeias de if/elif, o sistema invoca diretamente o handler modular responsável pelo evento, reduzindo
drasticamente a latência de execução.