Esecuzione degli Ordini
La logica di ritentativo è l'insieme di regole che decide se una richiesta fallita verso un exchange o un broker debba essere inviata di nuovo, quante volte, dopo quanto tempo, e soprattutto quali richieste non devono mai essere ripetute perché ripeterle potrebbe piazzare un secondo ordine.
Le reti e le piattaforme falliscono in modi che appaiono identici dall'esterno: un timeout può significare che l'ordine non è mai arrivato, oppure che è stato accettato e la conferma è andata persa. Ritentare una lettura (saldo, posizioni, stato dell'ordine) è innocuo; ritentare il piazzamento di un ordine dopo un fallimento ambiguo può raddoppiare la posizione, un esito peggiore della perdita di un'operazione. I ritentativi interagiscono anche con i limiti di richieste (rate limit): una raffica di ritentativi durante un incidente di una piattaforma può far bandire temporaneamente un IP o una chiave, mettendo fuori uso ogni altro conto su quel server.
AlgoVesta distingue le letture dalle scritture. Le richieste di lettura, come il recupero delle posizioni, vengono ritentate una volta dopo una breve attesa; i piazzamenti di ordini non vengono ritentati ciecamente dopo un timeout, perché una conferma persa non è prova che l'ordine sia andato perso. Invece, la piattaforma riconcilia con la piattaforma (exchange/broker): vengono verificate le posizioni e la cronologia delle operazioni dell'exchange, e un ordine che risulta essere stato piazzato viene registrato anziché duplicato. Una protezione anti-duplicati rifiuta un secondo segnale identico per lo stesso conto, simbolo e direzione entro una breve finestra temporale, così un fornitore che ripubblica un messaggio non apre due posizioni. Quando una piattaforma restituisce una risposta di limite di richieste o di blocco (ban), la chiave o il server interessato rallenta invece di continuare a insistere, e la condizione viene mostrata nella dashboard. Gli ordini di protezione la cui creazione fallisce vengono ritentati e verificati, e sui conti forex una posizione il cui stop non può essere confermato viene chiusa per progettazione. Vedere idempotenza e limite di richieste (rate limit) dell'exchange.
Un ordine per comprare 0,05 BTC va in timeout dopo 10 secondi senza risposta. AlgoVesta non lo reinvia. Interroga le posizioni aperte e le esecuzioni recenti del conto, trova una nuova posizione long di 0,05 BTC che corrisponde all'ordine, la registra con il prezzo di esecuzione riportato dall'exchange, e piazza lo stop e l'obiettivo per essa. Se la verifica non avesse trovato nulla, il segnale sarebbe stato contrassegnato come fallito con il motivo del timeout, e il trader avrebbe potuto reinviarlo deliberatamente.