Ler velas em tempo real é a base de quase qualquer estudo de automação na Quotex. Diferente de baixar histórico (que é uma chamada única), o tempo real exige entender como o pyquotex abre o stream, como o candle atual vai se formando vela a vela, e como evitar os erros clássicos de conexão. Este guia mostra o caminho prático em Python — de forma honesta, sempre em conta demo, e sem prometer lucro fácil.

Quer a biblioteca, os exemplos prontos e o passo a passo de instalação?

Ver guia pyquotex + Python →

Antes de começar: histórico vs. tempo real

São duas coisas diferentes e muita gente confunde. O histórico de velas é uma fotografia do passado: você pede 100 candles fechados e recebe uma lista pronta. O tempo real é um filme: você assina (subscribe) um ativo e passa a receber atualizações contínuas, inclusive do candle que ainda está aberto e mudando a cada tick.

Regra de ouro: nunca tome decisão com base no candle atual (aberto). Ele muda até fechar. Estratégias sérias confirmam apenas com o candle anterior já fechado.

Conectando e escolhendo o timeframe

O pyquotex trabalha de forma assíncrona (asyncio). O timeframe é definido em segundos: 60 = M1, 300 = M5, 900 = M15, e assim por diante. O exemplo abaixo conecta, garante o uso da conta demo e prepara a leitura de um ativo.

import asyncio from quotexapi.stable_api import Quotex async def main(): cliente = Quotex(email=”seu_email”, password=”sua_senha”) ok, motivo = await cliente.connect() print(“Conectado?”, ok, motivo) # SEMPRE conta de prática (demo) cliente.change_account(“PRACTICE”) print(“Saldo:”, await cliente.get_balance()) ativo = “EURUSD” timeframe = 60 # 60s = M1 # … leitura das velas abaixo asyncio.run(main())

Lendo velas em tempo real

Para receber atualizações contínuas, você assina o ativo e depois lê o buffer de velas em loop. O padrão é iniciar o stream uma vez e, a cada iteração, pegar a lista mais recente de candles já montados.

# dentro de main(), após conectar: cliente.start_candles_stream(ativo, timeframe) await asyncio.sleep(timeframe) # espera formar ao menos 1 vela for _ in range(5): velas = cliente.get_realtime_candles(ativo, timeframe) if velas: ultima = list(velas.values())[-1] print(“open:”, ultima[“open”], “close:”, ultima[“close”], “ts:”, ultima[“time”]) await asyncio.sleep(timeframe)

Note o await asyncio.sleep(timeframe): ele evita que o loop gire à toa antes de uma nova vela existir. Em produção de estudo, você normalmente compara o fechamento da vela anterior com o atual para detectar quando um candle realmente fechou.

Detectando o fechamento de uma vela

Como o candle aberto muda o tempo todo, o truque é guardar o timestamp do último candle conhecido e só agir quando ele mudar — sinal de que o anterior fechou de vez.

ultimo_ts = None while True: velas = cliente.get_realtime_candles(ativo, timeframe) if velas: atual = list(velas.values())[-1] if ultimo_ts is not None and atual[“time”] != ultimo_ts: # a vela anterior acabou de fechar -> hora de avaliar print(“Vela fechada. Avaliar sinal agora.”) ultimo_ts = atual[“time”] await asyncio.sleep(1)

Erros comuns (e como evitar)

Buffer vazio nas primeiras iterações. O stream precisa de tempo para popular. Sempre cheque if velas: antes de acessar e dê um sleep inicial.

Usar o candle aberto como sinal. Ele oscila até fechar. Confirme só com a vela anterior já encerrada.

Não tratar reconexão. WebSocket cai. Envolva o loop em try/except e reconecte; nunca presuma que o stream ficou vivo a noite toda.

Credenciais no código. Use variáveis de ambiente. E rode tudo em conta demo enquanto estuda.

FAQ

Qual a diferença entre get_candles e get_realtime_candles?
get_candles traz histórico fechado (chamada pontual). get_realtime_candles lê o buffer do stream que você iniciou com start_candles_stream, incluindo o candle ainda aberto.

Como defino M1, M5 ou M15?
O timeframe é em segundos: 60 para M1, 300 para M5, 900 para M15. Ative apenas os timeframes que vai usar para não sobrecarregar a conexão.

Posso rodar em conta real?
Tecnicamente sim, mas não recomendamos enquanto estuda. Opção binária é de altíssimo risco e bibliotecas não oficiais podem falhar a qualquer momento. Use demo.

O pyquotex é oficial?
Não. É um projeto da comunidade baseado no WebSocket da Quotex. Pode quebrar quando a plataforma muda o protocolo.

Aviso: opções binárias são produtos de altíssimo risco e podem levar à perda total do capital. Este conteúdo é educacional e não constitui recomendação de investimento, oferta ou aconselhamento financeiro. Bibliotecas não oficiais podem violar os termos de uso da plataforma e parar de funcionar sem aviso. Teste sempre em conta demo antes de qualquer operação real.