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.
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.
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.
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