Créer un bot de trading automatique Tradovate avec l’API
Un bot de trading semble compliqué jusqu’à ce qu’on le découpe en éléments. Voici comment les pièces s’assemblent de bout en bout, de l’authentification au streaming des données de marché puis au placement des ordres, ainsi que le seul flag qui fait rejeter beaucoup de premiers bots.
On This Page
Un bot de trading semble compliqué jusqu’à ce qu’on le découpe en éléments. Au fond, c’est une boucle : se connecter, surveiller les prix, décider, envoyer un ordre, recommencer. Les exemples JavaScript officiels de Tradovate montrent exactement ce chemin, et vous pouvez suivre la même structure en Python, en C# ou dans le langage qui vous convient. Voici comment les pièces s’assemblent de bout en bout, ainsi que le seul flag qui fait rejeter beaucoup de premiers bots.
Que fait réellement un bot de trading Tradovate ?
Au fond, un bot Tradovate s’authentifie une fois pour obtenir un jeton d’accès, maintient une connexion en direct aux données de marché, exécute votre logique à chaque mise à jour de prix et appelle le point de terminaison d’ordres lorsque vos règles l’exigent. Le dépôt officiel example-api-js le sépare en une piste Access (authentification REST et ordres) et une piste WebSockets (données en temps réel et trading). L’exemple AutoTrade les relie dans un moteur événementiel où une stratégie réagit aux événements de cotations, de DOM et de graphiques à mesure qu’ils arrivent.
Construire le bot pas à pas
Activer l’accès à l’API et récupérer les identifiants de votre application
Il vous faut d’abord les clés. Activez le module complémentaire API Access sur votre compte, puis notez les trois valeurs avec lesquelles votre code s’authentifiera : appId (un nom pour votre application), cid (identifiant client) et sec (secret client). Vous les associerez à votre nom d’utilisateur et à votre mot de passe Tradovate habituels. Attention : certaines prop firms restreignent ou interdisent les bots API directs sur leurs comptes ; confirmez donc que votre firme l’autorise avant de construire sur un compte financé, les règles varient selon la firme, vérifiez votre contrat en vigueur.
S’authentifier et obtenir un jeton d’accès
Rien d’autre ne fonctionne sans jeton. Envoyez en POST un corps d’identifiants à /auth/accessTokenRequest avec votre name, password, appId, appVersion, cid, sec et un deviceId. La réponse renvoie un accessToken que vous joignez en Authorization: Bearer à chaque appel suivant. Les jetons vivent environ 90 minutes ; n’attendez donc pas un 401 : appelez /auth/renewAccessToken environ 15 minutes avant l’expiration pour garder la session active. Incluez un deviceId stable ; le trading réel applique l’approbation des appareils plus strictement que la démo.
Diffuser les données de marché en direct via WebSocket
REST convient aux appels ponctuels, mais un bot a besoin d’un flux constant, et c’est le rôle du WebSocket. Ouvrez un socket vers l’hôte de données de marché (md.tradovateapi.com), envoyez votre jeton d’accès pour vous autoriser, puis abonnez-vous à ce qui vous intéresse : md/subscribeQuote pour les prix, ou les abonnements DOM et graphiques pour la profondeur et les barres. À partir de là, votre code reçoit un événement chaque fois que le marché bouge. Maintenez le heartbeat actif pour que la connexion ne tombe pas en pleine séance.
Transformer votre signal en ordres avec placeOrder
C’est le cerveau. Dans le modèle AutoTrade, votre stratégie étend une classe de base et implémente une fonction next() qui fonctionne comme un reducer : elle prend l’état courant plus l’événement de marché entrant et renvoie l’état mis à jour. C’est là que résident vos calculs d’indicateurs et vos règles d’entrée. Lorsque l’état dit « go », construisez la charge utile de l’ordre et envoyez-la à /order/placeOrder. Ce champ isAutomated compte plus qu’il n’y paraît. Il doit être true pour tout ordre déclenché par un bot ou un algorithme ; c’est une exigence de conformité du CME, pas une suggestion. Omettez-le et vous appelez les rejets. Récupérez accountId et accountSpec depuis /account/list et utilisez toujours le symbole du contrat du mois en cours.
Tester en démo, puis gérer jetons et limites de débit
Exécutez toute la boucle sur l’hôte de démo (demo.tradovateapi.com/v1) jusqu’à ce qu’elle se comporte bien, car une logique erronée sur l’hôte réel (live.tradovateapi.com/v1) coûte de l’argent réel. Plusieurs choses piègent les nouveaux bots : vous êtes limité à 2 sessions simultanées, de sorte qu’une connexion parasite déconnecte la première ; marteler les points de terminaison REST déclenche des limites de débit et une pénalité de temps p-ticket que vous devez attendre ; et un jeton expiré casse tout silencieusement. Journalisez chaque réponse et ne passez en réel qu’une fois que la démo tourne proprement pendant une séance complète.
{"name": "your_username","password": "your_password","appId": "MyTradingBot","appVersion": "1.0","cid": 1234,"sec": "YOUR_CLIENT_SECRET","deviceId": "a-stable-uuid"}
{"accountSpec": "YOUR_ACCOUNT_NAME","accountId": 123456,"action": "Buy","symbol": "MESU6","orderQty": 1,"orderType": "Market","isAutomated": true}
Évitez la plomberie avec PickMyTrade
Construire toute la pile vous-même, renouvellement des jetons, heartbeats WebSocket, flag isAutomated, backoff des limites de débit, représente un vrai travail avant même d’avoir passé un seul trade stratégique. Si votre signal se trouve déjà dans TradingView, PickMyTrade achemine ces alertes directement vers votre compte Tradovate avec des ordres formatés et marqués pour la conformité à votre place, sans aucun code d’API.
Évitez de construire le bot vous-même
Le renouvellement des jetons, les heartbeats WebSocket et le backoff des limites de débit représentent un vrai travail. Laissez plutôt PickMyTrade acheminer vos alertes TradingView vers Tradovate.
Commencez votre essai gratuit de 7 joursQuestions fréquentes
Pour construire directement sur l’API, oui : vous écrirez des appels d’authentification, un gestionnaire WebSocket et la logique d’ordres. Si vous préférez l’éviter, un pont comme PickMyTrade transforme les alertes TradingView en ordres Tradovate sans aucune programmation.
La cause la plus courante est un flag isAutomated manquant ou à false sur un ordre automatisé, que la bourse n’accepte pas. Vérifiez ensuite un accountId/accountSpec erroné, un jeton expiré ou l’utilisation de l’hôte de démo avec des identifiants réels.
Oui. Pointez tout vers l’hôte de démo et exécutez d’abord votre stratégie sur un compte simulé. Restez-y jusqu’à ce que toute la boucle, authentification, données, ordres, tourne sans erreur avant de toucher à l’environnement réel.
Ce guide est fourni à des fins exclusivement pédagogiques et informatives et ne constitue ni un conseil financier, ni un conseil en investissement, ni un conseil de trading. La négociation de contrats à terme et d’autres produits à effet de levier comporte un risque de perte important et ne convient pas à tous les investisseurs. PickMyTrade est une plateforme d’automatisation tierce indépendante, non affiliée à Tradovate, Inc., ni approuvée ou parrainée par celle-ci. « Tradovate » et l’ensemble des 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 ; vérifiez donc toujours la procédure en vigueur sur la plateforme officielle de Tradovate et dans sa documentation avant d’agir.