API Tradovate : isAutomated doit être true pour les bots
Si vous laissez isAutomated à sa valeur par défaut false, chaque ordre algorithmique que vous envoyez est silencieusement mal étiqueté auprès du CME comme un clic humain. Voici ce que fait cet indicateur, pourquoi il existe, et comment le configurer correctement.
Lorsque vous envoyez des ordres à Tradovate depuis un bot, un pont de webhook ou un script, un petit champ détermine si la bourse considère votre exécution comme un ordre automatisé conforme ou comme une infraction à la piste d'audit : isAutomated. Si vous le laissez à sa valeur par défaut false, chaque ordre algorithmique que vous envoyez est silencieusement mal étiqueté auprès du CME comme un clic humain. Si vous l'envoyez avec le mauvais type de donnée, votre requête peut être rejetée avant même d'atteindre le moteur d'appariement. En 2026, avec l'indicateur Manuel/Automatisé du CME appliqué à chaque ordre, obtenir ce booléen correctement n'est plus optionnel, et c'est l'une des raisons les plus courantes pour lesquelles les développeurs voient leurs ordres automatisés se comporter étrangement ou être signalés. Voici exactement ce que fait cet indicateur, pourquoi il existe, et comment le configurer pour que votre bot trade sans rejet.
Liste de contrôle rapide pour l'indicateur isAutomated
- Un bot, un script ou un webhook envoie-t-il l'ordre ? Définissez
isAutomated: truesur chaque appel à/order/placeOrder. - Un humain clique-t-il sur un bouton dans votre propre interface ?
isAutomatedreste surfalse(la valeur par défaut). - Envoyez-vous la valeur avec le bon type ? Le schéma la définit comme un booléen
true, pas comme la chaîne"true", vérifiez ce que votre client HTTP sérialise réellement. - Utilisez-vous une stratégie bracket/OSO ? Appliquez également l'indicateur à l'ordre parent dans
placeOSO/placeOrderStrategy, pas seulement aux ordres uniques. - Vous constatez des rejets étranges ou « accès refusé » ? Vérifiez l'indicateur et son type avant de blâmer l'authentification, le symbole ou les paramètres de risque.
- Vous ne savez pas qui « possède » l'ordre ? Si aucun humain ne l'a déclenché physiquement en temps réel, il est automatisé. Signalez-le comme tel.
Ce que signifie réellement l'indicateur isAutomated
isAutomated est un champ booléen dans le corps de la requête placeOrder de Tradovate. Il indique à Tradovate, et via Tradovate au moteur d'appariement CME Globex, si une personne réelle a physiquement déclenché l'ordre ou si un logiciel l'a généré. Si vous omettez le champ, Tradovate le traite comme false, ce qui n'est correct que pour un ordre qu'un humain a passé en cliquant dans une interface.
Dès qu'un algorithme, un bot de trading, un webhook TradingView ou tout processus impersonnel génère l'ordre, cette valeur par défaut est incorrecte. L'indicateur doit être défini pour les ordres passés par un algorithme automatisé, par opposition à ceux déclenchés manuellement par un clic. Définir isAutomated: true est ce qui permet à votre requête d'être associée à la désignation correcte de la bourse.
Ce n'est pas une préférence de Tradovate, c'est une règle de la bourse. Depuis le 5 juin 2011, CME Group exige que chaque ordre saisi dans Globex indique s'il a été saisi par des moyens manuels ou automatisés, transmis dans le Tag 1028 (Manual Order Indicator) FIX. Le 8 octobre 2012, cette exigence a été codifiée dans la Rule 536.B de chaque bourse. Les valeurs autorisées sont strictes : les ordres manuels envoient Y, les ordres automatisés envoient N, et aucune autre valeur n'est permise. Votre isAutomated: true est ce qui fait que Tradovate marque votre ordre comme automatisé (N) sur le fil. Une transmission inexacte de cet indicateur constitue une infraction à la piste d'audit pouvant entraîner des mesures disciplinaires en vertu de la CME Rule 512.
Principales causes d'un indicateur isAutomated manquant ou incorrect
1. Le champ est tout simplement omis
La cause la plus fréquente consiste à omettre entièrement isAutomated du payload. Tradovate le définit par défaut sur false, de sorte que la requête aboutit quand même, ce qui est précisément ce qui rend cela dangereux. Les ordres de votre bot sont acheminés vers la bourse en étant étiquetés comme manuels (Y), alors qu'ils ont été générés par un logiciel. Rien ne génère d'erreur, mais chaque exécution automatisée est désormais mal étiquetée dans la piste d'audit du CME.
2. La valeur est envoyée avec le mauvais type
Le schéma des ordres de Tradovate documente isAutomated comme un booléen. Certains clients HTTP, requêtes encodées en formulaire ou wrappers tiers le sérialisent comme la chaîne "true" au lieu du booléen JSON true. Selon la façon dont votre pile construit le corps de la requête, une valeur que l'API ne peut pas interpréter comme un booléen peut être ignorée (revenant à false) ou faire échouer la requête. Envoyez le type que votre bibliothèque sérialise réellement en JSON, un véritable booléen, sauf indication contraire dans la documentation de votre pont.
3. L'indicateur est manquant sur les ordres bracket/stratégie
Les développeurs ajoutent souvent isAutomated aux appels placeOrder uniques, mais l'oublient sur les requêtes placeOSO et placeOrderStrategy (bracket OSO/OCO). L'ordre parent d'une stratégie reste un ordre automatisé et nécessite l'indicateur. Une entrée bracket envoyée sans lui constitue la même infraction qu'un ordre unique non marqué.
4. Une confusion humain / bot dans le chemin de code
Si le même chemin de code gère à la fois les actions manuelles de l'interface et les signaux automatisés, il est facile de coder en dur une seule valeur pour les deux. L'indicateur doit refléter la véritable origine de chaque ordre au moment de l'envoi : true lorsqu'un signal ou un algorithme l'a déclenché, false uniquement lorsqu'une personne a cliqué.

Comment corriger l'indicateur isAutomated : étape par étape
Corriger l'indicateur manquant
Ouvrez le code qui construit le corps de votre requête /order/placeOrder. Ajoutez isAutomated aux côtés des autres champs requis, accountSpec, accountId, action, symbol, orderQty et orderType. Définissez la valeur sur true pour tout ordre généré par votre bot, script ou webhook. Laissez-la sur false uniquement pour les ordres qu'un humain déclenche directement. Renvoyez un ordre de test dans l'environnement de démonstration et vérifiez que la réponse contient un identifiant d'ordre valide, et non une erreur. Un corps placeOrder automatisé minimal ressemble à ceci : { "accountSpec": "YourUserName", "accountId": 0, "action": "Buy", "symbol": "MESU6", "orderQty": 1, "orderType": "Market", "isAutomated": true }
Corriger le mauvais type de donnée
Examinez le JSON brut envoyé par votre client (enregistrez le corps de la requête ou utilisez la sortie de débogage de votre bibliothèque). Vérifiez que isAutomated apparaît comme un booléen simple, "isAutomated": true, et non comme une chaîne entre guillemets "isAutomated": "true". Si votre framework met automatiquement les booléens entre guillemets, convertissez explicitement la valeur en un véritable booléen avant la sérialisation, ou utilisez le type documenté par votre wrapper d'API. Retestez et vérifiez que l'ordre est accepté. Si vous utilisez un pont ou un tiers, consultez sa documentation pour connaître le type exact attendu, certaines intégrations encodées en formulaire attendent une chaîne, alors vérifiez auprès de votre outil spécifique avant de présumer.
Corriger les ordres bracket et stratégie
Repérez votre générateur de requête placeOSO ou placeOrderStrategy. Ajoutez isAutomated: true à l'ordre d'entrée/parent de la stratégie, exactement comme vous le feriez pour un ordre unique. Les jambes de stop et de target rattachées héritent du contexte de la stratégie, mais l'indicateur appartient à l'ordre que vous soumettez. Envoyez un bracket de test en démo et vérifiez que toutes les jambes apparaissent comme prévu dans le rapport des ordres.
Vérifier que l'ordre a été accepté et correctement étiqueté
Après l'envoi, vérifiez dans la réponse de placeOrder la présence d'un orderId numérique (succès) plutôt que d'un failureReason. Ouvrez le module Ordres ou interrogez /order/list et confirmez que l'ordre apparaît comme accepté/en cours, et non rejeté. Sur les comptes réels, surveillez attentivement les premiers ordres automatisés pour vous assurer qu'ils sont désormais correctement acheminés maintenant que l'indicateur est défini.


Tableau de dépannage
| Symptôme | Ce que cela signifie | Correction |
|---|---|---|
| isAutomated omis du payload | Revient par défaut à false ; les ordres du bot sont étiquetés manuels (Tag 1028 = Y) | Ajoutez isAutomated: true à chaque placeOrder automatisé |
| "isAutomated": "true" (chaîne) | La valeur peut ne pas être interprétée comme un booléen ; peut être ignorée ou rejetée | Envoyez le booléen JSON true, pas une chaîne entre guillemets |
| Indicateur manquant sur le parent OSO/OCO | L'entrée bracket est acheminée comme un ordre automatisé non marqué | Définissez isAutomated: true sur l'ordre parent de la stratégie |
| Même chemin de code pour l'UI et le bot | Origine incorrecte signalée par ordre | Définissez l'indicateur par ordre selon l'origine réelle au moment de l'envoi |
| Ordre signalé / problème de piste d'audit | La désignation CME Tag 1028 est inexacte | Assurez-vous que les ordres automatisés soient toujours signalés comme automatisés (N) |
| « Accès refusé » intermittent sur placeOrder | Généralement lié à l'authentification/au compte/au symbole, pas à l'indicateur lui-même | Corrigez l'authentification et utilisez l'identifiant de compte numérique ; gardez également l'indicateur correct |
Où PickMyTrade s'intègre
Si maintenir le contrat d'API brut à la main vous semble fragile, PickMyTrade relie directement les alertes TradingView à votre compte Tradovate et gère la tuyauterie des ordres pour vous :
- Étiquetage d'automatisation correct, les ordres générés à partir de vos alertes sont soumis via le bon canal automatisé, de sorte que la désignation de la bourse est gérée sans coder l'indicateur à la main.
- Validation du payload, les champs symbole, quantité et type d'ordre sont validés avant l'envoi de l'ordre, ce qui permet de détecter les erreurs situées juste à côté de
isAutomateddans le corps. - Routage sûr vis-à-vis des limites de débit, le flux d'ordres est espacé pour que les rafales ne déclenchent pas les limites de requêtes de Tradovate.
- Synchronisation multi-comptes, le même ordre validé est répliqué sur l'ensemble de vos comptes connectés au lieu que vous ayez à réimplémenter le payload pour chacun.
Tradez sans rejet
Démarrez votre essai gratuit de 5 jours, connectez vos alertes dès aujourd'hui et tradez sans rejet.
Démarrez votre essai gratuit de 5 joursQuestions fréquentes
C'est un booléen dans le corps de la requête placeOrder qui indique si un humain ou un logiciel a généré l'ordre. Il correspond au FIX Tag 1028 Manual Order Indicator du CME, afin que la bourse sache que l'ordre était automatisé.
Le champ revient par défaut à false, de sorte que votre ordre automatisé est signalé au CME comme saisi manuellement. Il s'agit d'une désignation de piste d'audit inexacte, qui, en vertu de la CME Rule 536.B et de la Rule 512, peut entraîner des mesures disciplinaires.
Utilisez true pour tout ordre généré par un bot, un algorithme, un script ou un webhook. Utilisez false uniquement pour les ordres qu'une personne déclenche physiquement en temps réel.
Le schéma des ordres de Tradovate le définit comme un booléen, envoyez donc true (et non "true"). Si vous utilisez un pont tiers ou un client encodé en formulaire, vérifiez le type exact attendu, car la sérialisation peut varier d'un outil à l'autre.
Oui. Définissez l'indicateur sur l'ordre parent/d'entrée de votre requête placeOSO ou placeOrderStrategy, exactement comme vous le feriez pour un ordre unique.
Pas toujours. Comme il revient par défaut à false, de nombreuses requêtes réussissent mais sont mal étiquetées. Le risque majeur est une infraction de conformité et de piste d'audit. En revanche, envoyer la valeur avec un type que l'API ne peut pas interpréter peut faire échouer la requête elle-même.
Depuis 2011, le CME exige que chaque ordre Globex identifie une saisie manuelle (Y) par opposition à automatisée (N), à des fins de surveillance et de piste d'audit. Cela a été codifié dans la Rule 536.B en 2012, et seuls Y ou N sont valides.
Cette erreur concerne généralement l'authentification, l'identifiant de compte ou le symbole plutôt qu'isAutomated. Gardez l'indicateur correct, mais dépannez l'authentification et l'accès au compte séparément.
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 à Tradovate, Inc., ni approuvée ou sponsorisée par elle. 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 dans le temps, confirmez donc toujours le processus actuel dans la plateforme et la documentation officielles de Tradovate avant d'agir.