Guia de Integração do TradingView com o MagicTradeBot (Configuração completa com NATS e webhooks)

1. Visão Geral

O MagicTradeBot pode receber sinais de negociação diretamente de indicadores do TradingView, estratégias e alertas Pine Script. Quando um sinal chega, ele passa pelo mesmo mecanismo de execução dos sinais internos do bot — colocação de ordens, DCA, decisões inteligentes e notificações broadcast funcionam de forma idêntica.

Três componentes trabalham juntos:

  • 🔗 tv-signal-bridge — serviço Axum independente que recebe webhooks do TradingView, valida o segredo, normaliza o símbolo e publica no NATS
  • 📡 NATS JetStream — broker de mensagens leve rodando em Docker que transporta sinais da ponte para o bot com entrega "at-least-once"
  • 🤖 Listener de sinais do MagicTradeBot — assina o NATS, remove duplicatas, executa verificações do gatekeeper e então chama sync_bot_scan_result
INFO
Sinais TV externos são cidadãos de primeira classe. Uma vez que a chave do sinal esteja registrada em signal_registry.yaml, o bot a trata de forma idêntica a TOP_GAINER_LONG_SIGNAL ou qualquer outro sinal interno.

2. Formato da Chave de Sinal

Cada sinal do TradingView produz uma chave neste formato:

TV_{ESTRATÉGIA}_{LADO}_EXTERNAL_SIGNAL

Configuração Chave de Sinal Resultante
estratégia: EMA_CROSS lado: long TV_EMA_CROSS_LONG_EXTERNAL_SIGNAL
estratégia: RSI_DIV lado: short TV_RSI_DIV_SHORT_EXTERNAL_SIGNAL
estratégia: SUPERTREND lado: long TV_SUPERTREND_LONG_EXTERNAL_SIGNAL

3. Pré-requisitos

  • MagicTradeBot instalado e em execução
  • Binário do tv-signal-bridge compilado e disponível
  • Docker Desktop instalado e em execução (para o NATS)
  • Plano pago do TradingView — Essential ou superior
  • Uma URL pública ou IP para que o TradingView consiga acessar a ponte

4. Configuração

4.1 Iniciar o NATS via Docker

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

4.2 Configurar o tv-signal-bridge

Edite config/config.toml:

[bridge]
bot_name    = "MagicTradeBot-1"
hmac_secret = "seu-segredo-longo-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 o tv-signal-bridge

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

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

4.4 Registrar as chaves de sinal no signal_registry.yaml

register_trading_signals:
  - "TV_EMA_CROSS_LONG_EXTERNAL_SIGNAL"

register_broadcast_signals:
  - "TV_EMA_CROSS_LONG_EXTERNAL_SIGNAL"

4.5 Ativar sinais TV no 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. Configuração de Alertas no TradingView

URL do Webhook:

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

Mensagem (JSON):

{
  "secret":     "seu-segredo-longo-aqui",
  "symbol":     "{{ticker}}",
  "side":       "long",
  "strategy":   "EMA_CROSS",
  "confidence": 80.0,
  "timestamp":  {{timenow}}
}

6. Testando Sem o TradingView

Teste com PowerShell (Windows)

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

$body = @{
    secret     = "seu-segredo-longo-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 a Cadeia Completa

Verifique os logs da ponte → logs do bot → notificação no Discord/Telegram → registro da negociação no banco de dados.

8. Referência de Configuração

9. Solução de Problemas

Sintoma Solução
Ponte retorna 401 INVALID_SECRET Segredo não corresponde — copie exatamente
Sinal chega na ponte mas não no bot Verifique enabled: true e reinicie o bot
'bot_name mismatch' bot_name deve ser idêntico em ambos os arquivos de configuração

10. Lista de Verificação Rápida

  • Docker Desktop em execução
  • Container NATS iniciado com -js
  • Ponte em execução na porta 8090
  • Chaves de sinal registradas no signal_registry.yaml
  • tradingview.yaml habilitado com bot_name correspondente
  • Testado com curl / PowerShell
  • Notificação e negociação criadas com sucesso

📎 Related Topics