Tradovate API

Corriger le glissement de prix des ordres à cours limité via l'API/webhook Tradovate

Votre alerte indique 4100 et l'ordre en cours affiche 4100,50. Rien n'a traversé le marché, le prix a simplement été arrondi quelque part entre votre alerte et le carnet d'ordres. Voici pourquoi, et comment y remédier.

Vérifié par l'équipe Trading Systems de PickMyTrade Dernière mise à jour
· Lecture de 8 minutes
Panneau des détails de contrat Tradovate mettant en évidence la taille du tick et le format de prix d'un contrat futures E-mini

Vous réglez votre stratégie pour clôturer à 4100. L'alerte se déclenche, le message indique clairement 4100, et pourtant l'ordre en cours affiche 4100,50. Rien n'a traversé le marché, rien ne s'est exécuté à un mauvais prix, le nombre a simplement changé quelque part entre votre alerte et le carnet d'ordres. C'est exaspérant, et c'est le genre de chose que les gens appellent « slippage » tout en sachant discrètement que ce n'est pas tout à fait ça.

Voici la version courte : les prix des futures ne vivent pas sur une droite numérique continue. Ils n'existent que sur une grille fixe de ticks. Si le prix transmis par votre stratégie n'est pas un multiple exact de cette grille, quelque chose doit l'arrondir, et la direction de l'arrondi est rarement celle que vous aviez en tête. Corrigez l'endroit où le prix est aligné, et assurez-vous que la limite ne se trouve pas du mauvais côté du marché, et le demi-point fantôme disparaît.

Ce guide explique pourquoi le prix bouge, comment déterminer laquelle des trois causes habituelles vous touche, et exactement quoi changer pour que vos limites tombent sur le nombre que vous vouliez.

Ce que « slippage » signifie réellement ici

Il vaut la peine de séparer deux choses très différentes, car la solution dépend de laquelle des deux vous rencontrez.

Le vrai slippage se produit sur un ordre au marché : vous acceptez ce que le carnet vous donne, et sur un marché rapide ou peu liquide, cela représente quelques ticks de moins bon que le dernier prix coté. Il n'y a pas de prix à protéger, donc rien à déboguer, c'est l'ordre que vous avez demandé.

Ce que vous constatez est différent. Un ordre à cours limité porte un prix spécifique, et ce prix est transformé avant de se poser dans le carnet. Le nombre dans votre alerte et le nombre sur l'ordre en cours ne correspondent pas. Ce n'est pas le marché qui bouge contre vous ; c'est votre prix qui est remodelé en transit. Bonne nouvelle : les prix remodelés sont prévisibles, et prévisible signifie corrigible.

Pourquoi le prix s'écarte de votre cible

Trois mécanismes causent presque tous les cas. Ils peuvent se cumuler, il vaut donc la peine de connaître les trois même si un seul vous affecte aujourd'hui.

1. Le prix n'est pas sur la grille de ticks

Chaque contrat a un incrément minimal fixe. Envoyez un prix qui tombe entre deux ticks légaux et il sera arrondi au plus proche. Ce n'est pas un bug, un prix hors grille ne peut tout simplement pas exister sur la bourse, il doit donc se caler quelque part.

Le problème est que différents contrats se calent sur des tailles différentes, et il est facile de se tromper :

Contrat Taille du tick Prix légaux proches de 4100 / 75,00 / 2050
ES, NQ, MES, MNQ0,254100,00, 4100,25, 4100,50, 4100,75
CL (pétrole brut)0,0175,00, 75,01, 75,02, 75,03
GC, MGC (or)0,102050,00, 2050,10, 2050,20
YM, MYM (Dow)1,042100, 42101, 42102

Disons que votre logique calcule une sortie sur l'or à 2050,05. Ce prix n'existe pas, GC évolue par dixièmes, il s'arrondit donc à 2050,00 ou 2050,10, et votre sortie « 5 centimes de mieux » est désormais décalée d'un dixième. Vérifiez l'incrément actuel sur la page de spécifications du contrat de la bourse avant de vous fier à ces chiffres ; la bourse peut ajuster une taille de tick, et les contrats micro ne correspondent pas toujours à leur homologue de taille standard.

2. L'arithmétique à virgule flottante vous fait franchir un tick

C'est la cause sournoise, et elle se cache généralement derrière la plainte classique « envoyé 4100, obtenu 4100,50 ». ES cote en quarts, donc 4100,00 comme 4100,50 sont parfaitement légaux. Le prix ne s'est pas arrondi parce qu'il était hors grille, il s'est arrondi parce que la valeur réellement calculée par votre stratégie n'était pas le 4100 net que vous voyiez dans le texte de l'alerte.

Les stratégies codent rarement une sortie en dur. Elles la calculent : une entrée moins un décalage, une valeur de moyenne mobile, un pourcentage d'une plage. Faites cela en virgule flottante et vous obtenez des nombres comme 4100,4999999 ou 4100,3700001. Arrondissez cela au quart le plus proche et vous pouvez facilement tomber à un demi-point de là où le nombre rond de votre alerte laissait penser que vous atterririez. Le message d'alerte et le champ de prix peuvent même diverger, car l'un est du texte d'affichage et l'autre est la valeur envoyée.

3. La limite a déjà traversé le marché

Celui-ci est du vrai slippage déguisé en ordre à cours limité. Une limite d'achat au-dessus de l'ask actuel, ou une limite de vente en dessous du bid actuel, est « exécutable immédiatement », elle peut se remplir tout de suite au meilleur prix disponible plutôt que de se poser dans le carnet. Donc si votre stratégie calcule une limite du mauvais côté du marché (une inversion de signe courante : soustraire un décalage alors que vous vouliez l'ajouter), l'ordre traverse le spread et s'exécute à un prix qui ne ressemble en rien à votre nombre.

Ticket d'ordre et échelle DOM montrant un prix limite posé à l'écart du niveau prévu à côté du bid et de l'ask

L'indice : les erreurs d'arrondi vous décalent d'un ou deux ticks, toujours d'une manière qui ressemble à un arrondi. Une limite exécutable immédiatement vous place là où se trouvait le carnet, ce qui peut représenter plusieurs ticks et toujours du côté qui vous coûte de l'argent. Si l'écart est supérieur à un tick et systématiquement défavorable, soupçonnez le côté du carnet, pas la grille.

Comment corriger cela, étape par étape

1

Lisez la vraie taille de tick du contrat

Ne présumez pas, recherchez-la pour le contrat exact que vous tradez. Récupérez la taille de tick depuis les détails de contrat de la plateforme, la page de spécifications de la bourse, ou l'API, où chaque objet contrat expose un champ tickSize (aux côtés de priceFormat et priceFormatType qui indiquent comment le prix est mis à l'échelle et affiché). Les contrats micro et standard peuvent partager un tick, mais pas toujours, et les roulements trimestriels ne changent pas le tick mais changent le symbole.

2

Arrondissez chaque prix au tick avant qu'il ne quitte votre stratégie

Rendez l'arrondi explicite et faites-le comme dernière étape avant l'envoi. Le schéma est le même dans n'importe quel langage :

rounded = round(rawPrice / tickSize) * tickSize

Pour ES avec un tick de 0,25, une valeur brute de 4100,37 devient round(4100.37 / 0.25) * 0.25 = round(16401.48) * 0.25 = 16401 * 0.25 = 4100.25. Vous savez désormais précisément quel prix part, parce que vous l'avez calculé, pas le routeur. Si vous voulez garantir de ne jamais traverser le marché, arrondissez une limite d'achat vers le bas au tick et une limite de vente vers le haut, cela garde l'ordre passif.

3

Éliminez la dérive de virgule flottante

Même après l'arrondi, de minuscules erreurs de fraction binaire peuvent vous laisser avec 4100,2500001. Calez le résultat sur la précision décimale du contrat avant l'envoi, formatez ES/NQ sur deux décimales, l'or sur deux, le brut sur deux, le Dow sur zéro. Envoyez le prix comme un nombre propre dans le champ, et ne comptez pas sur le texte d'alerte lisible par l'humain pour le porter ; la valeur dans le payload est ce qui est réellement placé.

4

Vérifiez de quel côté du carnet se trouve la limite

Avant d'accuser l'arrondi, confirmez la direction. Pour un achat en attente, la limite doit être au niveau ou en dessous du prix actuel ; pour une vente en attente, au niveau ou au-dessus. Si votre prix calculé franchit cette ligne, vous avez trouvé une limite exécutable immédiatement, et la solution se trouve dans votre arithmétique de décalage, vérifiez le signe et si vous travaillez en ticks plutôt qu'en points. Cinq « ticks » sur ES représentent 1,25 point, pas 5,00 ; confondre les deux fait dévier le prix de façon spectaculaire et souvent entièrement du mauvais côté.

5

Vérifiez que l'ordre en cours correspond

Passez un ordre sur un compte simulé et relisez-le. Le prix de l'ordre en cours dans le panneau Ordres devrait être égal au nombre auquel vous avez arrondi, au tick près. Si c'est le cas, vous avez terminé. Sinon, enregistrez le prix brut exact, la taille de tick utilisée, et la valeur arrondie envoyée, puis comparez-les, l'écart provient presque toujours de l'une de ces trois entrées, pas de la plateforme.

Éditeur de message d'alerte TradingView montrant le paramètre de prix mappé dans le payload d'ordre sortantPanneau Ordres Tradovate montrant un ordre à cours limité en cours dont le prix correspond à la cible alignée sur le tick prévu

Si vous routez via un webhook ou un pont

Lorsqu'une alerte TradingView pilote l'ordre via un pont, il y a une étape de transmission supplémentaire où le prix peut dériver. L'alerte se déclenche avec une valeur, le pont mappe cette valeur dans un payload d'ordre, et le payload est ce qui atteint le courtier. Deux choses maintiennent cela fiable.

Premièrement, faites de la stratégie la source unique de vérité pour le prix, arrondissez au tick dans votre logique Pine et transmettez ce nombre exact, déjà arrondi, à l'alerte, plutôt que d'envoyer une clôture brute en espérant que le système en aval l'arrondisse comme vous le souhaitez. Deuxièmement, confirmez que le champ lu par le pont est bien le champ de prix, pas une étiquette.

Fatigué d'arrondir les prix à la main et de traquer où un demi-tick s'est glissé ? PickMyTrade route vos alertes TradingView vers Tradovate et gère l'alignement des ticks pour vous, si bien que la limite qui quitte votre stratégie est la limite qui atterrit dans le carnet.

Comment éviter que cela ne revienne

Une fois corrigé, quelques habitudes empêchent la récidive :

  • Arrondissez dans la stratégie, toujours. N'envoyez jamais un prix calculé brut en laissant quelque chose en aval décider du tick.
  • Journalisez le brut et l'arrondi. Conservez les deux valeurs dans vos journaux pour qu'un tick égaré soit un diff de deux secondes, pas un mystère.
  • Testez d'abord en simulation. Déclenchez l'alerte sur un compte simulé et examinez le prix en cours avant de lui confier une taille réelle.
  • Travaillez en ticks, pas en points, pour les décalages. Décidez à l'avance dans quelle unité sont vos décalages et convertissez une seule fois, à un seul endroit.
  • Surveillez aussi les jambes du bracket. Les prix de stop et d'objectif s'arrondissent de la même manière ; si vos jambes de protection tombent à côté, la même correction d'arrondi s'applique. Si ces jambes ne s'attachent pas du tout, c'est un problème différent, consultez notre guide sur l'échec des ordres bracket (OSO/OCO) de l'API Tradovate.

Arrêtez d'arrondir les prix à la main

PickMyTrade route vos alertes TradingView vers Tradovate et gère l'alignement des ticks pour vous, si bien que la limite qui quitte votre stratégie est la limite qui atterrit dans le carnet.

Démarrez votre essai gratuit de 5 jours

Questions fréquentes

Généralement non. Le vrai slippage est un ordre au marché qui s'exécute moins bien que la cotation parce que le carnet a bougé. Une limite qui atterrit à un tick ou un demi-tick de votre alerte a été transformée avant d'atteindre le carnet, arrondie à un tick légal, décalée par l'arithmétique à virgule flottante, ou envoyée à travers le marché comme une limite exécutable immédiatement. Seul le dernier cas est du vrai slippage ; les deux autres sont un problème de formatage que vous contrôlez.

ES cote par incréments de 0,25, donc de 4100,00 à 4100,75, tout est légal. Si votre stratégie calcule la limite à partir d'une valeur de barre ou d'un décalage, le nombre brut ressemble souvent à 4100,37 ou 4100,4999 et s'arrondit au quart le plus proche, parfois le demi-point au-dessus de ce que vous attendiez. Arrondissez le prix au tick vous-même et journalisez les valeurs brutes et arrondies.

Lisez-la dans les détails de contrat de la plateforme, la page de spécifications de la bourse, ou le champ tickSize de l'API sur l'objet contrat. En référence rapide : ES, NQ, MES et MNQ cotent par 0,25 ; le brut (CL) par 0,01 ; l'or (GC) par 0,10 ; le Dow (YM) par 1,0. Vérifiez la spécification actuelle avant de vous y fier.

Cela supprime la surprise de l'arrondi, puisqu'un ordre au marché n'a pas de prix à arrondir, mais il s'exécute à ce que le carnet offre, ce qui sur un marché rapide peut être pire qu'une limite correcte. Si le contrôle du prix était l'objectif, gardez la limite et corrigez l'arrondi. Si vous avez simplement besoin de l'exécution, un ordre au marché est plus simple.

Non, la grille de ticks est fixée par la bourse, elle est donc identique sur les comptes d'évaluation, financés et personnels. Ce qui diffère selon la firme, ce sont les contrats et types d'ordres autorisés ainsi que les règles de risque, et cela se manifeste par des rejets, pas par des prix décalés. Si votre prix atterrit à côté de la cible, examinez l'alignement et le routage, et vérifiez les règles actuelles de votre firme pour tout ce qui est spécifique au type d'ordre.

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. ou Bookmap. 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 dans la documentation officielle de la plateforme avant d'agir.