Come risolvere lo slittamento di prezzo negli ordini limit via API/webhook di Tradovate
Il vostro alert dice 4100 e l'ordine attivo mostra 4100,50. Niente ha attraversato il mercato, il prezzo è stato semplicemente arrotondato da qualche parte tra il vostro alert e il book. Ecco perché, e come fermarlo.
Impostate la vostra strategia per chiudere a 4100. L'alert scatta, il messaggio dice chiaramente 4100, eppure l'ordine attivo compare a 4100,50. Niente ha attraversato il mercato, niente è stato eseguito a un prezzo sbagliato, il numero è semplicemente cambiato da qualche parte tra il vostro alert e il book degli ordini. È esasperante, ed è il tipo di cosa che le persone chiamano “slippage” pur sapendo silenziosamente che non è esattamente quello.
Ecco la versione breve: i prezzi dei futures non vivono su una retta numerica continua. Esistono solo su una griglia fissa di tick. Se il prezzo che la vostra strategia consegna non è un multiplo esatto di quella griglia, qualcosa deve arrotondarlo, e la direzione in cui arrotonda raramente è quella che avevate in mente. Correggete dove il prezzo viene allineato, e assicuratevi che il limit non sia sul lato sbagliato del mercato, e il mezzo punto fantasma scompare.
Questa guida ripercorre perché il prezzo si muove, come individuare quale delle tre cause abituali vi sta colpendo, ed esattamente cosa cambiare affinché i vostri limit atterrino sul numero che intendevate.
Cosa significa davvero «slippage» qui
Vale la pena separare due cose molto diverse, perché la soluzione dipende da quale delle due avete.
Lo slippage reale avviene su un ordine a mercato: accettate qualunque cosa il book vi offra, e in un mercato veloce o poco liquido sono alcuni tick peggiori dell'ultimo prezzo. Non c'è alcun prezzo da proteggere, quindi non c'è nulla da debuggare, è esattamente l'operazione che avete richiesto.
Ciò che state osservando è diverso. Un ordine limit porta un prezzo specifico, e quel prezzo viene trasformato prima di posarsi sul book. Il numero nel vostro alert e il numero sull'ordine attivo non corrispondono. Non è il mercato che si muove contro di voi; è il vostro prezzo che viene rimodellato in transito. Buona notizia: i prezzi rimodellati sono prevedibili, e prevedibile significa risolvibile.
Perché il prezzo si allontana dal vostro obiettivo
Tre meccanismi causano quasi ogni caso. Possono sommarsi, quindi vale la pena conoscerli tutti e tre anche se oggi solo uno vi sta colpendo.
1. Il prezzo non è sulla griglia dei tick
Ogni contratto ha un incremento minimo fisso. Inviate un prezzo che cade tra due tick legali e verrà arrotondato al più vicino. Non è un bug, un prezzo fuori griglia semplicemente non può esistere sulla borsa, quindi deve agganciarsi da qualche parte.
Il problema è che contratti diversi si agganciano a dimensioni diverse, ed è facile presumere quella sbagliata:
| Contratto | Tick size | Prezzi legali vicino a 4100 / 75,00 / 2050 |
|---|---|---|
| ES, NQ, MES, MNQ | 0,25 | 4100,00, 4100,25, 4100,50, 4100,75 |
| CL (petrolio greggio) | 0,01 | 75,00, 75,01, 75,02, 75,03 |
| GC, MGC (oro) | 0,10 | 2050,00, 2050,10, 2050,20 |
| YM, MYM (Dow) | 1,0 | 42100, 42101, 42102 |
Supponiamo che la vostra logica calcoli un'uscita sull'oro a 2050,05. Quel prezzo non esiste, GC si muove a decimi, quindi si arrotonda a 2050,00 o 2050,10, e ora la vostra uscita “5 centesimi migliore” è distante un decimo. Verificate l'incremento attuale nella pagina delle specifiche del contratto della borsa prima di fidarvi di questi numeri; la borsa può modificare un tick size, e i contratti micro non sempre corrispondono al loro gemello a dimensione piena.
2. La matematica in virgola mobile vi spinge oltre un tick
Questa è la causa subdola, e di solito è dietro il classico reclamo “inviato 4100, ottenuto 4100,50”. ES scambia in quarti, quindi sia 4100,00 sia 4100,50 sono perfettamente legali. Il prezzo non si è arrotondato perché era fuori griglia, si è arrotondato perché il valore effettivamente calcolato dalla vostra strategia non era il pulito 4100 che avete visto nel testo dell'alert.
Le strategie raramente codificano un'uscita in modo fisso. La calcolano: un'entrata meno un offset, un valore di media mobile, una percentuale di un range. Fatelo in virgola mobile e otterrete numeri come 4100,4999999 o 4100,3700001. Arrotondate quello al quarto più vicino e potete facilmente atterrare a mezzo punto da dove il numero tondo nel vostro alert faceva sembrare che sareste atterrati. Il messaggio dell'alert e il campo del prezzo possono persino discordare, perché uno è testo visualizzato e l'altro è il valore effettivamente inviato.
3. Il limit è già oltre il mercato
Questo è vero slippage travestito da ordine limit. Un limit di acquisto con prezzo sopra l'ask attuale, o un limit di vendita con prezzo sotto il bid attuale, è “eseguibile immediatamente”, può riempirsi subito al miglior prezzo disponibile invece di posarsi. Quindi se la vostra strategia calcola un limit sul lato sbagliato del mercato (un errore di segno comune: sottrarre un offset quando intendevate sommarlo), l'ordine attraversa lo spread e si riempie a un prezzo che non assomiglia affatto al vostro numero.

L'indizio: gli errori di arrotondamento vi spostano di uno o due tick, sempre in un modo che ha la forma di un arrotondamento. Un limit eseguibile immediatamente vi colloca ovunque fosse il book, il che può essere diversi tick e sempre dal lato che vi costa. Se il divario è maggiore di un tick e sistematicamente contro di voi, sospettate del lato del book, non della griglia.
Come risolverlo, passo dopo passo
Leggete il tick size reale del contratto
Non date per scontato, cercatelo per il contratto esatto che state negoziando. Prendete il tick size dai dettagli contratto della piattaforma, dalla pagina delle specifiche della borsa, o dall'API, dove ogni oggetto contratto espone un campo tickSize (insieme a priceFormat e priceFormatType che vi dicono come il prezzo viene scalato e visualizzato). I contratti micro e a dimensione piena possono condividere un tick, ma non sempre, e i rollover trimestrali non cambiano il tick ma cambiano il simbolo.
Arrotondate ogni prezzo al tick prima che lasci la vostra strategia
Rendete l'arrotondamento esplicito e fatelo come ultimo passaggio prima dell'invio. Lo schema è lo stesso in qualsiasi linguaggio:rounded = round(rawPrice / tickSize) * tickSize
Per ES con un tick di 0,25, un valore grezzo di 4100,37 diventa round(4100.37 / 0.25) * 0.25 = round(16401.48) * 0.25 = 16401 * 0.25 = 4100.25. Ora sapete con precisione quale prezzo sta uscendo, perché lo avete calcolato voi, non il router. Se volete garantire di non attraversare mai il mercato, arrotondate un limit di acquisto verso il basso al tick e un limit di vendita verso l'alto, questo mantiene l'ordine passivo.
Eliminate la deriva in virgola mobile
Anche dopo l'arrotondamento, minuscoli errori di frazione binaria possono lasciarvi con 4100,2500001. Agganciate il risultato alla precisione decimale del contratto prima dell'invio, formattate ES/NQ a due decimali, l'oro a due, il greggio a due, il Dow a zero. Inviate il prezzo come numero pulito nel campo, e non affidatevi al testo dell'alert leggibile dall'uomo per trasportarlo; il valore nel payload è ciò che viene effettivamente piazzato.
Controllate su quale lato del book si trova il limit
Prima di incolpare l'arrotondamento, confermate la direzione. Per un acquisto in attesa, il limit dovrebbe essere al livello o sotto il prezzo attuale; per una vendita in attesa, al livello o sopra. Se il vostro prezzo calcolato attraversa quella linea, avete trovato un limit eseguibile immediatamente, e la soluzione sta nella vostra matematica dell'offset, controllate il segno e se state lavorando in tick invece che in punti. Cinque “tick” su ES sono 1,25 punti, non 5,00; confondere questo manda il prezzo clamorosamente fuori posto e spesso completamente sul lato sbagliato.
Verificate che l'ordine attivo corrisponda
Piazzate un ordine su un conto simulato e rileggetelo. Il prezzo dell'ordine attivo nel pannello Ordini dovrebbe essere uguale al numero a cui avete arrotondato, al tick. Se corrisponde, avete finito. Se non corrisponde, registrate il prezzo grezzo esatto, il tick size usato, e il valore arrotondato inviato, quindi confrontateli: la discrepanza è quasi sempre in uno di questi tre input, non nella piattaforma.


Se state instradando tramite un webhook o un ponte
Quando un alert di TradingView guida l'ordine tramite un ponte, c'è un passaggio aggiuntivo in cui il prezzo può derivare. L'alert scatta con un valore, il ponte mappa quel valore in un payload d'ordine, e il payload è ciò che raggiunge il broker. Due cose mantengono tutto onesto.
Primo, fate della strategia l'unica fonte di verità per il prezzo, arrotondate al tick dentro la vostra logica Pine e passate quel numero esatto, già arrotondato, all'alert, invece di inviare una chiusura grezza sperando che il sistema a valle la arrotondi come vorreste. Secondo, confermate che il campo letto dal ponte sia il campo del prezzo, non un'etichetta.
Stanchi di arrotondare i prezzi a mano e di inseguire dove si è insinuato mezzo tick? PickMyTrade instrada i vostri alert di TradingView verso Tradovate e gestisce l'allineamento ai tick per voi, così il limit che lascia la vostra strategia è il limit che atterra sul book.
Come evitare che si ripresenti
Una volta risolto, alcune abitudini ne impediscono il ritorno:
- Arrotondate nella strategia, sempre. Non inviate mai un prezzo calcolato grezzo lasciando che qualcosa a valle decida il tick.
- Registrate valore grezzo e arrotondato. Tenete entrambi i valori nei vostri log così un tick fuori posto è un confronto di due secondi, non un mistero.
- Testate prima in simulazione. Fate scattare l'alert su un conto simulato e controllate a occhio il prezzo attivo prima di affidargli una size reale.
- Lavorate in tick, non in punti, per gli offset. Decidete in anticipo in quale unità sono i vostri offset e convertite una sola volta, in un solo punto.
- Tenete d'occhio anche le gambe del bracket. I prezzi di stop e target si arrotondano allo stesso modo; se le vostre gambe protettive atterrano fuori posto, si applica la stessa correzione di arrotondamento. Se quelle gambe non si agganciano affatto, è un problema diverso, vedete la nostra guida sui fallimenti degli ordini bracket (OSO/OCO) dell'API di Tradovate.
Smettete di arrotondare i prezzi a mano
PickMyTrade instrada i vostri alert di TradingView verso Tradovate e gestisce l'allineamento ai tick per voi, così il limit che lascia la vostra strategia è il limit che atterra sul book.
Iniziate la vostra prova gratuita di 5 giorniDomande frequenti
Di solito no. Lo slippage reale è un ordine a mercato che si riempie peggio della quotazione perché il book si è mosso. Un limit che atterra a un tick o mezzo tick dal vostro alert è stato trasformato prima di raggiungere il book, arrotondato a un tick legale, spostato dalla matematica in virgola mobile, o inviato attraverso il mercato come un limit eseguibile immediatamente. Solo l'ultimo è vero slippage; gli altri due sono un problema di formattazione che controllate voi.
ES scambia in incrementi di 0,25, quindi da 4100,00 a 4100,75 sono tutti legali. Se la vostra strategia calcola il limit da un valore di barra o un offset, il numero grezzo è spesso qualcosa come 4100,37 o 4100,4999 e si arrotonda al quarto più vicino, a volte il mezzo punto sopra quanto vi aspettavate. Arrotondate voi stessi il prezzo al tick e registrate i valori grezzi e arrotondati.
Leggetelo dai dettagli contratto della piattaforma, dalla pagina delle specifiche della borsa, o dal campo tickSize dell'API sull'oggetto contratto. Come riferimento rapido: ES, NQ, MES e MNQ scambiano a 0,25; il greggio (CL) a 0,01; l'oro (GC) a 0,10; il Dow (YM) a 1,0. Verificate la specifica attuale prima di affidarvici.
Elimina la sorpresa dell'arrotondamento, poiché un ordine a mercato non ha un prezzo da arrotondare, ma si riempie a qualunque cosa offra il book, il che in un mercato veloce può essere peggio di un limit corretto. Se il controllo del prezzo era l'obiettivo, mantenete il limit e risolvete l'arrotondamento. Se vi serve solo l'esecuzione, un ordine a mercato è più semplice.
No, la griglia dei tick è fissata dalla borsa, quindi è identica su conti di valutazione, finanziati e personali. Ciò che varia da società a società sono quali contratti e tipi di ordine sono consentiti e le regole di rischio, e questo si manifesta come rifiuti, non come prezzi spostati. Se il vostro prezzo atterra fuori bersaglio, controllate l'allineamento e l'instradamento, e verificate le regole attuali della vostra società per qualsiasi cosa specifica del tipo di ordine.
Questa guida ha finalità esclusivamente educative e informative e non costituisce consulenza finanziaria, di investimento o di trading. Il trading di futures e altri prodotti a leva comporta un rischio sostanziale di perdita e non è adatto a tutti gli investitori. PickMyTrade è una piattaforma di automazione di terze parti indipendente e non è affiliata, sostenuta o sponsorizzata da Tradovate, Inc. o Bookmap. Tutti i nomi, i loghi e i marchi correlati sono di proprietà dei rispettivi titolari. Le funzionalità e i passaggi della piattaforma cambiano nel tempo, quindi verificate sempre la procedura attuale nella documentazione ufficiale della piattaforma prima di agire.