Tradovate API

Passer des ordres via l'API Tradovate

Vous voulez envoyer un ordre à Tradovate directement depuis votre propre code ? Voici comment construire la requête /order/placeOrder de bout en bout, y compris l'indicateur isAutomated qui piège beaucoup de monde la première fois.

Vérifié par l'équipe Trading Systems de PickMyTrade Dernière mise à jour
· Lecture de 6 minutes
Réponse de l'API Tradovate contenant le jeton d'accès renvoyé par l'endpoint accessTokenRequest

Vous voulez envoyer un ordre à Tradovate directement depuis votre propre code ? Vous êtes peut-être en train de construire un bot de trading, de scripter une stratégie, ou de mettre en place une automatisation comme PickMyTrade. Dans tous les cas, tout se résume à un seul appel REST : /order/placeOrder. Voici comment construire cette requête de bout en bout, y compris l'indicateur isAutomated qui piège beaucoup de monde la première fois.

Qu'est-ce que l'endpoint placeOrder de Tradovate ?

/order/placeOrder est l'endpoint REST de Tradovate qui soumet un nouvel ordre à la bourse depuis votre code plutôt que depuis l'interface de la plateforme. Vous lui transmettez un petit payload JSON, le compte, le contrat, le sens, la quantité et le type d'ordre, via une requête HTTPS authentifiée, et Tradovate vous renvoie l'ID de l'ordre résultant ou un motif d'échec. Chaque entrée, sortie et bracket piloté par l'API repose sur cet unique appel.

Passer un ordre via l'API Tradovate : étape par étape

1

S'authentifier et obtenir un jeton d'accès

Vous ne pouvez rien envoyer sans un jeton bearer au préalable. Envoyez vos identifiants et les détails de votre application en POST vers /auth/accessTokenRequest, et la réponse vous fournit un accessToken que vous joindrez à chaque appel par la suite. Les jetons expirent après une durée définie, donc renouvelez le vôtre via /auth/renewAccessToken avant son expiration, c'est plus rapide et plus propre que de se réauthentifier depuis zéro.

2

Trouver votre accountId et accountSpec

Chaque ordre nécessite deux identifiants de compte : l'accountId numérique et l'accountSpec textuel (le nom/spec de votre compte). Appelez GET /account/list avec votre jeton bearer et récupérez les deux champs sur le compte que vous souhaitez trader. Si l'un des deux est incorrect, Tradovate renvoie une erreur "Access is denied" au lieu d'une exécution.

3

Construire le payload placeOrder

Assemblez maintenant le corps JSON. Un ordre au marché basique nécessite six champs plus l'indicateur de conformité :

4

Définir correctement isAutomated, puis envoyer

Le booléen isAutomated indique à la bourse qui a réellement déclenché l'ordre. Si un humain clique sur un bouton dans votre interface, c'est false (la valeur par défaut). Si un bot, un algorithme ou tout processus impersonnel déclenche l'ordre, vous devez définir isAutomated: true. C'est une exigence de conformité CME stricte, pas une option facultative. Une fois le payload correct, envoyez-le en POST vers /order/placeOrder sur le bon hôte, demo.tradovateapi.com/v1 pour la simulation ou live.tradovateapi.com/v1 pour l'argent réel, avec votre jeton dans l'en-tête Authorization: Bearer.

5

Confirmer l'ordre ou lire le motif d'échec

Voici ce que beaucoup de gens ratent : un 200 OK signifie que la requête a été acceptée, pas que l'ordre a été exécuté. La marge, les limites de risque ou un marché fermé peuvent encore l'arrêter net. Lisez donc le corps de la réponse : un succès renvoie un orderId, tandis qu'un rejet renvoie un failureReason et un failureText que vous pouvez journaliser et exploiter. Vérifiez ensuite l'exécution dans le panneau Orders de Tradovate afin de ne jamais vous fier uniquement au code de statut.

Tradovate API access token response returned by the accessTokenRequest endpointTradovate account list API response showing the numeric account id and the account name field

{
  "accountSpec": "YOUR_ACCOUNT_NAME",
  "accountId": 123456,
  "action": "Buy",
  "symbol": "MESM6",
  "orderQty": 1,
  "orderType": "Market",
  "isAutomated": true
}

  • action vaut Buy ou Sell ; orderType accepte Market, Limit, Stop ou StopLimit.
  • Un ordre Limit nécessite aussi un price ; un ordre Stop nécessite un stopPrice. Ajoutez un timeInForce optionnel (par exemple Day, GTC, IOC ou FOK) chaque fois que vous ne voulez pas de la valeur par défaut.
  • Utilisez le symbole du contrat du mois en cours ; les symboles expirés ou continus sont rejetés.
Tradovate placeOrder JSON payload in an API client with the isAutomated flag highlightedTradovate placeOrder 200 OK API response returning the new order IDTradovate Orders panel showing the newly placed API order row and its fill status

Pourquoi vous en auriez besoin

  • Bots de trading, transforment les signaux d'une stratégie en entrées et sorties en direct sans aucun clic manuel.
  • Outils de gestion du risque sur mesure, aplatissent ou couvrent automatiquement les positions dès que vos propres règles se déclenchent.
  • Plateformes de liaison, acheminent les alertes depuis TradingView, Python ou une feuille de calcul directement vers Tradovate.
  • Passage du backtest au réel, réutilisent exactement la logique d'ordre testée, désormais pour envoyer de vrais ordres.

Automatisez cela avec PickMyTrade

Pas envie de gérer vous-même les jetons, les ID de compte, l'indicateur isAutomated et les limites de débit ? PickMyTrade relie directement vos alertes TradingView à votre compte Tradovate, afin que les ordres soient envoyés automatiquement, correctement formatés et conformes, sans que vous ayez à écrire la moindre ligne de code API.

Évitez toute la plomberie des ordres

Laissez PickMyTrade relier directement vos alertes TradingView à votre compte Tradovate, afin que les ordres soient envoyés automatiquement sans que vous ayez à écrire de code API.

Démarrez votre essai gratuit de 5 jours

Questions fréquentes

Si un bot ou tout processus automatisé déclenche l'ordre, oui : la bourse considère cela comme une exigence de conformité. Seuls les ordres déclenchés manuellement par un humain doivent envoyer false (la valeur par défaut).

Généralement, il s'agit d'un accountId/accountSpec incorrect ou manquant, d'un jeton sans permissions d'ordre, ou du fait d'appeler l'hôte demo avec des identifiants live (ou l'inverse). Récupérez les deux champs de compte depuis /account/list et vérifiez que vous utilisez la bonne URL de base.

Non. 200 OK signifie uniquement que Tradovate a accepté la requête. Vérifiez le corps de la réponse : un orderId (accepté) ou un failureReason (rejeté pour des raisons de marge, de risque ou de marché fermé).

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 important et ne convient pas à tous les investisseurs. PickMyTrade est une plateforme d'automatisation tierce indépendante et n'est affiliée à, approuvée par, ni sponsorisée par Tradovate, Inc. « Tradovate » et tous les noms, logos et marques associés sont la propriété de leurs détenteurs respectifs. Les fonctionnalités et étapes de la plateforme évoluent avec le temps ; confirmez toujours la procédure actuelle dans la plateforme et la documentation officielles de Tradovate avant d'agir.