Documentação · Webhook

Payload webhook TradingView

Campos exatos lidos pelo WebhookIngress quando uma alerta TradingView chega à TheConnector.

Vídeo YouTube (domínio sem cookies), carregado apenas quando inicia a reprodução.
Tutorial sem voz — está tudo escrito no ecrã.

Objetivo

Esta página documenta o contrato público do WebhookIngress para alertas TradingView. Não é o payload de ordens manuais do dashboard.

Caminho de acesso

  • Na área cliente: Minhas contas > abrir uma conta de trading > copiar a chave de acesso.
  • No TradingView: Alerta > Notificações > colar https://webhook.theconnector.fr/YOUR_ACCESS_KEY em Webhook URL.
  • No campo Message do TradingView, colar a mensagem: JSON ou uma linha, como preferir.
Captura das definições da conta
Abra o detalhe da conta e copie o código da conta ou a chave de acesso no dashboard real.

Dois formatos, o mesmo resultado

O WebhookIngress lê dois formatos de mensagem e trata-os exatamente da mesma forma: um objeto JSON ou uma única linha de texto. Use o que preferir. Numa linha, a ação e o símbolo vêm primeiro e depois os restantes campos na forma nome=valor, separados por vírgulas.

JSON mínimo

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

priceMode indica a unidade de sl, tp e price no próprio alerta: price, pips ou percent. Aqui o stop fica a 0,2 % da entrada e o objetivo a 0,4 %, seja qual for o modo de preço da conta; sem priceMode, aplica-se o modo de preço da conta.

Campos lidos pelo WebhookIngress

  • action é obrigatório. Aliases, em JSON como numa linha: side, type, command, msgtype. type indica o comando, não um tipo de ordem: buy com type=limit dá dois comandos diferentes, e o alerta é recusado — uma ordem pendente tem o seu próprio comando, buylimit, selllimit, buystop ou sellstop, com o preço de entrada em price.
  • symbol é obrigatório para comandos de trading. Aliases: pair, ticker, instrument, market, asset.
  • risk é enviado como risco numérico. Para lotes exatos, use volume, lot, lots, fixedVolume ou size.
  • sl e tp são os nomes atuais de stop loss / take profit. Aliases: stoploss, stop_loss, takeprofit, take_profit.
  • price só é usado para ordens pendentes: buystop, buylimit, sellstop, selllimit.
  • expiration (alias expiry) dá a uma ordem pendente um tempo de vida, em minutos: a corretora apaga-a se não tiver sido acionada até lá, mesmo com o robô desligado. Exemplo: "expiration": 60. É ignorado nas ordens a mercado. Requer o robô 0.0.30 ou posterior: com um robô mais antigo o alerta é recusado em vez de deixar a ordem pendente indefinidamente. Se a corretora não aceitar expiração nesse símbolo, a ordem é recusada, nunca colocada sem ela.
  • priceMode define a unidade de sl, tp e price para este alerta: price, pips ou percent. Sem ele, aplica-se o modo de preço da conta.
  • ticket, orderId, order_id, positionId ou position_id só servem quando há uma ordem ou posição conhecida.
  • account / accountCode e platform são opcionais com a URL da conta; servem apenas em rotas partilhadas.
  • streamId ou id pode ser enviado para acompanhamento. O servidor mantém-no no seu próprio id, precedido de TV- (17 caracteres no máximo, hífenes trocados por _), seguido de _ e de 8 caracteres. Dois alertas enviados com o mesmo id são, portanto, dois alertas distintos: o segundo nunca é tratado como duplicado. Se faltar, o servidor cria um id.
  • tag (alias comment) nomeia a estratégia a que o alerta pertence. Numa entrada é escrito no comentário da posição no corretor; num fecho limita o fecho às posições que têm esse nome, por isso várias estratégias podem partilhar uma conta e um símbolo. Passa a minúsculas e é cortado a 12 caracteres, e é respeitado a partir do robô 0.0.21 — abaixo dessa versão, um fecho com nome é recusado em vez de ser executado sobre a posição de outra estratégia. Se enviares o seu próprio streamId, ele substitui o gerado e o nome nunca chega ao comentário da posição: omite streamId quando usares nomes.
  • clientRequestedAtUtc, requestedAtUtc ou requestedAt podem ser enviados como data UTC informativa.

A mesma mensagem numa linha

A mesma ordem que acima, escrita numa única linha:

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

O que não enviar

Não dependa de ttl_ms: o parser atual do WebhookIngress não o lê. vol_lots é lido como volume. Cada preço mantém a unidade em que está escrito: um sufixo fixa a unidade apenas desse valor (sl_pips, sl_price, sl_pct, tp_pips, tp_price, tp_pct, e entry_pips, entry_price, entry_pct para a entrada de uma ordem pendente); sl, tp e price sem sufixo usam o priceMode (ou unit) escrito no alerta e, caso contrário, o modo de preço da conta. O robô aplica uma só unidade a toda a ordem: um alerta cujos preços pedem duas unidades é recusado, nunca enviado sem o seu stop-loss ou take-profit — sl_pips com tp_price, ou sl sem sufixo ao lado de tp_pips (mesmo numa conta configurada em pips; acrescente priceMode=pips). Ponha um sufixo em todos os preços, ou em nenhum. Um alerta que escreve o mesmo campo duas vezes com dois valores diferentes também é recusado (sl=10 e depois sl=20, ou "type":"sell" com "action":"buy"); o mesmo valor duas vezes conta como um.

Alertas escritos para o WebhookTrade

Um alerta no formato do WebhookTrade é lido tal como está para symbol, action (buy_limit, sell_stop…), price, stop_loss, take_profit, size (lotes) e expiration (minutos); comment dá nome à estratégia, como tag; username, api_key, broker e account_type são ignorados. Das suas ações de fecho, close_all é lido como closeall; em vez de close_buy, close_sell e close_pending, envie closelong, closeshort, ou cancellong e cancelshort. Os seus outros parâmetros de stop, objetivo, tamanho, 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_… — fazem com que o alerta seja recusado, com uma mensagem que os nomeia: executada sem eles, a ordem sairia sem o seu stop ou com outro tamanho. Escreva-os com sl / tp e priceMode, volume ou risk, e betrigger / trailtrig / traildist.

Já tem alertas? Mantenha-os

Não precisa de reescrever os seus alertas. Uma mensagem de uma linha funciona tal como está, mesmo que comece por um identificador de licença: em cada alerta do TradingView, substitua apenas o URL do webhook pelo seu, o que termina com a sua chave de acesso. O valor colocado antes do comando é então ignorado, e nomes de parâmetros como sl_pips, tp_price ou vol_lots são traduzidos automaticamente. Uma exceção: um alerta que mistura unidades de preço (sl_pips com tp_price, por exemplo) passa a ser recusado: escreva todos os preços na mesma unidade.

Um caso específico de broker? Contactar suporte