Payload webhook TradingView
Campi esatti letti da WebhookIngress quando un alert TradingView arriva a TheConnector.
Obiettivo
Questa pagina documenta il contratto pubblico WebhookIngress per gli alert TradingView. Non è il payload degli ordini manuali dalla dashboard.
Percorso di accesso
- Nell'area clienti:
Account> aprire un conto di trading > copiare la chiave di accesso. - In TradingView:
Alert>Notifications> incollarehttps://webhook.theconnector.fr/YOUR_ACCESS_KEYinWebhook URL. - Nel campo
Messagedi TradingView, incollare il messaggio: JSON o una riga, come preferisce.
Due formati, lo stesso risultato
WebhookIngress legge due formati di messaggio e li tratta esattamente allo stesso modo: un oggetto JSON oppure una sola riga di testo. Usi quello che preferisce. Su una riga vengono prima l'azione e il simbolo, poi gli altri campi nella forma nome=valore, separati da virgole.
JSON minimo
{
"action": "buy",
"symbol": "EURUSD",
"risk": 1,
"sl": 0.2,
"tp": 0.4,
"priceMode": "percent"
}
priceMode indica l'unità di sl, tp e price nell'alert stesso: price, pips o percent. Qui lo stop è allo 0,2% dall'ingresso e il target allo 0,4%, qualunque sia la modalità prezzo del conto; senza priceMode, vale la modalità prezzo del conto.
Campi letti da WebhookIngress
actionè obbligatorio. Alias, in JSON come su una riga:side,type,command,msgtype.typeindica il comando, non un tipo di ordine:buycontype=limitdà due comandi diversi, e l'alert viene rifiutato — un ordine pendente ha il suo comando,buylimit,selllimit,buystoposellstop, con il prezzo di ingresso inprice.symbolè obbligatorio per i comandi trading. Alias:pair,ticker,instrument,market,asset.riskviene passato come rischio numerico. Per lotti esatti usavolume,lot,lots,fixedVolumeosize.sletpsono i nomi attuali per stop loss / take profit. Alias:stoploss,stop_loss,takeprofit,take_profit.priceserve solo per ordini pendenti:buystop,buylimit,sellstop,selllimit.expiration(aliasexpiry) dà a un ordine pendente una durata, in minuti: il broker lo cancella se non è scattato entro quel tempo, anche con il robot spento. Esempio:"expiration": 60. Viene ignorato sugli ordini a mercato. Richiede il robot 0.0.30 o successivo: con un robot più vecchio l'avviso viene rifiutato invece di lasciare l'ordine pendente a tempo indeterminato. Se il broker non accetta una scadenza su quel simbolo, l'ordine viene rifiutato, mai piazzato senza.priceModefissa l'unità disl,tpepriceper questo alert:price,pipsopercent. Senza, vale la modalità prezzo del conto.ticket,orderId,order_id,positionIdoposition_idservono solo quando si punta a un ordine o posizione nota.account/accountCodeeplatformsono opzionali con l'URL account; servono solo in setup di routing condiviso.streamIdoidpuò essere inviato per il tracciamento. Il server lo conserva nel proprio id, preceduto daTV-(17 caratteri al massimo, trattini cambiati in_), seguito da_e da 8 caratteri. Due alert inviati con lo stesso id sono quindi due alert distinti: il secondo non viene mai trattato come un duplicato. Se manca, il server crea un id.tag(aliascomment) dà il nome alla strategia a cui appartiene l'avviso. In un ingresso viene scritto nel commento della posizione presso il broker; in una chiusura limita la chiusura alle posizioni che portano quel nome, così più strategie possono condividere un conto e un simbolo. Viene reso minuscolo e tagliato a 12 caratteri, ed è rispettato dal robot 0.0.21 in poi — sotto quella versione una chiusura con nome viene rifiutata invece di essere eseguita sulla posizione di un'altra strategia. Se invia un suostreamId, sostituisce quello generato e il nome non raggiunge mai il commento della posizione: omettastreamIdquando usa i nomi.clientRequestedAtUtc,requestedAtUtcorequestedAtpossono essere inviati come timestamp UTC informativo.
Lo stesso messaggio su una riga
Lo stesso ordine di sopra, scritto su una sola riga:
buy,EURUSD,risk=1,sl=0.2,tp=0.4,priceMode=percent
Cosa non inviare
Non faccia affidamento su ttl_ms: il parser WebhookIngress attuale non lo legge. vol_lots viene letto come volume. Ogni prezzo mantiene l'unità in cui è scritto: un suffisso fissa l'unità di quel solo valore (sl_pips, sl_price, sl_pct, tp_pips, tp_price, tp_pct, e entry_pips, entry_price, entry_pct per l'ingresso di un ordine pendente); sl, tp e price senza suffisso prendono il priceMode (o unit) scritto nell'alert, altrimenti la modalità prezzo dell'account. Il robot applica una sola unità a tutto l'ordine: un alert i cui prezzi chiedono due unità viene quindi rifiutato, mai inviato senza il suo stop loss o take profit — sl_pips con tp_price, oppure sl senza suffisso accanto a tp_pips (anche su un account impostato in pip; aggiunga priceMode=pips). Metta un suffisso su tutti i prezzi, o su nessuno. Anche un alert che scrive due volte lo stesso campo con due valori diversi viene rifiutato (sl=10 e poi sl=20, oppure "type":"sell" con "action":"buy"); lo stesso valore due volte conta una volta sola.
Avvisi scritti per WebhookTrade
Un avviso nel formato di WebhookTrade viene letto così com'è per symbol, action (buy_limit, sell_stop…), price, stop_loss, take_profit, size (lotti) ed expiration (minuti); comment dà il nome alla strategia, come tag; username, api_key, broker e account_type vengono ignorati. Delle azioni di chiusura, close_all viene letto come closeall; al posto di close_buy, close_sell e close_pending, invia closelong, closeshort, oppure cancellong e cancelshort. Gli altri parametri di stop, obiettivo, dimensione, trailing e 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_… — fanno rifiutare l'avviso, con un messaggio che li nomina: eseguito senza di loro, l'ordine partirebbe senza il suo stop o con un'altra dimensione. Scrivili con sl / tp e priceMode, volume o risk, e betrigger / trailtrig / traildist.
Ha già degli alert? Li tenga
Non deve riscrivere i suoi alert. Un messaggio su una riga funziona così com'è, anche se inizia con un ID di licenza: in ogni alert di TradingView sostituisca soltanto l'URL del webhook con il suo, quello che termina con la sua chiave di accesso. Il valore posto prima del comando viene allora ignorato, e i nomi dei parametri come sl_pips, tp_price o vol_lots vengono tradotti automaticamente. Un'eccezione: un alert che mescola unità di prezzo (sl_pips con tp_price, per esempio) ora viene rifiutato: scriva tutti i prezzi nella stessa unità.