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