← Web

Webhooks (TradingView, n8n…)

Crea URLs personales para recibir señales de cualquier sistema externo que pueda hacer POST. Pensado para TradingView Alerts, pero funciona con n8n, Zapier, scripts propios o cualquier cosa que sepa hablar HTTP.

Crear un webhook

  1. En el bot: 🎯 Mis grupos🔌 Webhooks (TradingView). O atajo: /webhooks.
  2. Toca + Nuevo, ponle un nombre (ej. "Gold scalper").
  3. Aparece la card con la URL — tap Copiar.
  4. Pega esa URL en el campo Webhook URL de tu alerta de TradingView.
Webhooks ilimitados en todos los planes, incluida la prueba gratuita.

Parser sin esquema estricto

No tienes que seguir un JSON exacto. Envía los campos que tengas y deducimos la intención. Cuanto más contexto incluyas, más fiable es la ejecución.

{
  "action": "buy",
  "symbol": "XAUUSD",
  "sl": 4540,
  "tp": 4570
}

Anatomía del payload

Anatomía del payload
POST /wh/wh_xxxxx
{
"symbol": "XAUUSD",
"side": "buy",
"entry": 4548.50,
"sl": 4540,
"tp": [4555, 4565, 4580]
}
symbolInstrumento
sideLado (BUY)
entryPrecio (mercado = ignorado)
slStop Loss
tp3 take-profits → 3 órdenes
Cada campo se mapea a una parte de la orden que mandamos al broker.

Referencia de campos

Agrupados por propósito. Cada campo lista sus alias aceptados (≡ alternative_name) — manda el que más cómodo te quede.

🎯 Qué hacer

El comando: comprar o vender, a mercado o pendiente.

  • actionsidedirection
    Sentido de la operación. Si solo mandas esto, asumimos orden a mercado.
    "buy""sell"
  • order_type
    Versión combinada: lado + tipo pendiente. Si lo usas, prevalece sobre action.
    "BUY""SELL LIMIT""BUY STOP"
💱 Qué operar

El instrumento. Acepta tu símbolo crudo o un alias común.

  • symboltickerinstrumentpairasset
    Si tu broker usa otro nombre (ej. GOLD#), creas un mapeo una vez y a partir de ahí lo resolvemos solos.
    "EURUSD""XAUUSD""BTCUSD"
📐 Cuánto

Tamaño de la orden. Si lo omites, usamos tu configuración global.

  • volumelotslot_sizesize
    Lote estándar. Override puntual para esta señal — no toca tu config global.
    0.010.51.0
🛡️ Stop loss & Take profits

Niveles de protección y objetivos. Si no hay SL, no abrimos la orden (regla dura).

  • slhardstop_lossstoplossstop
    Protección contra pérdida ilimitada. Sin esto rechazamos la señal y te avisamos.
    1.08504540
  • tptpstp1tp2tp3targetstake_profit
    Uno o varios objetivos. Con varios TPs abrimos una orden por cada uno y aplicamos SL-to-BE en TP1.
    1.095[1.09, 1.095, 1.10]
🪝 Precio (para pendientes)

Solo si vas a colocar una orden LIMIT o STOP.

  • entrypriceentry_price
    El nivel donde quieres que dispare la pendiente. Para market orders se ignora.
    1.09004562.5
🔗 Para hacer follow-ups

Cuando vayas a modificar o cerrar este trade desde otra alerta posterior.

  • signal_ididtrade_idticket
    Tu identificador. Lo guardamos junto al trade — cuando lleguemos a modify/close, lo usarás para referirte a esta posición.
    "strat_v2_001""e29a"

Tipos de orden

Dos familias completamente distintas según cuándo se ejecuta la orden:

Mercado — disponible

Disponible

Ejecuta al instante al ask actual (BUY) o bid (SELL).

BUY
↑ ask actual
SELL
↓ bid actual
Cuándo
  • La mayoría de señales de canales Telegram
  • Alertas de strategy TradingView al cierre

Pendiente — próximamente

🔜 Próximamente

Espera al precio que indicas, dispara cuando se alcanza.

TipoDispara cuando
BUY LIMITprecio ≤ indicado
BUY STOPprecio ≥ indicado
SELL LIMITprecio ≥ indicado
SELL STOPprecio ≤ indicado
Cuándo
  • Quieres fill exacto a un nivel concreto
  • Estrategias de breakout que necesitan stop por encima de resistencia
Hoy aceptamos el payload y se ejecuta como mercado con un aviso en log. Soporte nativo de pendientes llega en la próxima iteración.

signal_id en detalle

El signal_id es tuidentificador, no el nuestro. Cualquier string < 64 chars vale (UUID, ticket de TradingView, hash, número correlativo…). Lo guardamos en la fila de trade_log sin modificarlo.

Cuando despleguemos modify/close, será así:

  • Alerta de apertura: tu primer JSON con signal_id: "abc123"→ abrimos posición y vinculamos el id.
  • Alerta de modify: mismo signal_id: "abc123" + nuevos sl/tp + action: "modify" → buscamos la posición y la modificamos.
  • Alerta de close: mismo id + action: "close" → cerramos.

Seguridad

El token en la URL es el auth principal. Si se filtra, usa el botón 🔄 Rotar token en la Mini App — la URL anterior deja de funcionar inmediatamente.

Opcional: HMAC-SHA256. Si configuras un secret para el webhook, validamos la firma del body en el header X-CopySignal-Sig. Útil si tienes un proxy/script entre TradingView y nosotros que pueda firmar; TradingView por sí solo no manda headers custom.

Pruébalo con curl

Test rápido
curl -X POST 'https://tg-api.affiliaction.net/wh/<YOUR_TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{"symbol":"EURUSD","side":"buy","sl":1.085,"tp":[1.09,1.095]}'
Empieza con volumen pequeño (volume: 0.01) para verificar que tu plantilla se parsea bien antes de escalar.