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
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ètre | Clé de signal résultante |
|---|---|
| strategy: EMA_CROSS side: long | TV_EMA_CROSS_LONG_EXTERNAL_SIGNAL |
| strategy: RSI_DIV side: short | TV_RSI_DIV_SHORT_EXTERNAL_SIGNAL |
| strategy: SUPERTREND side: long | TV_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ôme | Solution |
|---|---|
| Le bridge renvoie 401 INVALID_SECRET | Le secret ne correspond pas — copiez-le exactement |
| Le signal arrive au bridge mais pas au bot | Vé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