Guide d’intégration TradingView de MagicTradeBot (Configuration complète avec NATS et webhooks)

1. Aperçu

MagicTradeBot peut recevoir des signaux de trading directement depuis les indicateurs, stratégies et alertes Pine Script de TradingView. Une fois qu’un signal arrive, il passe par le même moteur d’exécution que les signaux internes du bot — le placement d’ordres, le DCA, les décisions intelligentes et les notifications de diffusion fonctionnent de manière identique.

Trois composants fonctionnent ensemble :

  • 🔗 tv-signal-bridge — service Axum autonome qui reçoit les webhooks de TradingView, valide le secret, normalise le symbole et publie sur NATS
  • 📡 NATS JetStream — broker de messages léger fonctionnant dans Docker qui transporte les signaux du bridge vers le bot avec une livraison « at-least-once »
  • 🤖 Écouteur de signaux MagicTradeBot — s’abonne à NATS, dédoublonne, exécute les vérifications du gatekeeper, puis appelle sync_bot_scan_result
INFO
Les signaux TV externes sont des citoyens de première classe. Une fois que la clé du signal est enregistrée dans signal_registry.yaml, le bot le traite exactement comme TOP_GAINER_LONG_SIGNAL ou tout autre signal interne.

2. Format de la clé de signal

Chaque signal TradingView génère une clé selon ce format :

TV_{STRATEGIE}_{SIDE}_EXTERNAL_SIGNAL

ParamètreClé de signal résultante
strategy: EMA_CROSS side: longTV_EMA_CROSS_LONG_EXTERNAL_SIGNAL
strategy: RSI_DIV side: shortTV_RSI_DIV_SHORT_EXTERNAL_SIGNAL
strategy: SUPERTREND side: longTV_SUPERTREND_LONG_EXTERNAL_SIGNAL

3. Prérequis

  • MagicTradeBot installé et en cours d’exécution
  • Binaire tv-signal-bridge compilé et disponible
  • Docker Desktop installé et en cours d’exécution (pour NATS)
  • Plan TradingView payant — Essential ou supérieur
  • Une URL ou IP publique afin que TradingView puisse accéder au bridge

4. Configuration

4.1 Démarrer NATS via Docker

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

4.2 Configurer tv-signal-bridge

Modifiez le fichier config/config.toml :

[bridge]
bot_name    = "MagicTradeBot-1"
hmac_secret = "votre-long-secret-ici"

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

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

4.3 Lancer tv-signal-bridge

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

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

4.4 Enregistrer les clés de signaux dans signal_registry.yaml

register_trading_signals:
  - "TV_EMA_CROSS_LONG_EXTERNAL_SIGNAL"

register_broadcast_signals:
  - "TV_EMA_CROSS_LONG_EXTERNAL_SIGNAL"

4.5 Activer les signaux TV dans MagicTradeBot

Modifiez le fichier settings/tradingview.yaml :

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

5. Configuration de l’alerte TradingView

URL du Webhook :

https://votre-serveur.com:8090/webhook/tradingview

Message (JSON) :

{
  "secret":     "votre-long-secret-ici",
  "symbol":     "{{ticker}}",
  "side":       "long",
  "strategy":   "EMA_CROSS",
  "confidence": 80.0,
  "timestamp":  {{timenow}}
}

6. Test sans TradingView

Test PowerShell (Windows)

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

$body = @{
    secret     = "votre-long-secret-ici"
    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. Vérification de la chaîne complète

Vérifiez dans l’ordre : logs du bridge → logs du bot → notification Discord/Telegram → enregistrement du trade dans la base de données.

8. Référence de configuration

(Les tableaux complets de la section 8 peuvent être ajoutés ici si nécessaire)

9. Dépannage

SymptômeSolution
Le bridge renvoie 401 INVALID_SECRETLe secret ne correspond pas — copiez-le exactement
Le signal arrive au bridge mais pas au botVérifiez enabled: true et redémarrez le bot
'bot_name mismatch'Le bot_name doit être identique dans les deux fichiers de configuration

10. Checklist de référence rapide

  • Docker Desktop en cours d’exécution
  • Conteneur NATS démarré avec l’option -js
  • Bridge en écoute sur le port 8090
  • Clés de signaux enregistrées dans signal_registry.yaml
  • tradingview.yaml activé avec le bot_name correspondant
  • Testé avec curl / PowerShell
  • Notification reçue et trade créé avec succès

📎 Related Topics