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
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