Руководство по интеграции TradingView с MagicTradeBot (Полная настройка с NATS и вебхуками)

  • Home
  • Documentation
  • Руководство по интеграции TradingView с MagicTradeBot

1. Обзор

MagicTradeBot может получать торговые сигналы напрямую от индикаторов TradingView, стратегий и оповещений Pine Script. Когда сигнал поступает, он проходит через тот же механизм выполнения, что и внутренние сигналы бота — размещение ордеров, DCA, интеллектуальные решения и широковещательные уведомления работают идентично.

Три компонента работают вместе:

  • 🔗 tv-signal-bridge — отдельный сервис Axum, который получает вебхуки TradingView, проверяет секрет, нормализует символ и публикует в NATS
  • 📡 NATS JetStream — легковесный брокер сообщений, работающий в Docker, который доставляет сигналы от моста к боту с гарантией доставки "хотя бы один раз"
  • 🤖 Слушатель сигналов MagicTradeBot — подписывается на NATS, удаляет дубликаты, выполняет проверки гейткипера, затем вызывает sync_bot_scan_result
ИНФОРМАЦИЯ
Внешние 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
  • Уведомление и сделка успешно созданы

📎 Related Topics