Tradovate API

Chiudere e liquidare le posizioni tramite l'API di Tradovate

Ogni trader automatizzato conosce quel momento: la sua strategia detiene una posizione e lei deve uscire da tutto subito. Ecco come la chiamata liquidatePosition dell'API di Tradovate azzera un contratto aperto, dal recupero dell'ID del conto alla chiusura dell'intero conto.

On This Page

Ogni trader automatizzato conosce quel momento: la sua strategia detiene una posizione, il mercato si sta girando contro di lei e deve uscire da tutto adesso. Cercare il pulsante di chiusura su una pagina web è troppo lento. È esattamente a questo che serve la chiamata liquidatePosition dell'API di Tradovate. Una sola richiesta azzera un contratto aperto, senza clic manuali nel DOM. Questa guida percorre l'intero cammino, dal recupero dell'ID del conto al ciclo su tutte le posizioni aperte, in modo che il conto risulti completamente flat.

Una precisazione su ciò che fa davvero questo endpoint: non annulla un ordine in attesa e non «vende qualche contratto». Cerca la posizione netta che detiene su un contratto e invia un ordine a mercato in direzione opposta per portare quella posizione netta a zero. Poiché è un ordine reale, viene eseguito solo mentre la sessione del contratto è aperta.

Prima di iniziare

  • Accesso API e un token valido. Deve avere API Access abilitato sul conto e un token di accesso valido. Se non l'ha ancora configurato, inizi da come ottenere l'accesso API di Tradovate e una chiave.
  • L'ambiente corretto. Demo e live sono host separati: demo.tradovateapi.com/v1 per la simulazione, live.tradovateapi.com/v1 per il denaro reale. Se usa un token demo sull'host live (o viceversa), otterrà «Access is denied».
  • Permesso di inserire ordini su quel conto. Il token deve appartenere a un utente che può inserire ordini sul conto che sta chiudendo.
  • Regole dei conti prop. Alcune prop firm disattivano l'automazione API diretta sui loro conti di valutazione. Controlli le regole attuali della sua società prima di sviluppare su un conto finanziato.

Chiudere e liquidare le posizioni tramite l'API di Tradovate: guida passo passo

1

Si autentichi e conservi il token

Ogni chiamata richiede un token Bearer. Invii le sue credenziali a /auth/accessTokenRequest ed estragga l'accessToken dalla risposta. I token non durano per sempre: se il suo processo resta attivo a lungo, chiami /auth/renewAccessToken prima della scadenza del token corrente, invece di attendere un 401. A ogni richiesta successiva alleghi l'header Authorization: Bearer YOUR_ACCESS_TOKEN.

2

Ottenga l'ID numerico del conto

La liquidazione fa riferimento a un ID conto numerico, non al nome del conto che vede nell'app. Invii un GET a /account/list e riceverà un array dei conti visibili al suo utente. Prenda il campo id (un numero come 2100) del conto che vuole chiudere. Se ha più conti, cerchi la corrispondenza sul campo name e usi poi l'id di quella riga.

3

Trovi le posizioni aperte e i loro ID contratto

Non può liquidare un contratto che non sa nominare. Chiami /position/list e guardi due campi di ogni riga: contractId e netPos. netPos è il numero con segno dei contratti detenuti. Positivo significa long, negativo significa short e zero significa che è già flat su quel contratto. Ogni riga in cui netPos non è zero è una posizione aperta che potrebbe voler chiudere. Annoti il contractId. Se desidera un simbolo leggibile per il log, passi quell'ID a /contract/item?id={contractId}.

4

Avvii la liquidazione

Ora la chiamata vera e propria. Invii un POST a /order/liquidatePosition con l'ID conto e l'ID contratto appena raccolti, inviando nel body accountId, contractId e un booleano admin. Qui ci sono alcuni dettagli su cui molti inciampano.

5

Chiuda tutto, poi verifichi

L'API REST non ha un unico pulsante «chiudi tutto». Per portare l'intero conto a flat deve eseguire un ciclo. Recuperi /position/list, tenga le righe in cui netPos non è zero e chiami /order/liquidatePosition una volta per ogni contractId. Due contratti aperti? Due chiamate. Poi verifichi: recuperi di nuovo /position/list e ogni netPos dovrebbe essere 0. Vale anche la pena consultare /order/list per assicurarsi che gli ordini bracket o OCO collegati a quelle posizioni siano stati effettivamente cancellati, così che uno stop residuo non la riporti in posizione più tardi.

Campo Che cos'è
accountIdObbligatorio. L'id numerico del passaggio 2.
contractIdObbligatorio e deve essere maggiore di 0. Passare 0 genera «contractId must be > 0». Usi il vero ID da /position/list.
adminUn booleano che il body si aspetta. I conti normali passano false. Ometterlo è la classica causa di un 400.
customTag50Facoltativo. Una breve stringa da allegare come tag per il suo tracciamento.

Il server calcola da solo la sua posizione netta e invia l'ordine a mercato per chiuderla. Se la posizione è già tornata flat tra il suo controllo e questa chiamata, ottiene un'operazione nulla innocua anziché un'operazione opposta accidentale, quindi non deve sincronizzarsi alla perfezione.

Quando non funziona

La maggior parte degli errori si riduce a tre cause. Un 401 «Access is denied» significa quasi sempre host dell'ambiente sbagliato, ID conto errato o utente senza permesso di inserire ordini su quel conto. contractId must be > 0 significa che ha inviato un segnaposto anziché un ID reale. E un semplice 401 con token scaduto richiede solo un rinnovo. Se è l'ordine di liquidazione stesso a essere rifiutato, il motivo è di solito lo stesso che blocca qualsiasi ordine: consulti quindi la guida generale su access denied al place order e verifichi che il mercato sia aperto.

Automatizzi tutto questo con PickMyTrade

Non vuole occuparsi di persona di token, cicli sulle posizioni e logica di liquidazione? PickMyTrade collega i suoi alert di TradingView direttamente a Tradovate, così ingressi, uscite e comandi di chiusura vengono eseguiti automaticamente senza che lei scriva una sola riga di codice API.

Dimentichi i cicli di liquidazione

Lasci che PickMyTrade colleghi i suoi alert di TradingView direttamente a Tradovate: ingressi, uscite e comandi di chiusura vengono eseguiti automaticamente.

Inizi la prova gratuita di 7 giorni

Domande frequenti

Di solito dipende dall'host dell'ambiente sbagliato, dall'ID conto errato o da un utente senza permesso di inserire ordini su quel conto. I token demo funzionano solo con demo.tradovateapi.com/v1 e i token live solo con live.tradovateapi.com/v1.

Ha inviato un segnaposto invece di un vero ID contratto. Recuperi il contractId effettivo da /position/list prima di chiamare liquidatePosition.

No. Cerca soltanto la sua posizione netta su un contratto e invia un ordine a mercato di segno opposto per azzerarla. Dopo la liquidazione, controlli separatamente /order/list per confermare che gli ordini bracket o OCO collegati a quella posizione siano stati effettivamente cancellati.

Questa guida ha scopo esclusivamente educativo e informativo e non costituisce consulenza finanziaria, di investimento o di trading. Il trading di futures e di altri prodotti a leva comporta un rischio di perdita sostanziale e non è adatto a tutti gli investitori. PickMyTrade è una piattaforma di automazione indipendente di terze parti e non è affiliata, approvata o sponsorizzata da Tradovate, Inc. «Tradovate» e tutti i nomi, loghi e marchi correlati sono di proprietà dei rispettivi titolari. Le funzionalità e i passaggi della piattaforma cambiano nel tempo, quindi confermi sempre la procedura attuale nella piattaforma e nella documentazione ufficiali di Tradovate prima di agire.