Execução de Ordens
Lógica de novas tentativas é o conjunto de regras que decide se uma requisição falha para uma exchange ou corretora é reenviada, quantas vezes, depois de quanto tempo e, mais importante, quais requisições nunca devem ser repetidas porque repeti-las poderia colocar uma segunda ordem.
Redes e plataformas falham de formas que parecem idênticas de fora: um timeout pode significar que a ordem nunca chegou, ou que ela foi aceita e a confirmação se perdeu. Repetir uma leitura (saldo, posições, status de ordem) é inofensivo; repetir a colocação de uma ordem após uma falha ambígua pode duplicar a posição, o que é um resultado pior do que perder um trade. As novas tentativas também interagem com os limites de requisições (rate limits): uma rajada de tentativas durante um incidente na plataforma pode fazer um IP ou uma chave serem temporariamente bloqueados, derrubando com eles todas as outras contas naquele servidor.
A AlgoVesta distingue leituras de escritas. Requisições de leitura, como buscar posições, são repetidas uma vez após uma breve espera; a colocação de ordens não é repetida cegamente após um timeout, porque uma confirmação perdida não é prova de que a ordem foi perdida. Em vez disso, a plataforma concilia com a praça: as posições e o histórico de negociações da exchange são verificados, e uma ordem que acabou sendo colocada é registrada em vez de duplicada. Uma proteção contra duplicidade rejeita um segundo sinal idêntico para a mesma conta, símbolo e direção dentro de uma janela curta, para que a republicação de uma mensagem por um provedor não abra duas posições. Quando uma plataforma retorna uma resposta de limite de requisições (rate limit) ou de bloqueio, a chave ou o servidor afetado recua em vez de martelar a plataforma, e a condição é mostrada no painel. Ordens de proteção que falham ao ser criadas são repetidas e verificadas, e em contas de forex uma posição cujo stop não pode ser confirmado é fechada por design. Veja idempotência e limite de requisições (rate limit) da exchange.
Uma ordem para comprar 0,05 BTC atinge o tempo limite após 10 segundos sem resposta. A AlgoVesta não a reenvia. Ela consulta as posições abertas e execuções recentes da conta, encontra uma nova posição comprada de 0,05 BTC que corresponde à ordem, registra-a com o preço de execução da exchange, e coloca o stop e o alvo para ela. Se a consulta não tivesse encontrado nada, o sinal teria sido marcado como falho com o motivo do timeout, e o trader poderia reenviá-lo deliberadamente.