Documentation · Webhook

Payload webhook TradingView

Champs exacts lus par WebhookIngress quand une alerte TradingView arrive chez TheConnector.

Vidéo YouTube (domaine sans cookie), chargée seulement quand vous lancez la lecture.
Tutoriel sans voix — tout est écrit à l'écran.

Objectif

Cette page documente le contrat public WebhookIngress pour les alertes TradingView. Ce n'est pas le payload des ordres manuels du dashboard.

Chemin d'accès

  • Dans l'espace client : Mes comptes > ouvrir un compte de trading > copier la clé d'accès.
  • Dans TradingView : Alerte > Notifications > coller https://webhook.theconnector.fr/VOTRE_CLE_D_ACCES dans Webhook URL.
  • Dans le champ Message de TradingView, coller le message : JSON ou une ligne, au choix.
Capture des réglages compte
Ouvrez le détail compte et copiez le code compte ou la clé d'accès depuis le vrai dashboard.

Deux formats, même résultat

WebhookIngress lit deux formats de message et les traite exactement de la même façon : un objet JSON, ou une seule ligne de texte. Utilisez celui que vous préférez. Sur une ligne, l'action et le symbole viennent d'abord, puis les autres champs sous la forme nom=valeur, séparés par des virgules.

JSON minimal

json
{
  "action": "buy",
  "symbol": "EURUSD",
  "risk": 1,
  "sl": 0.2,
  "tp": 0.4,
  "priceMode": "percent"
}

priceMode donne l'unité de sl, tp et price dans l'alerte elle-même : price, pips ou percent. Ici, le stop est à 0,2 % de l'entrée et l'objectif à 0,4 %, quel que soit le mode de prix du compte ; sans priceMode, c'est le mode de prix du compte qui s'applique.

Champs lus par WebhookIngress

  • action est obligatoire. Alias acceptés, en JSON comme sur une ligne : side, type, command, msgtype. type désigne la commande, pas un type d'ordre : buy avec type=limit donne deux commandes différentes, et l'alerte est refusée — un ordre en attente a sa propre commande, buylimit, selllimit, buystop ou sellstop, avec son prix d'entrée dans price.
  • symbol est obligatoire pour les commandes trading. Alias acceptés : pair, ticker, instrument, market, asset.
  • risk est transmis comme risque numérique. Pour des lots exacts, utilisez volume, lot, lots, fixedVolume ou size.
  • sl et tp sont les noms actuels de stop loss / take profit. Alias acceptés : stoploss, stop_loss, takeprofit, take_profit.
  • price sert uniquement aux ordres pending : buystop, buylimit, sellstop, selllimit.
  • expiration (alias expiry) donne une durée de vie à un ordre en attente, en minutes : le courtier le supprime s'il ne s'est pas déclenché d'ici là, même robot éteint. Exemple : "expiration": 60. Il est ignoré sur les ordres au marché. Il demande le robot 0.0.30 ou plus récent : avec un robot plus ancien, l'alerte est refusée plutôt que de laisser l'ordre en attente sans fin. Si le courtier n'accepte pas d'échéance sur ce symbole, l'ordre est refusé, jamais posé sans elle.
  • priceMode fixe l'unité de sl, tp et price pour cette alerte : price, pips ou percent. Sans lui, le mode de prix du compte s'applique.
  • ticket, orderId, order_id, positionId ou position_id servent uniquement si l'instruction vise un ordre ou une position connue.
  • account / accountCode et platform sont optionnels avec l'URL du compte ; ils servent surtout aux routages partagés.
  • streamId ou id peut être envoyé pour le suivi. Le serveur le garde dans son propre identifiant, précédé de TV- (17 caractères au plus, tirets changés en _), suivi de _ et de 8 caractères. Deux alertes envoyées avec le même identifiant sont donc deux alertes distinctes : la seconde n'est jamais prise pour un doublon. S'il manque, le serveur crée un identifiant.
  • tag (alias comment) nomme la stratégie à laquelle appartient l'alerte. À l'entrée, il est écrit dans le commentaire de la position chez le courtier ; à la fermeture, il restreint la fermeture aux positions portant ce nom, donc plusieurs stratégies peuvent partager un compte et un symbole. Il est mis en minuscules et coupé à 12 caractères, et il est honoré à partir du robot 0.0.21 — en dessous, une fermeture nommée est refusée plutôt que jouée sur la position d'une autre stratégie. Si vous envoyez votre propre streamId, il remplace celui qui est généré et le nom n'atteint jamais le commentaire de la position : omettez streamId quand vous utilisez des noms.
  • clientRequestedAtUtc, requestedAtUtc ou requestedAt peuvent être envoyés comme horodatage UTC informatif.

Le même message sur une ligne

Le même ordre que ci-dessus, écrit sur une seule ligne :

text
buy,EURUSD,risk=1,sl=0.2,tp=0.4,priceMode=percent

À ne pas envoyer

Ne vous basez pas sur ttl_ms : le parser WebhookIngress actuel ne le lit pas. vol_lots est lu comme volume. Chaque prix garde l'unité dans laquelle il est écrit : un suffixe fixe l'unité de cette seule valeur (sl_pips, sl_price, sl_pct, tp_pips, tp_price, tp_pct, et entry_pips, entry_price, entry_pct pour l'entrée d'un ordre en attente) ; sl, tp et price sans suffixe prennent le priceMode (ou unit) écrit dans l'alerte, sinon le mode de prix du compte. Le robot applique une seule unité à tout l'ordre : une alerte dont les prix demandent deux unités est donc refusée, jamais envoyée sans son stop ou son objectif — sl_pips avec tp_price, ou sl sans suffixe à côté de tp_pips (même sur un compte réglé en pips ; ajoutez priceMode=pips). Mettez un suffixe sur tous les prix, ou sur aucun. Une alerte qui écrit deux fois le même champ avec deux valeurs différentes est refusée elle aussi (sl=10 puis sl=20, ou "type":"sell" avec "action":"buy") ; la même valeur deux fois compte pour une.

Alertes écrites pour WebhookTrade

Une alerte au format WebhookTrade est lue telle quelle pour symbol, action (buy_limit, sell_stop…), price, stop_loss, take_profit, size (lots) et expiration (minutes) ; comment nomme la stratégie, comme tag ; username, api_key, broker et account_type sont ignorés. Parmi leurs actions de clôture, close_all est lu comme closeall ; à la place de close_buy, close_sell et close_pending, envoyez closelong, closeshort, ou cancellong et cancelshort. Leurs autres paramètres de stop, d'objectif, de taille, de trailing et de point mort — sl_percentage, tp_percentage, sl_distance, tp_distance, sl_distance_price, tp_distance_price, stop_amount, profit_amount, size_percentage, risk_percentage, size_multiplier, ts_…, breakeven_… — font refuser l'alerte, avec un message qui les nomme : jouée sans eux, l'ordre partirait sans son stop ou à une autre taille. Écrivez-les avec sl / tp et priceMode, volume ou risk, et betrigger / trailtrig / traildist.

Vous avez déjà des alertes ? Gardez-les

Inutile de réécrire vos alertes. Un message d'une ligne fonctionne tel quel, même s'il commence par un identifiant de licence : dans chaque alerte TradingView, remplacez seulement l'URL du webhook par la vôtre, celle qui se termine par votre clé d'accès. La valeur placée avant la commande est alors ignorée, et les noms de paramètres comme sl_pips, tp_price ou vol_lots sont traduits automatiquement. Une exception : une alerte qui mélange les unités de prix (sl_pips avec tp_price, par exemple) est désormais refusée : écrivez tous les prix dans la même unité.

Un cas broker spécifique ? Contacter le support