Алерты TradingView в Discord (настройка вебхука)
Как отправлять алерты TradingView в канал Discord через вебхуки. Пошаговая настройка, правильный формат JSON, динамические плейсхолдеры, embed и решение частых ошибок.
🇬🇧 Доступно также на English
Зачем отправлять алерты TradingView в Discord?
Алерты TradingView мощные, но по умолчанию они показываются лишь как всплывающие окна, письма или пуши в приложении. Отправка их в канал Discord даёт общий ленту с метками времени, которую видит вся ваша торговая группа — входы, выходы, пересечения индикаторов и сигналы стратегий в одном месте.
TradingView умеет вызывать вебхук при срабатывании алерта, а Discord принимает вебхуки нативно. Подвох: TradingView отправляет текст алерта ровно так, как вы его написали, поэтому сообщение должно быть валидным JSON для Discord. Здесь разберём настройку и форматирование, на котором спотыкаются большинство.
Требования
- Платный тариф TradingView (Essential, Plus или Premium). Вебхук-алерты недоступны на бесплатном тарифе.
- Включённая двухфакторная аутентификация в аккаунте TradingView — без 2FA добавить URL вебхука не получится.
- URL вебхука Discord. Создайте в Настройки сервера → Интеграции → Вебхуки → Новый вебхук → Копировать URL. Новичок? См. руководство по настройке.
Шаг 1: Добавьте вебхук в алерт
- Откройте график и нажмите кнопку Алерт (иконка будильника) или
Alt + A. - Настройте условие (пересечение индикатора, уровень цены, сигнал стратегии и т. д.).
- Прокрутите до вкладки Уведомления в окне алерта.
- Отметьте Веб-хук URL и вставьте URL вебхука Discord.
TradingView отправит POST-запрос на этот URL в момент срабатывания алерта.
Шаг 2: Оформите сообщение как JSON для Discord
Это ключевой шаг. В поле Сообщение алерта не пишите обычный текст. Discord игнорирует сырой текст из вебхука — он ожидает JSON. Простейшее валидное сообщение:
{ "content": "Сработал сигнал BUY" }
Эта строка отправит «Сработал сигнал BUY» в ваш канал. Если вставить обычное предложение, Discord отклонит его с 400 Bad Request, и ничего не появится.
Шаг 3: Подставляйте значения через плейсхолдеры
TradingView заменяет плейсхолдеры {{...}} на актуальные значения перед отправкой. Ставьте их внутри JSON-строки:
{ "content": "{{strategy.order.action}} {{ticker}} @ {{close}} — таймфрейм {{interval}}" }
Сработавший алерт отправит примерно:
buy BTCUSDT @ 64210.5 — таймфрейм 15
Полезные плейсхолдеры:
| Плейсхолдер | Значение |
|---|---|
{{ticker}} | Символ, напр. BTCUSDT |
{{exchange}} | Биржа, напр. BINANCE |
{{close}} | Цена закрытия бара-триггера |
{{open}} {{high}} {{low}} | Значения OHLC |
{{volume}} | Объём бара |
{{interval}} | Таймфрейм графика |
{{time}} | Время бара (UTC) |
{{strategy.order.action}} | buy или sell (алерты стратегии) |
{{strategy.position_size}} | Текущий размер позиции |
Следите за кавычками. Всё внутри JSON должно остаться валидным после подстановки. Оборачивайте текстовые значения в двойные кавычки и избегайте плейсхолдеров, которые могут содержать случайную
"— сломанная строка станет невалидным JSON, и Discord вернёт 400.
Шаг 4: Отправьте embed вместо простого текста
Простой content работает, но embed с заголовком, цветом и полями читается куда лучше для торговых сигналов. Вставьте полный объект embed как сообщение:
{
"embeds": [
{
"title": "{{strategy.order.action}} {{ticker}}",
"color": 5763719,
"fields": [
{ "name": "Цена", "value": "{{close}}", "inline": true },
{ "name": "Биржа", "value": "{{exchange}}", "inline": true },
{ "name": "Таймфрейм", "value": "{{interval}}", "inline": true }
],
"footer": { "text": "Алерт TradingView" }
}
]
}
Используйте зелёный (5763719) для покупок и красный (15548997) для продаж. Удобнее всего собрать макет в бесплатном конструкторе вебхуков, скопировать сгенерированный JSON и вставить свои {{плейсхолдеры}} в значения полей.
Про цвета buy/sell: TradingView отправляет ровно то сообщение, что вы сохранили, поэтому он не может выбрать цвет динамически. Создайте два алерта — один на условие покупки с зелёным embed, второй на продажу с красным.
Шаг 5: Сообщения alert() в Pine Script
Если вы генерируете сигналы из стратегии на Pine Script, можно собрать JSON прямо в коде и передать в alert():
//@version=5
strategy("Discord Signal", overlay=true)
longCondition = ta.crossover(ta.sma(close, 10), ta.sma(close, 30))
if longCondition
strategy.entry("Long", strategy.long)
alert('{"content": "LONG ' + syminfo.ticker + ' @ ' + str.tostring(close) + '"}', alert.freq_once_per_bar_close)
Задайте условие алерта «Любой вызов функции alert()» и оставьте поле сообщения пустым — JSON приходит из скрипта. Используйте alert.freq_once_per_bar_close, чтобы избежать дублей из-за перерисовки.
Шаг 6: Упоминайте роль на важных сигналах
Чтобы пингануть роль при приоритетном сигнале, добавьте ID роли и блок allowed_mentions, чтобы пинг реально уведомлял. См. полный гайд по упоминаниям:
{
"content": "<@&ROLE_ID> {{strategy.order.action}} {{ticker}} @ {{close}}",
"allowed_mentions": { "parse": ["roles"] }
}
Решение проблем
| Проблема | Причина и решение |
|---|---|
| Ничего не приходит, алерт «отправлен» | Сообщение не является валидным JSON. Проверьте через гайд по ошибкам и валидатор JSON. |
400 Bad Request в логах TradingView | Плейсхолдер сломал JSON, либо контент больше 2000 символов / превышены лимиты embed. |
| Не получается добавить URL вебхука | Включите 2FA в аккаунте TradingView и убедитесь, что у вас платный тариф. |
| Дублирующиеся сигналы | Используйте alert.freq_once_per_bar_close в Pine или режим «Раз за бар на закрытии». |
| Вебхук перестал работать спустя месяцы | Вебхук мог быть удалён/пересоздан в Discord — вставьте свежий URL. |
Лимиты
Вебхук Discord принимает около 30 запросов в минуту. Высокочастотные скальп-алерты по нескольким символам могут упереться в лимит и вернуть 429. Если алертите много тикеров, разводите группы символов по разным вебхукам в разных каналах.
Что дальше
Теперь вы можете стримить сигналы TradingView прямо в Discord аккуратными цветными embed. Соберите макет алерта визуально в конструкторе вебхуков и вставьте JSON в TradingView со своими {{плейсхолдерами}}. Больше паттернов автоматизации — в гайде по уведомлениям и автоматизации.
Похожие статьи
- Настройка вебхука Discord — полное руководство за 2 минуты — Создайте URL вебхука
- Полное руководство по форматированию embed в Discord — Собирайте embed для сигналов
- Упоминания в вебхуках Discord — allowed_mentions, роли и пользователи — Пингуйте роли на ключевых сигналах
- Ошибки вебхуков Discord: 400, 401, 403, 404, 429 — причины и решения — Почините упавший алерт
Попробуйте в нашем инструменте
Открыть конструктор Discord Webhook