Guía de integración de TradingView con MagicTradeBot (Configuración completa con NATS y webhooks)

1. Descripción General

MagicTradeBot puede recibir señales de trading directamente desde indicadores de TradingView, estrategias y alertas de Pine Script. Cuando llega una señal, pasa por el mismo motor de ejecución que las señales internas del bot — colocación de órdenes, DCA, decisiones inteligentes y notificaciones broadcast funcionan de manera idéntica.

Tres componentes trabajan juntos:

  • 🔗 tv-signal-bridge — servicio Axum independiente que recibe webhooks de TradingView, valida el secreto, normaliza el símbolo y publica en NATS
  • 📡 NATS JetStream — broker de mensajes liviano que se ejecuta en Docker y transporta las señales del bridge al bot con entrega "al menos una vez"
  • 🤖 Oyente de señales de MagicTradeBot — se suscribe a NATS, elimina duplicados, ejecuta verificaciones de puerta de enlace y luego llama a sync_bot_scan_result
INFORMACIÓN
Las señales TV externas son ciudadanos de primera clase. Una vez que la clave de la señal está registrada en signal_registry.yaml, el bot la trata de manera idéntica a TOP_GAINER_LONG_SIGNAL o cualquier otra señal interna.

2. Formato de la Clave de Señal

Cada señal de TradingView produce una clave en este formato:

TV_{ESTRATEGIA}_{LADO}_EXTERNAL_SIGNAL

Configuración Clave de Señal Resultante
estrategia: EMA_CROSS lado: long TV_EMA_CROSS_LONG_EXTERNAL_SIGNAL
estrategia: RSI_DIV lado: short TV_RSI_DIV_SHORT_EXTERNAL_SIGNAL
estrategia: SUPERTREND lado: long TV_SUPERTREND_LONG_EXTERNAL_SIGNAL

3. Requisitos Previos

  • MagicTradeBot instalado y en ejecución
  • Binario de tv-signal-bridge compilado y disponible
  • Docker Desktop instalado y en ejecución (para NATS)
  • Plan de pago de TradingView — Essential o superior
  • Una URL pública o IP para que TradingView pueda alcanzar el bridge

4. Configuración

4.1 Iniciar NATS mediante Docker

docker run -d \
  --name nats \
  --restart unless-stopped \
  -p 4222:4222 \
  -p 8222:8222 \
  nats:latest -js

4.2 Configurar tv-signal-bridge

Edite config/config.toml:

[bridge]
bot_name    = "MagicTradeBot-1"
hmac_secret = "su-secreto-largo-aqui"

[stream]
backend  = "nats"
nats_url = "nats://127.0.0.1:4222"
subject  = "trade.signals"

[symbols.mappings]
"BTCUSDT" = "BTC/USDT"
"ETHUSDT" = "ETH/USDT"

4.3 Iniciar tv-signal-bridge

# Windows
./tv-signal-bridge-win.exe

# Linux / macOS
./tv-signal-bridge-linux

4.4 Registrar las claves de señal en signal_registry.yaml

register_trading_signals:
  - "TV_EMA_CROSS_LONG_EXTERNAL_SIGNAL"

register_broadcast_signals:
  - "TV_EMA_CROSS_LONG_EXTERNAL_SIGNAL"

4.5 Habilitar señales TV en MagicTradeBot

Edite settings/tradingview.yaml:

enabled: true
bot_name: "MagicTradeBot-1"
stream_backend: "nats"
nats_url: "nats://127.0.0.1:4222"
subject: "trade.signals"

5. Configuración de Alertas en TradingView

URL del Webhook:

https://su-servidor.com:8090/webhook/tradingview

Mensaje (JSON):

{
  "secret":     "su-secreto-largo-aqui",
  "symbol":     "{{ticker}}",
  "side":       "long",
  "strategy":   "EMA_CROSS",
  "confidence": 80.0,
  "timestamp":  {{timenow}}
}

6. Pruebas sin TradingView

Prueba con PowerShell (Windows)

$timestamp = [int]([DateTimeOffset]::UtcNow.ToUnixTimeSeconds())

$body = @{
    secret     = "su-secreto-largo-aqui"
    symbol     = "BTCUSDT"
    side       = "long"
    strategy   = "EMA_CROSS"
    confidence = 85.0
    timestamp  = $timestamp
} | ConvertTo-Json

Invoke-RestMethod -Uri "http://localhost:8090/webhook/tradingview" `
  -Method POST -Body $body -ContentType "application/json"

7. Verificando la Cadena Completa

Verifique los logs del bridge → logs del bot → notificación de Discord/Telegram → registro de la operación en la base de datos.

8. Referencia de Configuración

9. Solución de Problemas

Síntoma Solución
El bridge devuelve 401 INVALID_SECRET El secreto no coincide — cópielo exactamente
La señal llega al bridge pero no al bot Verifique enabled: true y reinicie el bot
'bot_name mismatch' bot_name debe ser idéntico en ambos archivos de configuración

10. Lista de Verificación Rápida

  • Docker Desktop en ejecución
  • Contenedor NATS iniciado con -js
  • Bridge ejecutándose en el puerto 8090
  • Claves de señal registradas en signal_registry.yaml
  • tradingview.yaml habilitado con bot_name coincidente
  • Probado con curl / PowerShell
  • Notificación y operación creadas exitosamente

Guía de Integración de TradingView para MagicTradeBot — Versión 1.0

📎 Related Topics