O robô conta como loss a entrada que nem aconteceu
É um dos bugs mais caros do nicho porque ele não quebra nada: o robô segue rodando e só o placar fica errado. Toda estatística olhada depois — e toda decisão tomada em cima dela — está contaminada.
Por que acontece
Quase sempre por causa de um único else. O código pergunta
“deu win?” e, quando a resposta não é um sim claro, trata como derrota:
if resultado == 'win':
wins += 1
else:
losses += 1 # <- aqui cai TUDO que nao foi win
Nesse else cai muito mais coisa do que perda de verdade: par fechado, ordem
recusada, timeout de
confirmação, conexão que caiu, valor abaixo do mínimo, payout abaixo
do configurado — e empate, que normalmente devolve o dinheiro.
Por que é pior do que parece
Você não perdeu dinheiro nessas “derrotas”. Mas o robô acha que
perdeu — então ele dispara gale pra recuperar um prejuízo que
nunca existiu, e passa a arriscar valor inflado sem motivo. O placar mostra uma assertividade
pior que a real, e você pode descartar uma estratégia boa por causa de um
else.
Como consertar
Use quatro estados, nunca dois
Resultado de operação não é sim-ou-não. São pelo menos quatro casos, e um deles não é resultado nenhum:
if resultado == 'win': wins += 1
elif resultado == 'loss': losses += 1
elif resultado == 'empate': empates += 1
else: nao_operou += 1 # nao entra no placar
Só conte o que virou ordem de verdade
Se a corretora recusou, não houve operação — logo não há win nem loss. Registre num contador à parte, com o motivo. Esse contador vale ouro: “40 entradas puladas por par fechado” explica um dia inteiro que você acharia estranho.
Não dispare gale fora de perda confirmada
O gale só pode ser acionado por loss, nunca pelo “resto”.
Gale disparado por recusa é dinheiro real arriscado por um evento que não custou
nada.
Confira o placar contra o extrato, uma vez
Rode um dia e compare o placar do robô com o histórico da corretora. Se a quantidade de operações não bater, o problema está aqui — e nenhuma análise feita antes dessa conferência vale.
Quando o resultado vem errado da própria função de apuração (empate contado como derrota, valor zerado), o sintoma é o mesmo e a causa é outra — ver check_win_v4 travando ou mentindo.
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