Erreur 408 Request Timeout de l'API Tradovate (1 connexion)
Une erreur 408 sur Tradovate n'est pas un délai d'attente dû à un réseau lent. Elle signifie que vous avez dépassé le nombre de connexions que votre compte est autorisé à maintenir en même temps, et un compte standard n'en dispose que d'une seule.
Vous avez un bot qui communique avec l'API Tradovate, les ordres circulent, puis, sans crier gare, les appels commencent à renvoyer 408 Request Timeout. Sur la plupart des serveurs, un 408 signifie “vous étiez trop lent, j'ai arrêté d'attendre”. Sur Tradovate, cela signifie tout autre chose, et une fois que vous savez ce que cela vous indique réellement, la correction prend environ trente secondes. Ici, un 408 est la façon dont Tradovate vous dit que vous avez dépassé le nombre de connexions que votre compte est autorisé à maintenir à la fois. Un compte standard dispose exactement d'une connexion simultanée. Si l'application web Trader, une session REST et votre automatisation se disputent tous cette place unique, les connexions en trop sont rejetées avec un 408. Fermez tout ce qui d'autre est connecté en tant que vous, assurez-vous qu'une seule chose se connecte à la fois, et l'erreur disparaît. Un pont géré comme PickMyTrade contourne tout le problème en maintenant une connexion propre pour vous.
Liste de vérification rapide pour l'erreur 408 Request Timeout
- Fermez l'interface Trader. Si Tradovate Trader est ouvert dans un onglet du navigateur, dans l'application de bureau ou sur votre téléphone, il occupe votre unique connexion, fermez-le avant de lancer votre bot.
- Éliminez les instances en double. Un script planté ou redémarré qui ne s'est jamais déconnecté laisse une session fantôme. Vérifiez qu'une seule copie de votre application s'authentifie.
- Une seule connexion à la fois. Ne lancez pas deux connexions en parallèle pour le même compte, échelonnez le démarrage pour que l'ancienne session se termine avant que la nouvelle ne se connecte.
- Renouvelez, ne vous ré-authentifiez pas. Utilisez
/auth/renewAccessTokenpour prolonger votre session au lieu de vous reconnecter à chaque cycle, ce qui accumule du renouvellement de connexions. - Besoin des deux ? Obtenez la seconde place. Pour surveiller Trader et faire tourner un bot en même temps, vous avez besoin de l'add-on à deux connexions, une seule place ne peut pas faire les deux.
- Maintenez le socket actif. Envoyez un heartbeat toutes les 2,5 secondes pour qu'un WebSocket inactif ne soit pas coupé et ne force pas une reconnexion désordonnée.
Ce que signifie "408 Request Timeout" sur Tradovate
En HTTP classique, 408 Request Timeout signifie que le serveur indique à un client qu'il a attendu trop longtemps l'arrivée de la requête et a fermé la porte. Tradovate réutilise ce code de statut à ses propres fins. Sur cette API, un 408 survient lorsque vous dépassez le nombre maximal de connexions simultanées associées à votre utilisateur. Il ne s'agit pas de latence réseau ni d'un corps de requête lent, c'est un signal de capacité. La plateforme dit en substance : “trop de connexions sont ouvertes en votre nom en ce moment”.
Ce recadrage compte, car si vous traitez un 408 comme un délai d'attente normal, en augmentant les délais de requête, en réessayant plus fort, en accusant votre VPS, vous n'aboutirez à rien. Le chiffre à surveiller n'est pas votre latence. C'est le nombre d'éléments authentifiés sur votre compte au moment précis où l'erreur se déclenche.
Vous disposez d'une seule connexion. Voilà toute l'histoire.
Voici la règle qui explique presque tous les 408 : un utilisateur Tradovate standard dispose d'une seule connexion établie à l'API par compte. Cette unique place est partagée par tout ce qui s'authentifie en tant que vous, l'application web Trader, l'application de bureau Trader, l'application mobile, une session REST et le WebSocket de données de marché ouvert par votre bot. Ils n'ont pas chacun leur propre ligne. Tous se disputent la même.
Tradovate expose la conséquence directement : se connecter à Tradovate Trader met fin à votre session API REST et WebSocket, et l'inverse est également vrai. Ainsi, si votre bot diffuse tranquillement des cotations et que vous ouvrez Trader dans un onglet du navigateur pour vérifier une exécution, l'un des deux doit céder. Celui qui est évincé commence à renvoyer des 408. À l'inverse, votre bot se reconnecte pendant que Trader est ouvert, et c'est alors Trader qui se déconnecte. Cela semble aléatoire jusqu'à ce que vous réalisiez qu'il n'y a jamais eu de place que pour un seul.

Principales causes du 408 sur Tradovate
1. L'application Trader est ouverte pendant que votre bot tourne
C'est le coupable habituel. Vous laissez Tradovate Trader ouvert sur un second écran, un téléphone ou un onglet de navigateur oublié, puis vous démarrez votre automatisation. Le bot se connecte, occupe la place, et Trader, ou le bot, selon le moment, commence à recevoir des 408. Tout ce qui affiche une session Tradovate active compte, y compris l'application mobile tournant discrètement en arrière-plan.
2. Un redémarrage ou un plantage a laissé une session fantôme
Votre script plante, redémarre et se reconnecte, mais la session précédente ne s'est jamais correctement déconnectée côté serveur. Pendant une courte fenêtre, vous maintenez deux sessions contre un compte à une seule place, et la nouvelle connexion accumule des 408 jusqu'à ce que l'ancienne expire. Les boucles de redémarrage automatique aggravent cela, car elles peuvent empiler connexion après connexion avant qu'aucune n'expire.
3. La même clé API tournant depuis deux endroits
Les déploiements cloud sont notoires pour cela. Un groupe d'auto-scaling lance un second conteneur, ou vous laissez une copie tourner sur votre ordinateur portable et une autre sur un VPS, et les deux s'authentifient avec les mêmes identifiants. Chaque nouvelle connexion se dispute l'unique connexion avec les autres, et les 408 ne se calment jamais parce que rien ne cède jamais.
4. Une boucle de reconnexion trop agressive
Lorsqu'un socket se coupe, un client naïf se reconnecte immédiatement, et s'il se coupe pour une autre raison (un heartbeat manqué, par exemple), vous finissez par marteler la connexion. Ce flot de tentatives de connexion fait à la fois dépasser le plafond de connexions et gonfle le trafic de requêtes, si bien que les 408 peuvent s'entremêler avec des pénalités de limite de débit.
Comment corriger le 408 Request Timeout : étape par étape
Libérez votre unique connexion
Fermez tout ce qui d'autre se connecte en tant que vous. Déconnectez-vous de Tradovate Trader dans chaque onglet de navigateur, quittez l'application de bureau et fermez complètement l'application mobile (pas seulement en arrière-plan). Laissez passer quelques secondes pour que la session soit réellement libérée côté serveur. Cette seule étape résout la majorité des 408, car la plupart du temps la connexion “en trop” n'est autre que Trader resté ouvert.
Traquez les sessions en double
Vérifiez s'il existe une copie obsolète de votre propre application. Si votre bot a planté puis a redémarré, un ancien processus peut être encore authentifié. Sur un serveur, listez les processus en cours et confirmez qu'une seule instance est active. Dans une configuration cloud à l'échelle, assurez-vous qu'un seul nœud s'authentifie pour un compte donné, fixez la connexion à un worker plutôt que de laisser chaque réplique se connecter.
Échelonnez vos connexions et renouvelez, ne vous ré-authentifiez pas
Concevez votre démarrage pour qu'une nouvelle session attende que l'ancienne se termine avant de se connecter. Et au lieu d'appeler le point de terminaison de connexion à chaque cycle, ce qui génère un nouveau renouvellement de connexions, prolongez la session que vous avez déjà. Envoyez un POST à /auth/renewAccessToken avec votre jeton encore valide pour obtenir une nouvelle expiration sans ouvrir une toute nouvelle session. Moins de connexions signifie moins d'occasions de dépasser le plafond de connexions.
Si vous avez vraiment besoin des deux à la fois, ajoutez la seconde place
Certains flux de travail ont vraiment besoin que Trader soit ouvert et qu'un bot tourne, vous voulez garder un œil sur la ladder pendant que l'automatisation gère les sorties. Une seule connexion ne peut pas faire cela. Tradovate propose un add-on payant qui relève votre plafond à deux connexions simultanées ; surveiller Trader plus une application API tient alors confortablement. Vous l'activez depuis les paramètres d'abonnement ou d'add-on de votre compte Tradovate, l'intitulé exact du menu a changé au fil des ans, ouvrez donc la zone de gestion de votre compte et cherchez l'add-on de connexion ou d'abonnement mentionnant les connexions simultanées ou doubles, et confirmez qu'il est actif avant d'y compter.


Une mise en garde à retenir : même avec deux places, un redémarrage bâclé qui maintient brièvement trois sessions déclenche quand même un 408. Deux est le plafond de ce plan, pas une invitation à ouvrir des connexions librement. La discipline consistant à n'avoir “qu'une seule connexion propre à la fois” s'applique toujours, vous avez simplement un peu plus de marge.
Maintenez la connexion active pour qu'elle ne se coupe pas
La moitié des ennuis liés aux 408 vient de connexions qui se coupent et se reconnectent mal. Gardez le socket sain, et vous cesserez de générer le renouvellement qui déclenche la limite en premier lieu.
- Heartbeat toutes les 2,5 secondes. Le WebSocket Tradovate attend une trame heartbeat, un payload vide
[], au moins toutes les 2,5 secondes, sinon le serveur le ferme pour inactivité. Un serveur diffusant activement des données de marché n'envoie pas ses propres heartbeats, c'est donc à vous de maintenir le pouls. - Ne vous appuyez pas sur
setIntervaldans un navigateur. Les onglets en arrière-plan limitent les temporisateurs, ce qui affame silencieusement votre heartbeat et coupe la connexion. Horodatez chaque message reçu et envoyez un heartbeat dès que 2 500 ms se sont écoulées depuis le dernier. - Utilisez des identifiants de requête uniques. Réutiliser le même identifiant entier sur des requêtes simultanées peut désorienter le socket et le faire tomber.
- Reconnectez-vous avant ~24 heures. Les sockets de longue durée sont coupés autour de la barre des 24 heures, prévoyez donc une reconnexion en douceur plutôt que d'attendre que le serveur la coupe en pleine session.
Tableau de dépannage
| Symptôme | Cause probable | Solution |
|---|---|---|
| 408 dès que le bot se connecte | L'interface Trader (web, bureau ou mobile) occupe déjà la place | Déconnectez-vous de Trader partout, puis connectez le bot |
| 408 juste après un plantage ou un redémarrage | La session fantôme de l'exécution précédente n'a pas expiré | Attendez que la session obsolète expire ; assurez-vous qu'une seule instance se connecte |
| 408 qui ne se calme jamais | La même clé API s'authentifie depuis deux machines ou répliques | Fixez la connexion à un seul nœud/processus |
| 408 même avec l'add-on | Trois sessions ou plus maintenues brièvement (ex. redémarrage qui se chevauche) | Échelonnez les connexions ; conservez toujours une seule connexion à la fois |
| Le socket se coupe, puis 408 à la reconnexion | Des heartbeats manqués provoquent un flot de reconnexions | Envoyez un heartbeat vide [] toutes les 2,5 s ; ralentissez les tentatives |
| 429, pas 408 | Trop de requêtes trop vite (limite de débit) | Régulez le débit des requêtes, problème différent, solution différente |
Où PickMyTrade s'intègre
Jongler à la main avec une seule place de connexion est fragile, un onglet Trader oublié ou un redémarrage bâclé, et votre automatisation se met à essuyer des 408 au pire moment possible. PickMyTrade se place entre TradingView et Tradovate et maintient une connexion unique, propre et gérée, afin que vous ne vous disputiez jamais la place avec vous-même :
- Une connexion gérée, le pont maintient une session unique et stable vers Tradovate, afin que les connexions en double et les sessions fantômes ne s'accumulent pas contre votre limite.
- Entretien automatique de la session, les jetons sont renouvelés selon un calendrier et les heartbeats maintiennent le socket actif, afin qu'il ne se coupe pas et ne déclenche pas une tempête de reconnexions.
- Aucune gestion manuelle de la connexion, vous acheminez les alertes TradingView et laissez la plateforme gérer le cycle connexion/authentification/reconnexion que vous devriez sinon superviser dans le code.
- Routage tenant compte des limites de débit, les requêtes sont cadencées pour que vous n'échangiez pas un 408 contre une pénalité 429.
Arrêtez de vous battre avec les connexions API
Démarrez votre essai gratuit et connectez TradingView à Tradovate sans vous battre avec les connexions API.
Démarrez votre essai gratuit de 5 joursQuestions fréquentes
Sur l'API Tradovate, un 408 signifie presque toujours que vous avez dépassé le nombre maximal de connexions simultanées pour votre utilisateur. Un compte standard dispose d'une place de connexion, donc si l'application Trader, une session REST et votre bot tentent tous de l'occuper en même temps, les sessions en trop commencent à renvoyer un 408.
Un utilisateur standard obtient une seule connexion établie à l'API Tradovate par compte. Se connecter à Tradovate Trader met fin à votre session API REST et WebSocket, et inversement. Un add-on payant relève le plafond à deux connexions simultanées afin que vous puissiez surveiller Trader et faire tourner une application en même temps.
Oui. Sur un compte à connexion unique, se connecter à l'application web ou de bureau Trader occupe l'unique place et met fin à votre session API. Lorsque votre bot se reconnecte, il évince Trader. Un seul des deux peut maintenir la connexion à la fois, sauf si vous disposez de l'add-on à deux connexions.
Il vous donne une seconde place, de sorte que surveiller Trader plus faire tourner une application API tient dans la limite. Cela n'aidera pas si votre propre code ouvre plus de deux sessions à la fois, une instance de bot en double qui continue de tourner après un redémarrage vous fait quand même dépasser le plafond et les 408 reviennent.
Généralement une session fantôme. Un plantage ou un redémarrage brutal a laissé une ancienne connexion active côté serveur, si bien qu'en authentifiant votre nouvelle instance, vous maintenez brièvement une session de trop. Attendez une minute que la session obsolète expire, assurez-vous qu'une seule instance se connecte, puis reconnectez-vous.
Envoyez une trame heartbeat, un payload vide [], toutes les 2,5 secondes, utilisez des identifiants de requête uniques, évitez de lancer des appels en rafales serrées, et reconnectez-vous avant le plafond de connexion d'environ 24 heures. Dans un navigateur, ne comptez pas sur setInterval pour le heartbeat ; les onglets en arrière-plan le limitent et le socket meurt.
Non. Un 429 signifie que vous avez envoyé trop de requêtes trop vite et atteint une limite de débit. Un 408 sur Tradovate indique le plafond de connexions simultanées, trop de sessions en même temps, pas trop de requêtes. Ils ont des solutions différentes, lisez donc le code de statut avant de réagir.
Ce guide est fourni à des fins éducatives et informatives uniquement et ne constitue pas un conseil financier, d'investissement ou de trading. Le trading de contrats à terme et d'autres produits à effet de levier comporte un risque de perte substantiel et ne convient pas à tous les investisseurs. PickMyTrade est une plateforme d'automatisation tierce indépendante et n'est ni affiliée à, ni approuvée par, ni parrainée par Tradovate, Inc. Tous les noms, logos et marques associés sont la propriété de leurs détenteurs respectifs. Les fonctionnalités et les étapes de la plateforme évoluent avec le temps, confirmez donc toujours le processus actuel sur la plateforme et la documentation officielles de Tradovate avant d'agir.