Binaryzando Todos os erros →

get_candles voltando None no meio da catalogação

None aqui não é um valor — é a ausência de resposta. A função pediu velas, não recebeu, e devolveu nada. Tapar isso com um if faz o programa chegar até o fim sem ativo nenhum selecionado, que é exatamente o relato mais comum.

TypeError: 'NoneType' object is not subscriptable / is not iterable

O que está acontecendo

A catalogação roda um laço pedindo velas de dezenas de pares, um atrás do outro. Basta um desses pedidos voltar vazio pra linha seguinte estourar, porque ela tenta ler uma lista que não existe.

Os motivos de voltar vazio são quase sempre estes: o par não está aberto naquele momento; o nome do par mudou ou não existe naquela conta; você pediu velas rápido demais e a corretora limitou; ou a conexão caiu no meio da varredura sem você perceber.

Como resolver

Separe “não veio” de “veio vazio”

São problemas diferentes e merecem tratamento diferente:

velas = api.get_candles(par, tf, qtd, time.time())
if velas is None:
    # falhou a chamada -> vale tentar de novo
elif len(velas) < qtd:
    # veio menos do que pedi -> par sem histórico suficiente
else:
    # ok

Tente de novo com espera, no par que falhou

Se a causa foi limite de chamadas, insistir na hora piora. Espere e repita só aquele par, duas ou três vezes, com pausa crescente — em vez de abortar a varredura inteira.

Não pule o par calado: anote por que ele saiu

Aqui está o motivo de o programa terminar “sem nenhum ativo para seleção”. Se o if apenas ignora, no fim você não tem erro e não tem resultado. Guarde numa lista de descartados o par e o motivo, e imprima isso no fim — aí a lista vazia deixa de ser mistério.

Devagar é mais rápido

Uma pausa pequena entre pares faz a varredura demorar alguns segundos a mais e evita a limitação que faz você perder metade dos pares e ter que rodar tudo de novo.

Se acontece sempre no MESMO par

Aí não é limite nem conexão: é o nome. Liste os pares abertos que a conta enxerga e compare com a sua lista fixa — sufixo -op, -OTC, maiúscula e minúscula fazem diferença. Ver asset is not available.

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