Errore 408 Request Timeout dell'API Tradovate (1 connessione)
Un errore 408 su Tradovate non è un timeout dovuto a una rete lenta. Significa che ha superato il numero di connessioni che il Suo account può mantenere contemporaneamente, e un account standard ne ha diritto a una sola.
Ha un bot che comunica con l'API di Tradovate, gli ordini scorrono regolarmente, e poi all'improvviso le chiamate iniziano a restituire 408 Request Timeout. Sulla maggior parte dei server, un 408 significa “è stato troppo lento, ho smesso di aspettare”. Su Tradovate significa qualcosa di completamente diverso, e una volta capito cosa le sta davvero dicendo, la soluzione richiede circa trenta secondi. Qui un 408 è il modo in cui Tradovate le dice che ha superato il numero di connessioni che il Suo account può mantenere contemporaneamente. Un account standard ottiene esattamente una connessione simultanea. Se l'app web Trader, una sessione REST e la Sua automazione competono tutte per quell'unico posto, le connessioni in eccesso vengono respinte con un 408. Chiuda tutto ciò che è connesso come Lei, si assicuri che si connetta una sola cosa alla volta, e l'errore scompare. Un bridge gestito come PickMyTrade evita del tutto il problema mantenendo per Lei una connessione pulita.
Checklist rapida per l'errore 408 Request Timeout
- Chiuda l'interfaccia Trader. Se ha Tradovate Trader aperto in una scheda del browser, nell'app desktop o sul telefono, sta occupando la Sua unica connessione, lo chiuda prima di avviare il bot.
- Elimini le istanze duplicate. Uno script che si è bloccato o riavviato senza disconnettersi lascia una sessione fantasma. Verifichi che solo una copia della Sua app si stia autenticando.
- Un accesso alla volta. Non avvii due accessi in parallelo per lo stesso account, scaglioni l'avvio in modo che la vecchia sessione termini prima che la nuova si connetta.
- Rinnovi, non riautentichi. Usi
/auth/renewAccessTokenper estendere la sessione invece di accedere di nuovo a ogni ciclo, il che accumula un maggiore ricambio di connessioni. - Le servono entrambi? Ottenga il secondo posto. Per osservare Trader e far girare un bot contemporaneamente, serve il componente aggiuntivo a due connessioni, un solo posto non basta per entrambi.
- Mantenga il socket attivo. Invii un heartbeat ogni 2,5 secondi affinché un WebSocket inattivo non venga interrotto forzando una riconnessione disordinata.
Cosa significa "408 Request Timeout" su Tradovate
Nell'HTTP standard, 408 Request Timeout indica che il server ha comunicato al client di aver atteso troppo a lungo l'arrivo della richiesta e ha chiuso la connessione. Tradovate riutilizza questo codice di stato per uno scopo proprio. Su questa API, un 408 si verifica quando si supera il numero massimo di connessioni simultanee associate al proprio utente. Non riguarda la latenza di rete né un corpo della richiesta lento, è un segnale di capacità. La piattaforma sta dicendo: “troppi accessi risultano attivi con le Sue credenziali in questo momento”.
Questo cambio di prospettiva è importante, perché se insegue un 408 come un normale timeout, aumentando i timeout delle richieste, riprovando con più insistenza, incolpando il Suo VPS, non arriverà da nessuna parte. Il numero da osservare non è la latenza. È quante cose risultano autenticate sul Suo account nell'esatto momento in cui si verifica l'errore.
Una sola connessione. Questa è tutta la storia.
Ecco la regola che spiega quasi ogni 408: un utente Tradovate standard ottiene una singola connessione stabilita con l'API per account. Quell'unico posto è condiviso da tutto ciò che si autentica come Lei, l'app web Trader, l'app desktop Trader, l'app mobile, una sessione REST e il WebSocket dei dati di mercato aperto dal Suo bot. Non hanno ciascuno una propria linea. Competono tutti per la stessa.
Tradovate spiega direttamente la conseguenza: accedere a Tradovate Trader termina la Sua sessione API REST e WebSocket, e vale anche il contrario. Quindi, se il Suo bot sta tranquillamente trasmettendo quotazioni e Lei apre Trader in una scheda del browser per controllare un'esecuzione, uno dei due deve cedere. Quello che viene estromesso inizia a restituire 408. Al contrario, il bot si riconnette mentre Trader è aperto, e ora è Trader a disconnettersi. Sembra casuale finché non si rende conto che c'è sempre stato spazio per uno solo.

Principali cause del 408 su Tradovate
1. L'app Trader è aperta mentre il bot è in esecuzione
Questo è il colpevole più comune. Lascia Tradovate Trader aperto su un secondo monitor, sul telefono o in una scheda del browser dimenticata, poi avvia l'automazione. Il bot si connette, occupa il posto, e Trader, o il bot, a seconda dei tempi, inizia a ricevere 408. Conta qualsiasi cosa mostri una sessione Tradovate attiva, inclusa l'app mobile in esecuzione silenziosa in background.
2. Un riavvio o un crash ha lasciato una sessione fantasma
Lo script si blocca, si riavvia e accede di nuovo, ma la sessione precedente non si è mai disconnessa correttamente lato server. Per una breve finestra temporale mantiene due sessioni contro un account con un solo posto, e la nuova connessione accumula 408 finché quella vecchia non scade. I cicli di riavvio automatico peggiorano la situazione, perché possono accumulare accesso dopo accesso prima che uno di essi scada.
3. La stessa chiave API in esecuzione da due luoghi
Le distribuzioni cloud sono note per questo. Un gruppo di auto-scaling avvia un secondo container, oppure lascia una copia in esecuzione sul portatile e un'altra su un VPS, ed entrambe si autenticano con le stesse credenziali. Ogni nuovo accesso compete con gli altri per l'unica connessione, e i 408 non si placano mai perché nulla cede mai.
4. Un ciclo di riconnessione troppo aggressivo
Quando un socket si interrompe, un client ingenuo si riconnette immediatamente, e se si interrompe per un altro motivo (un heartbeat mancato, ad esempio), finisce per martellare l'accesso. Quel flusso di tentativi di connessione fa sia superare il limite di connessioni sia aumentare il traffico delle richieste, quindi i 408 possono mescolarsi anche a penalità di rate limit.
Come risolvere il 408 Request Timeout: passo dopo passo
Liberi la Sua unica connessione
Chiuda tutto il resto che accede come Lei. Esca da Tradovate Trader in ogni scheda del browser, chiuda l'app desktop e chiuda completamente l'app mobile (non solo in background). Attenda qualche secondo affinché la sessione venga effettivamente rilasciata sul server. Questo unico passaggio risolve la maggior parte dei 408, perché il più delle volte la connessione “extra” è semplicemente Trader rimasto aperto.
Individui le sessioni duplicate
Verifichi la presenza di una copia obsoleta della Sua app. Se il bot si è bloccato ed è stato riavviato, un vecchio processo potrebbe essere ancora autenticato. Su un server, elenchi i processi in esecuzione e confermi che è attiva esattamente un'istanza. In una configurazione cloud scalata, si assicuri che un solo nodo si autentichi mai per un dato account, fissi la connessione a un worker invece di lasciare che ogni replica effettui l'accesso.
Scaglioni gli accessi e rinnovi, non riautentichi
Progetti l'avvio in modo che una nuova sessione attenda che quella vecchia termini prima di connettersi. E invece di chiamare l'endpoint di accesso a ogni ciclo, il che genera nuovo ricambio di connessioni, estenda la sessione che ha già. Invii una POST a /auth/renewAccessToken con il token ancora valido per ottenere una nuova scadenza senza aprire una sessione del tutto nuova. Meno accessi significano meno occasioni di superare il limite di connessioni.
Se ha davvero bisogno di entrambe le cose insieme, aggiunga il secondo posto
Alcuni flussi di lavoro hanno davvero bisogno di Trader aperto e di un bot in esecuzione, vuole tenere d'occhio la ladder mentre l'automazione gestisce le uscite. Una sola connessione non può farlo. Tradovate offre un componente aggiuntivo a pagamento che alza il limite a due connessioni simultanee; osservare Trader più un'app API rientra allora comodamente nel limite. Lo attiva dalle impostazioni di abbonamento o dei componenti aggiuntivi del Suo account Tradovate, l'etichetta esatta del menu è cambiata nel corso degli anni, quindi apra l'area di gestione dell'account e cerchi il componente aggiuntivo di connessione o abbonamento che menziona connessioni simultanee o doppie, e confermi che sia attivo prima di farci affidamento.


Un avvertimento da tenere bene a mente: anche con due posti, un riavvio approssimativo che mantiene brevemente tre sessioni genera comunque un 408. Due è il limite massimo di quel piano, non un invito ad aprire connessioni liberamente. La disciplina di “un solo accesso pulito alla volta” resta valida, si ha solo un po' più di margine.
Mantenga la connessione attiva perché non si interrompa
Metà dei problemi legati al 408 deriva da connessioni che si interrompono e si riconnettono male. Mantenga il socket sano e smetterà di generare il ricambio che fa scattare il limite in primo luogo.
- Heartbeat ogni 2,5 secondi. Il WebSocket di Tradovate si aspetta un frame di heartbeat, un payload vuoto
[], almeno ogni 2,5 secondi, altrimenti il server lo chiude per inattività. Un server che sta trasmettendo attivamente dati di mercato non invierà i propri heartbeat, quindi spetta a Lei mantenere il battito. - Non si affidi a
setIntervalin un browser. Le schede in background limitano i timer, il che affama silenziosamente l'heartbeat e interrompe la connessione. Assegni un timestamp a ogni messaggio ricevuto e invii un heartbeat non appena sono trascorsi 2.500 ms dall'ultimo. - Usi ID di richiesta univoci. Riutilizzare lo stesso ID intero su richieste simultanee può confondere il socket e interromperlo.
- Si riconnetta prima di ~24 ore. I socket di lunga durata vengono interrotti intorno alla soglia delle 24 ore, pianifichi quindi una riconnessione controllata invece di attendere che il server la interrompa a metà sessione.
Tabella di risoluzione dei problemi
| Sintomo | Causa probabile | Soluzione |
|---|---|---|
| 408 nel momento in cui il bot si connette | L'interfaccia Trader (web, desktop o mobile) sta già occupando il posto | Esca da Trader ovunque, poi connetta il bot |
| 408 subito dopo un crash o un riavvio | La sessione fantasma dell'esecuzione precedente non è ancora scaduta | Attenda che la sessione obsoleta scada; si assicuri che acceda una sola istanza |
| 408 che non si placa mai | La stessa chiave API si autentica da due macchine o repliche | Fissi la connessione a un unico nodo/processo |
| 408 anche con il componente aggiuntivo | Tre o più sessioni mantenute brevemente (ad es. riavvio sovrapposto) | Scaglioni gli accessi; mantenga comunque un solo accesso alla volta |
| Il socket si interrompe, poi 408 alla riconnessione | Heartbeat mancati causano un'ondata di riconnessioni | Invii un heartbeat vuoto [] ogni 2,5 s; riduca i tentativi di ripetizione |
| 429, non 408 | Troppe richieste troppo velocemente (rate limit) | Limiti la frequenza delle richieste, problema diverso, soluzione diversa |
Dove si inserisce PickMyTrade
Gestire manualmente un unico posto di connessione è fragile, una scheda Trader dimenticata o un riavvio approssimativo, e la Sua automazione inizia a incassare 408 nel momento peggiore possibile. PickMyTrade si colloca tra TradingView e Tradovate e mantiene un'unica connessione pulita e gestita, così non compete mai con Se stesso per il posto:
- Una connessione gestita, il bridge mantiene un'unica sessione stabile con Tradovate, così accessi duplicati e sessioni fantasma non si accumulano rispetto al Suo limite.
- Manutenzione automatica della sessione, i token vengono rinnovati secondo pianificazione e gli heartbeat mantengono attivo il socket, così non si interrompe né innesca un'ondata di riconnessioni.
- Nessuna gestione manuale della connessione, Lei instrada gli avvisi di TradingView e lascia che la piattaforma gestisca il ciclo di connessione/autenticazione/riconnessione che altrimenti dovrebbe supervisionare nel codice.
- Instradamento attento al rate limit, le richieste vengono scandite in modo da non scambiare un 408 con una penalità 429.
Basta lottare con le connessioni API
Avvii la Sua prova gratuita e colleghi TradingView a Tradovate senza dover gestire le connessioni API.
Avvii la Sua prova gratuita di 5 giorniDomande frequenti
Sull'API di Tradovate, un 408 significa quasi sempre che è stato superato il numero massimo di connessioni simultanee per il proprio utente. Un account standard ottiene un posto di connessione, quindi se l'app Trader, una sessione REST e il bot cercano di occuparlo tutti insieme, le sessioni in eccesso iniziano a restituire 408.
Un utente standard ottiene una singola connessione stabilita con l'API di Tradovate per account. Accedere a Tradovate Trader termina la sessione API REST e WebSocket, e vale anche il contrario. Un componente aggiuntivo a pagamento alza il limite a due connessioni simultanee, così è possibile osservare Trader e far girare un'app contemporaneamente.
Sì. Su un account a connessione singola, accedere all'app web o desktop di Trader occupa l'unico posto e termina la sessione API. Quando il bot si riconnette, estromette Trader. Solo uno dei due può mantenere la connessione alla volta, a meno che non si disponga del componente aggiuntivo a due connessioni.
Offre un secondo posto, così osservare Trader più far girare un'app API rientra nel limite. Non aiuta se il proprio codice apre più di due sessioni contemporaneamente, un'istanza duplicata del bot rimasta in esecuzione dopo un riavvio continua a superare il limite e i 408 tornano.
Di solito è una sessione fantasma. Un crash o un riavvio forzato ha lasciato un vecchio accesso attivo sul server, quindi quando la nuova istanza si autentica, si mantiene brevemente una sessione di troppo. Attenda un minuto affinché la sessione obsoleta scada, si assicuri che acceda una sola istanza, quindi si riconnetta.
Invii un frame di heartbeat, un payload vuoto [], ogni 2,5 secondi, usi ID di richiesta univoci, eviti di lanciare chiamate in raffiche ravvicinate e si riconnetta prima del limite di connessione di circa 24 ore. In un browser, non faccia affidamento su setInterval per l'heartbeat; le schede in background lo limitano e il socket muore.
No. Un 429 significa che sono state inviate troppe richieste troppo velocemente, superando un rate limit. Un 408 su Tradovate indica il limite di connessioni simultanee, troppe sessioni contemporanee, non troppe richieste. Hanno soluzioni diverse, quindi legga il codice di stato prima di reagire.
Questa guida ha uno scopo esclusivamente educativo e informativo e non costituisce una 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 indipendente di terze parti e non è affiliata, sostenuta o sponsorizzata da Tradovate, Inc. 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 confermi sempre il processo attuale sulla piattaforma e nella documentazione ufficiali di Tradovate prima di agire.