1. Обзор
MagicTradeBot может получать торговые сигналы напрямую от индикаторов TradingView, стратегий и оповещений Pine Script. Когда сигнал поступает, он проходит через тот же механизм выполнения, что и внутренние сигналы бота — размещение ордеров, DCA, интеллектуальные решения и широковещательные уведомления работают идентично.
Три компонента работают вместе:
- 🔗 tv-signal-bridge — отдельный сервис Axum, который получает вебхуки TradingView, проверяет секрет, нормализует символ и публикует в NATS
- 📡 NATS JetStream — легковесный брокер сообщений, работающий в Docker, который доставляет сигналы от моста к боту с гарантией доставки "хотя бы один раз"
- 🤖 Слушатель сигналов MagicTradeBot — подписывается на NATS, удаляет дубликаты, выполняет проверки гейткипера, затем вызывает
sync_bot_scan_result
ИНФОРМАЦИЯ
Внешние TV-сигналы являются полноценными сигналами. Как только ключ сигнала зарегистрирован в
Внешние TV-сигналы являются полноценными сигналами. Как только ключ сигнала зарегистрирован в
signal_registry.yaml,
бот обрабатывает его так же, как TOP_GAINER_LONG_SIGNAL или любой другой внутренний сигнал.
2. Формат ключа сигнала
Каждый сигнал TradingView создает ключ в этом формате:
TV_{СТРАТЕГИЯ}_{СТОРОНА}_EXTERNAL_SIGNAL
| Настройка | Результирующий ключ сигнала |
|---|---|
| стратегия: EMA_CROSS сторона: long | TV_EMA_CROSS_LONG_EXTERNAL_SIGNAL |
| стратегия: RSI_DIV сторона: short | TV_RSI_DIV_SHORT_EXTERNAL_SIGNAL |
| стратегия: SUPERTREND сторона: long | TV_SUPERTREND_LONG_EXTERNAL_SIGNAL |
3. Предварительные требования
- MagicTradeBot установлен и запущен
- Скомпилированный бинарный файл tv-signal-bridge доступен
- Docker Desktop установлен и запущен (для NATS)
- Платная подписка TradingView — Essential или выше
- Публичный URL или IP-адрес, чтобы TradingView мог достичь моста
4. Настройка
4.1 Запуск NATS через Docker
docker run -d \ --name nats \ --restart unless-stopped \ -p 4222:4222 \ -p 8222:8222 \ nats:latest -js
4.2 Настройка tv-signal-bridge
Отредактируйте config/config.toml:
[bridge] bot_name = "MagicTradeBot-1" hmac_secret = "ваш-длинный-секрет-здесь" [stream] backend = "nats" nats_url = "nats://127.0.0.1:4222" subject = "trade.signals" [symbols.mappings] "BTCUSDT" = "BTC/USDT" "ETHUSDT" = "ETH/USDT"
4.3 Запуск tv-signal-bridge
# Windows ./tv-signal-bridge-win.exe # Linux / macOS ./tv-signal-bridge-linux
4.4 Регистрация ключей сигналов в signal_registry.yaml
register_trading_signals: - "TV_EMA_CROSS_LONG_EXTERNAL_SIGNAL" register_broadcast_signals: - "TV_EMA_CROSS_LONG_EXTERNAL_SIGNAL"
4.5 Включение TV-сигналов в MagicTradeBot
Отредактируйте settings/tradingview.yaml:
enabled: true bot_name: "MagicTradeBot-1" stream_backend: "nats" nats_url: "nats://127.0.0.1:4222" subject: "trade.signals"
5. Настройка оповещения TradingView
URL вебхука:
https://your-server.com:8090/webhook/tradingview
Сообщение (JSON):
{
"secret": "ваш-длинный-секрет-здесь",
"symbol": "{{ticker}}",
"side": "long",
"strategy": "EMA_CROSS",
"confidence": 80.0,
"timestamp": {{timenow}}
}
6. Тестирование без TradingView
Тест PowerShell (Windows)
$timestamp = [int]([DateTimeOffset]::UtcNow.ToUnixTimeSeconds())
$body = @{
secret = "ваш-длинный-секрет-здесь"
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. Проверка всей цепочки
Проверьте логи моста → логи бота → уведомление в Discord/Telegram → запись сделки в базе данных.
8. Справочник по конфигурации
9. Устранение неполадок
| Симптом | Решение |
|---|---|
| Мост возвращает 401 INVALID_SECRET | Несоответствие секрета — скопируйте точно |
| Сигнал поступает на мост, но не доходит до бота | Проверьте enabled: true и перезапустите бота |
| 'bot_name mismatch' | bot_name должен быть одинаковым в обоих файлах конфигурации |
10. Контрольный список быстрого старта
- Docker Desktop запущен
- Контейнер NATS запущен с параметром -js
- Мост работает на порту 8090
- Ключи сигналов зарегистрированы в signal_registry.yaml
- tradingview.yaml активирован с соответствующим bot_name
- Протестировано с помощью curl / PowerShell
- Уведомление и сделка успешно созданы