Payload webhook de TradingView
Campos exactos leídos por WebhookIngress cuando llega una alerta TradingView a TheConnector.
Objetivo
Esta página documenta el contrato público de WebhookIngress para alertas TradingView. No es el payload de órdenes manuales del dashboard.
Ruta de acceso
- En el área cliente:
Mis cuentas> abrir una cuenta de trading > copiar la clave de acceso. - En TradingView:
Alerta>Notificaciones> pegarhttps://webhook.theconnector.fr/YOUR_ACCESS_KEYenWebhook URL. - En el campo
Messagede TradingView, pegar el mensaje: JSON o una línea, como prefiera.
Dos formatos, el mismo resultado
WebhookIngress lee dos formatos de mensaje y los trata exactamente igual: un objeto JSON o una sola línea de texto. Use el que prefiera. En una línea, la acción y el símbolo van primero y después los demás campos en la forma nombre=valor, separados por comas.
JSON mínimo
{
"action": "buy",
"symbol": "EURUSD",
"risk": 1,
"sl": 0.2,
"tp": 0.4,
"priceMode": "percent"
}
priceMode indica la unidad de sl, tp y price en la propia alerta: price, pips o percent. Aquí el stop está al 0,2 % de la entrada y el objetivo al 0,4 %, sea cual sea el modo de precio de la cuenta; sin priceMode, se aplica el modo de precio de la cuenta.
Campos leídos por WebhookIngress
actiones obligatorio. Aliases, en JSON como en una línea:side,type,command,msgtype.typeindica el comando, no un tipo de orden:buycontype=limitda dos comandos distintos, y la alerta se rechaza — una orden pendiente tiene su propio comando,buylimit,selllimit,buystoposellstop, con su precio de entrada enprice.symboles obligatorio para comandos de trading. Aliases:pair,ticker,instrument,market,asset.riskse transmite como riesgo numérico. Para lotaje exacto, usevolume,lot,lots,fixedVolumeosize.slytpson los nombres actuales de stop loss / take profit. Aliases:stoploss,stop_loss,takeprofit,take_profit.pricesolo se usa para órdenes pendientes:buystop,buylimit,sellstop,selllimit.expiration(aliasexpiry) da a una orden pendiente una duración de vida, en minutos: el bróker la elimina si no se ha activado antes, incluso con el robot apagado. Ejemplo:"expiration": 60. Se ignora en las órdenes a mercado. Requiere el robot 0.0.30 o posterior: con un robot más antiguo la alerta se rechaza en lugar de dejar la orden pendiente indefinidamente. Si el bróker no acepta vencimiento en ese símbolo, la orden se rechaza, nunca se coloca sin él.priceModefija la unidad desl,tpypricepara esta alerta:price,pipsopercent. Sin él, se aplica el modo de precio de la cuenta.ticket,orderId,order_id,positionIdoposition_idse usan solo si se apunta a una orden o posición conocida.account/accountCodeyplatformson opcionales con la URL de cuenta; solo sirven en rutas compartidas.streamIdoidpuede enviarse para seguimiento. El servidor lo conserva en su propio id, precedido deTV-(17 caracteres como máximo, guiones cambiados por_), seguido de_y de 8 caracteres. Dos alertas enviadas con el mismo id son, por tanto, dos alertas distintas: la segunda nunca se trata como un duplicado. Si falta, el servidor crea un id.tag(aliascomment) nombra la estrategia a la que pertenece la alerta. En una entrada se escribe en el comentario de la posición en el bróker; en un cierre limita el cierre a las posiciones que llevan ese nombre, así varias estrategias pueden compartir una cuenta y un símbolo. Se pasa a minúsculas y se corta a 12 caracteres, y se respeta a partir del robot 0.0.21 — por debajo, un cierre con nombre se rechaza en lugar de ejecutarse sobre la posición de otra estrategia. Si envía su propiostreamId, este sustituye al generado y el nombre nunca llega al comentario de la posición: omitastreamIdcuando use nombres.clientRequestedAtUtc,requestedAtUtcorequestedAtpueden enviarse como marca UTC informativa.
El mismo mensaje en una línea
La misma orden que arriba, escrita en una sola línea:
buy,EURUSD,risk=1,sl=0.2,tp=0.4,priceMode=percent
Qué no enviar
No se base en ttl_ms: el parser actual de WebhookIngress no lo lee. vol_lots se lee como volume. Cada precio conserva la unidad en la que está escrito: un sufijo fija la unidad de ese valor solamente (sl_pips, sl_price, sl_pct, tp_pips, tp_price, tp_pct, y entry_pips, entry_price, entry_pct para la entrada de una orden pendiente); sl, tp y price sin sufijo toman el priceMode (o unit) escrito en la alerta y, si no, el modo de precio de la cuenta. El robot aplica una sola unidad a toda la orden: una alerta cuyos precios piden dos unidades se rechaza, nunca sale sin su stop-loss o su take-profit — sl_pips con tp_price, o sl sin sufijo junto a tp_pips (incluso en una cuenta configurada en pips; añada priceMode=pips). Ponga un sufijo en todos los precios, o en ninguno. Una alerta que escribe dos veces el mismo campo con dos valores distintos también se rechaza (sl=10 y luego sl=20, o "type":"sell" con "action":"buy"); el mismo valor dos veces cuenta como uno.
Alertas escritas para WebhookTrade
Una alerta en el formato de WebhookTrade se lee tal cual para symbol, action (buy_limit, sell_stop…), price, stop_loss, take_profit, size (lotes) y expiration (minutos); comment nombra la estrategia, como tag; username, api_key, broker y account_type se ignoran. De sus acciones de cierre, close_all se lee como closeall; en lugar de close_buy, close_sell y close_pending, envíe closelong, closeshort, o cancellong y cancelshort. Sus otros parámetros de stop, objetivo, tamaño, trailing y break-even — 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_… — hacen que la alerta se rechace, con un mensaje que los nombra: ejecutada sin ellos, la orden saldría sin su stop o con otro tamaño. Escríbalos con sl / tp y priceMode, volume o risk, y betrigger / trailtrig / traildist.
¿Ya tiene alertas? Consérvelas
No necesita reescribir sus alertas. Un mensaje de una línea funciona tal cual, aunque empiece por un identificador de licencia: en cada alerta de TradingView, sustituya solo la URL del webhook por la suya, la que termina con su clave de acceso. El valor situado delante del comando se ignora entonces, y los nombres de parámetros como sl_pips, tp_price o vol_lots se traducen automáticamente. Una excepción: una alerta que mezcla unidades de precio (sl_pips con tp_price, por ejemplo) ahora se rechaza: escriba todos los precios en la misma unidad.