O robô faz uma entrada e não entra mais
Quase sempre não é a corretora nem a conexão: é uma variável de controle do loop que fica presa no estado “operando” e nunca volta pra “livre”.
A causa mais comum
Robôs que esperam o resultado da ordem antes de liberar a próxima análise
costumam usar uma flag tipo operando = True. Se o trecho que deveria voltar essa
flag pra False depende de uma resposta da API que não chega sempre (timeout,
reconexão, exceção silenciosa), o robô fica travado nesse estado pra
sempre — sem erro no log, porque tecnicamente nada quebrou.
operando = True
resultado = api.check_win_v4(id_ordem) # se isto travar ou lancar excecao,
operando = False # esta linha nunca roda
Como resolver
Coloque a liberação da flag num finally
Assim ela roda mesmo se a checagem de resultado explodir no meio:
operando = True
try:
resultado = api.check_win_v4(id_ordem)
finally:
operando = False
Ponha um teto de tempo pra espera do resultado
Se depois de N segundos a corretora não respondeu, trate como falha e libere o loop — melhor perder uma checagem de resultado do que travar o robô o dia inteiro.
Print da variável de controle logo antes do loop pular a análise. Se ela
estiver presa em True muito tempo depois da ordem ter fechado, o problema
é esse, não conexão.
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