Skip to main content
Quando invii un ordine, la catena gli assegna un ID ordine. Quell’ID fa fede, ma lo conosci solo dopo che l’ordine è stato accettato — il che è un problema se quello che devi fare è annullare un ordine di cui non hai mai visto l’accettazione. Un ID ordine client risolve la questione. Generi tu stesso l’identificatore, lo alleghi all’invio e puoi agire sull’ordine tramite quell’identificatore dal momento in cui lo invii.

Perché conta più di quanto sembri

Immagina un invio che va in timeout. È arrivato alla catena? Non lo sai. Senza un ID ordine client le opzioni sono interrogare gli ordini recenti e tirare a indovinare per mercato, lato, prezzo e quantità, oppure non fare nulla e sperare. Con un ID, l’ambiguità sparisce. Annulli tramite l’identificatore che hai generato. Se l’ordine esisteva, viene annullato. Se non è mai arrivato, l’annullamento non trova nulla. In entrambi i casi finisci in uno stato noto, che è ciò di cui ha davvero bisogno un sistema che gira senza una persona a guardarlo. È anche ciò che rende trattabile la riconciliazione. I tuoi registri sono indicizzati su un identificatore che hai assegnato tu, quindi confrontare la tua visione con quella della catena è una ricerca diretta e non un’euristica.

Formato

L’identificatore è un valore da 16 byte, inviato come stringa esadecimale minuscola di 32 caratteri con prefisso 0x.
Tre regole che il protocollo applica:
  • Solo minuscole. L’esadecimale maiuscolo viene rifiutato, non normalizzato.
  • Lunghezza esatta. I valori più corti o più lunghi vengono rifiutati.
  • Il valore tutto zeri è riservato. 0x00000000...0000 è la sentinella che significa assente e non può essere usata come identificatore.
Il campo è facoltativo. Un ordine che ne è privo si comporta normalmente sotto ogni aspetto: semplicemente non può essere annullato tramite ID ordine client, ma solo tramite l’ID ordine assegnato dalla catena.

Unicità

L’unicità ha come ambito il sottoconto: la combinazione dell’indirizzo firmatario e del sottoconto che vi appartiene. Da qui due conseguenze. Sottoconti diversi sotto lo stesso indirizzo possono usare lo stesso identificatore senza conflitto — utile quando esegui strategie indipendenti che generano ciascuna i propri ID. E dentro un singolo sottoconto, riutilizzare un identificatore che appartiene a un ordine attivo è un errore, non una sostituzione.
Genera gli identificatori in modo casuale anziché sequenziale. Un contatore è allettante perché rende visibile l’ordine cronologico, ma un riavvio che perde il contatore produce collisioni con ordini ancora attivi, e 16 byte casuali in pratica non collidono mai.

Cosa puoi farci

Durata

L’identificatore appartiene all’ordine, non alla tua sessione. Resta interrogabile dopo che l’ordine è stato eseguito o annullato, ed è questo a renderlo utile per la riconciliazione a posteriori. Diventa riutilizzabile quando l’ordine che identificava non è più attivo. In pratica c’è poco motivo di riutilizzarlo: un nuovo valore casuale non costa nulla ed elimina ogni dubbio su quale ordine indichi un record storico.

Dove proseguire

Modificare gli ordini

Cambiare un ordine attivo, e cosa succede ai suoi identificatori.

Tipi di ordine

A cosa puoi allegare un identificatore.

Sviluppatori

Inviare ordini e gestire risposte ambigue nel codice.

Sequenziamento delle transazioni

Perché un annullamento inviato nello stesso blocco viene eseguito prima di un ordine aggressivo.