Execução de Ordens
Um limite de requisições (rate limit) da exchange é o número máximo de requisições de API, ou o peso máximo de requisições, que uma exchange aceita de um endereço IP ou chave de API em uma determinada janela de tempo; ultrapassá-lo retorna erros e, se continuar, um bloqueio (ban) temporário do IP ou da chave.
A automação faz muito mais requisições do que um humano: definir alavancagem, colocar a entrada, criar ordens de proteção, consultar posições e verificar execuções para cada sinal em cada conta. Os limites são compartilhados entre tudo que usa o mesmo IP ou chave, então um loop mal comportado pode bloquear ordens de todas as outras contas no mesmo servidor. Um bloqueio durante um mercado rápido é o pior caso: posições não podem ser abertas, e stops que existem apenas em software não podem ser movidos. Os limites também diferem entre exchanges e entre endpoints, então uma plataforma precisa orçá-los em vez de descobri-los ao atingi-los.
A AlgoVesta mantém o número de chamadas por ordem fixo e pequeno, e lê dados de mercado de feeds públicos compartilhados em vez de consultar a exchange uma vez por conta. Os orçamentos de requisições são rastreados por exchange e por chave, e quando uma plataforma responde com um limite de requisições ou um bloqueio, a chave ou o servidor afetado recua em vez de tentar novamente imediatamente; a condição é registrada e exposta no painel. Bloqueios reportados por uma testnet compartilhada são mantidos separados de bloqueios do mercado real, para que um ambiente de teste não possa tirar servidores de execução reais de rotação. Stops e alvos são colocados como ordens pendentes na plataforma, para que um limite temporário não deixe uma posição desprotegida. Dados históricos e outras leituras pesadas rodam em máquinas separadas, para que não possam consumir o orçamento dos servidores de execução. Veja lógica de novas tentativas e a página de exchanges suportadas.
Durante um pico de mercado, um canal de sinais dispara oito sinais em um minuto para uma conta. Cada um é executado com seu conjunto fixo de chamadas, bem dentro do orçamento por minuto da exchange; as posições são abertas com seus stops pendentes na exchange. Se a exchange tivesse retornado um erro de limite de requisições no meio do caminho, os sinais restantes teriam sido registrados como bloqueados com esse motivo, e a chave teria pausado antes da próxima tentativa em vez de disparar um bloqueio mais longo.