Guida all'integrazione TradingView di MagicTradeBot (Configurazione completa con NATS e webhook)

1. Panoramica

MagicTradeBot può ricevere segnali di trading direttamente da indicatori TradingView, strategie e alert Pine Script. Una volta che un segnale arriva, passa attraverso lo stesso motore di esecuzione dei segnali interni del bot — piazzamento ordini, DCA, decisioni intelligenti e notifiche broadcast funzionano tutti in modo identico.

Tre componenti lavorano insieme:

  • 🔗 tv-signal-bridge — servizio Axum autonomo che riceve i webhook di TradingView, valida il segreto, normalizza il simbolo e pubblica su NATS
  • 📡 NATS JetStream — broker di messaggi leggero in esecuzione in Docker che trasporta i segnali dal bridge al bot con consegna at-least-once
  • 🤖 Listener segnali MagicTradeBot — si sottoscrive a NATS, deduplica, esegue i controlli gatekeeper, quindi chiama sync_bot_scan_result
INFO
I segnali TV esterni sono cittadini di prima classe. Una volta che la chiave del segnale è registrata in signal_registry.yaml, il bot la tratta in modo identico a TOP_GAINER_LONG_SIGNAL o qualsiasi altro segnale interno.

2. Formato della Chiave Segnale

Ogni segnale TradingView produce una chiave in questo formato:

TV_{STRATEGIA}_{LATO}_EXTERNAL_SIGNAL

Impostazione Chiave Segnale Risultante
strategia: EMA_CROSS lato: long TV_EMA_CROSS_LONG_EXTERNAL_SIGNAL
strategia: RSI_DIV lato: short TV_RSI_DIV_SHORT_EXTERNAL_SIGNAL
strategia: SUPERTREND lato: long TV_SUPERTREND_LONG_EXTERNAL_SIGNAL

3. Prerequisiti

  • MagicTradeBot installato e in esecuzione
  • Binario tv-signal-bridge compilato e disponibile
  • Docker Desktop installato e in esecuzione (per NATS)
  • Piano a pagamento TradingView — Essential o superiore
  • Un URL pubblico o IP affinché TradingView possa raggiungere il bridge

4. Configurazione

4.1 Avviare NATS tramite Docker

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

4.2 Configurare tv-signal-bridge

Modificare config/config.toml:

[bridge]
bot_name    = "MagicTradeBot-1"
hmac_secret = "il-tuo-lungo-segreto-qui"

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

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

4.3 Avviare tv-signal-bridge

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

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

4.4 Registrare le chiavi segnale in signal_registry.yaml

register_trading_signals:
  - "TV_EMA_CROSS_LONG_EXTERNAL_SIGNAL"

register_broadcast_signals:
  - "TV_EMA_CROSS_LONG_EXTERNAL_SIGNAL"

4.5 Abilitare i segnali TV in MagicTradeBot

Modificare settings/tradingview.yaml:

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

5. Configurazione Alert TradingView

URL Webhook:

https://il-tuo-server.com:8090/webhook/tradingview

Messaggio (JSON):

{
  "secret":     "il-tuo-lungo-segreto-qui",
  "symbol":     "{{ticker}}",
  "side":       "long",
  "strategy":   "EMA_CROSS",
  "confidence": 80.0,
  "timestamp":  {{timenow}}
}

6. Test senza TradingView

Test PowerShell (Windows)

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

$body = @{
    secret     = "il-tuo-lungo-segreto-qui"
    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. Verifica della Catena Completa

Controllare i log del bridge → log del bot → notifica Discord/Telegram → record dell'operazione nel database.

8. Riferimento Configurazione

9. Risoluzione dei Problemi

Sintomo Soluzione
Il bridge restituisce 401 INVALID_SECRET Il segreto non corrisponde — copiare esattamente
Il segnale arriva al bridge ma non al bot Controllare enabled: true e riavviare il bot
'bot_name mismatch' bot_name deve essere identico in entrambi i file di configurazione

10. Checklist di Riferimento Rapido

  • Docker Desktop in esecuzione
  • Container NATS avviato con -js
  • Bridge in esecuzione sulla porta 8090
  • Chiavi segnale registrate in signal_registry.yaml
  • tradingview.yaml abilitato con bot_name corrispondente
  • Testato con curl / PowerShell
  • Notifica e operazione create con successo

📎 Related Topics