Robô travando, lento ou “congelado”
Quase nunca é falta de computador. Na esmagadora maioria dos casos o programa está esperando alguma coisa da rede sem fazer mais nada — e o que você vê como “travou” é ele parado numa única linha.
O que está acontecendo
Um robô de binárias passa a maior parte do tempo esperando: esperando a vela fechar, esperando a resposta da corretora, esperando o resultado da ordem. Se essa espera for feita na linha principal do programa, tudo para junto — inclusive a tela, os logs e a possibilidade de você cancelar.
As quatro causas, da mais comum pra menos
Espera bloqueante sem limite de tempo
A campeã disparada. Uma função que fica em laço esperando resposta trava o programa inteiro quando a resposta não vem. Toda espera de rede precisa de prazo máximo. Ver check_win_v4 travando.
Varredura de dezenas de pares, um atrás do outro
Se cada par leva 1,5 segundo, 60 pares levam um minuto e meio — e aí a vela que você ia operar já passou. Não é travamento, é aritmética. Corte a lista pros pares que você realmente opera antes de tentar qualquer coisa mais sofisticada — ver em quantos pares rodar.
Gráfico ou impressão pesada dentro do laço
Desenhar gráfico a cada volta é caro, e imprimir centenas de linhas no console também — o terminal vira o gargalo. Guarde os dados e desenhe de vez em quando, fora do laço de decisão.
Threads colocadas “pra ficar mais rápido”
Thread não acelera espera mal feita — ela esconde. E esconde mal: duas threads mexendo na mesma variável de placar ou na mesma conexão produzem bug intermitente impossível de reproduzir. Antes de paralelizar, conserte a espera. Se depois disso ainda precisar de thread, separe por responsabilidade (uma só pra rede, uma só pra decisão) e nunca compartilhe estado sem cuidado.
Imprima uma linha com horário antes e depois de cada bloco lento (conectar, buscar velas, decidir, enviar, apurar). Rode uma vez. O bloco onde os dois horários ficam longe um do outro é o culpado — e normalmente não é o que você imaginava.
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