Binaryzando Todos os erros →

Delay entre o robô e a corretora: quanto é normal?

Alguns décimos de segundo são normais e inevitáveis. Três segundos não são rede — nesse patamar o atraso quase sempre está dentro do seu próprio programa, e dá pra achar exatamente onde.

É possível diminuir o delay entre robô e a corretora ou é normal? Estou com 3 segundos de delay.

De onde vem o atraso

Entre a sua regra dizer “entra” e a corretora registrar a ordem existem quatro trechos, e só um deles é a internet:

1. Buscar as velas. Cada pedido de histórico é uma ida e volta. Se você pede vela de 30 pares antes de decidir, são 30 idas e voltas.
2. Calcular. Normalmente rápido — a menos que tenha gráfico sendo desenhado ou indicador recalculando o histórico inteiro a cada volta.
3. A rede. De casa, com Wi-Fi, algo entre 50 e 300 milissegundos.
4. A espera que você mesmo escreveu. Um sleep no lugar errado, um print dentro do laço, um input esquecido.

Somando 1, 2 e 4, chegar em 3 segundos é fácil — e nenhum deles é culpa da corretora.

Como achar o culpado, sem chutar

Cronometre cada bloco, uma vez

Imprima o horário antes e depois de cada etapa. Não precisa de ferramenta:

import time
t = time.time()
velas = api.get_candles(...)
print('velas: %.2fs' % (time.time() - t))

Rode uma vez e veja qual número é grande. Quase sempre é o que você não suspeitava.

Pare de buscar o que você não vai usar

Se a decisão é sobre um par, buscar 30 é desperdício de tempo exatamente no minuto que importa. Faça a varredura larga fora do momento da entrada — ver robô travando ou lento.

Decida ANTES da virada da vela

Este é o conserto que mais resolve. Em vez de acordar no segundo zero e sair correndo pra buscar dados, deixe tudo pronto e envie a ordem sabendo o horário. Um robô que decide com antecedência tem 3 segundos de folga; um que decide na virada tem 3 segundos de atraso.

Não confunda atraso com relógio errado

Se o relógio do seu computador estiver alguns segundos fora, tudo parece atrasado sem estar. Compare com o horário do servidor da corretora antes de sair otimizando código à toa.

O atraso muda o seu resultado, não só o seu conforto

A operação compara o preço do instante em que a ordem foi registrada, não o da vela que você olhou. Com 3 segundos de atraso numa vela de 60, você está entrando num preço diferente do que a sua regra avaliou — e o backtest não sabe disso. É a causa de vela verde com resultado de loss.

Erros parecidos

Antes de deixar o robó operar

Consertar o erro faz o robô rodar — não faz ele ganhar. O Binaryzando testa a sua estratégia no histórico real de velas antes de você arriscar dinheiro nela, e sela o resultado numa carta com código verificável — para o número não poder ser editado depois.

Testar minha estratégia