Диагностика занимает меньше времени, если разделить расчет и доставку. Запись в Alert Log означает, что сервер TradingView признал условие выполненным. Ее отсутствие означает, что до доставки дело не дошло. Это первая развилка, после которой не нужно проверять все настройки подряд.
Быстрая проверка за пять минут
- Откройте Alert Manager и выберите проблемный алерт.
- Посмотрите статус: Active, Triggered, Stopped или Expired.
- Откройте Alert Log и найдите событие по имени и времени.
- Сверьте тикер, биржу, таймфрейм и условие.
- Если событие есть, проверьте только включенный канал доставки.
Ниже причины расположены в том порядке, в котором их удобно исключать.
1. Условие визуально похоже на выполненное, но не выполнено математически
На графике линия толщиной в несколько пикселей может казаться пересеченной. В данных значения могли только приблизиться друг к другу. Особенно часто это происходит с округлением цены, индикаторами в отдельной шкале и синтетическими свечами.
Сравните фактические числа через Data Window или временный plot. Для цены учитывайте минимальный шаг инструмента. Условие close > level не равно high > level: первое требует закрытия выше уровня, второе — любого касания внутри свечи.
2. Выбрана неправильная частота
Once Per Bar Close не сработает до закрытия текущего бара. На дневном таймфрейме ожидание может длиться до конца торговой сессии. Only Once, напротив, отключает повторные события после первого выполнения.
| Симптом | Возможная частота | Что проверить |
|---|---|---|
| Сигнал появляется только в конце свечи | Once Per Bar Close | Время закрытия бара и сессию |
| Было одно событие, дальше тишина | Only Once | Статус алерта после первого события |
| Слишком много дублей | All | Число вызовов alert() внутри бара |
| В истории условие есть, в реальном времени не было | Любая | Когда создан алерт и был ли бар историческим |
Механику частот и серверной копии разбирает руководство как работают алерты TradingView.
3. Алерт создан на другом таймфрейме
Ценовой уровень может не зависеть от интервала, но расчет RSI, средней, пользовательского скрипта и объекта рисования зависит. Алерт на 15 минутах не обязан повторять метку того же индикатора на часовом графике.
Откройте настройки алерта и восстановите контекст создания. Если есть сомнения, создайте новый тестовый алерт с понятным именем, включающим интервал: BTC RSI 15m close.
4. Используется другой тикер или источник данных
BINANCE:BTCUSDT и COINBASE:BTCUSD описывают разные рынки. Даже одинаковый базовый актив торгуется с разным стаканом, объемом и последней ценой. Для акций различаться могут основная биржа и альтернативный поток.
Вставляйте в сообщение {{exchange}}:{{ticker}}. Тогда журнал сам покажет, по какой серии было принято решение. Причины расхождений подробнее разобраны в статье почему котировки TradingView отличаются от брокера.
5. Настройки индикатора изменили после создания алерта
TradingView сохраняет снимок индикатора. Если поменять период средней с 20 на 50, график покажет новый расчет, а старый алерт продолжит следить за периодом 20.
Официальная справка прямо предупреждает: изменение параметров индикатора не меняет уже созданный алерт. Решение одно — удалить его и создать заново.
6. Pine Script обновлен, а алерт нет
Сохранение кода, публикация новой версии и даже удаление индикатора с графика не заменяют серверную копию. После исправления логики:
- сохраните скрипт;
- добавьте актуальную версию на график;
- проверьте параметры;
- удалите старый алерт;
- создайте новый;
- проведите тестовое срабатывание.
Полезно добавлять номер версии в сообщение, например "script_version": 4. Так в журнале сразу видно устаревшую конфигурацию.
7. Условие зависит от незакрытой свечи
На открытом баре high, low, close и значения многих индикаторов меняются с каждым обновлением. Метка могла появиться и исчезнуть до того, как частота позволила отправить событие. После перезагрузки такой момент уже не виден в истории.
Для воспроизводимого сигнала проверяйте barstate.isconfirmed или используйте частоту по закрытию бара. Это снижает скорость, но отделяет подтвержденное значение от промежуточного. Если проблема повторяется, изучите почему индикатор перерисовывается.
8. Алерт истек или был остановлен
У алертов есть срок жизни. В официальном введении указан обычный максимальный срок два месяца; бессрочная опция доступна на отдельных планах. Старые неактивные алерты также могут автоматически деактивироваться при сочетании возраста, отсутствия срабатываний и отсутствия правок.
Проверьте колонку Status, дату Expiration и журнал изменений. Продление тарифа само по себе не обязано изменить срок уже созданного алерта — его настройки нужно открыть и сохранить заново.
9. Алерт остановлен из-за высокой частоты
TradingView ограничивает обычный алерт пятнадцатью срабатываниями за три минуты. При превышении он останавливается. Для watchlist alerts действуют дополнительные пороги: по каждому символу и по списку в целом. Актуальные значения опубликованы в справке Alert was triggered too often and stopped.
Не лечите проблему автоматическим перезапуском. Сначала устраните поток дублей:
- замените
Allна один раз за бар; - вызывайте
alert()только при переходе состояния, а не пока условие истинно; - уменьшите список символов;
- добавьте cooldown в Pine Script;
- удаляйте дубли на стороне webhook по идентификатору события.
10. Push заблокирован системой или браузером
Если запись есть в Alert Log, но push не пришел, расчет исправен. Проверьте:
- вход в тот же аккаунт TradingView;
- разрешения уведомлений у приложения и операционной системы;
- режим «Не беспокоить»;
- фоновую работу и энергосбережение;
- разрешение сайта на уведомления в браузере;
- выбран ли Notify on App или Show Pop-up в самом алерте.
Для надежного контроля не используйте push как единственный аудит. Alert Log остается источником факта срабатывания.
11. Письмо попало в фильтр или отправляется не на тот адрес
TradingView берет email из профиля. Проверьте адрес, папки «Спам» и «Промоакции», правила почтового ящика и задержку у провайдера. Письмо — удобный архив, но не лучший транспорт для критичного по времени сигнала.
12. Webhook получил ошибку или не успел ответить
Если журнал содержит событие, откройте колонку Webhook status. Типовые причины:
- неверный URL;
- TLS-сертификат не проходит проверку;
- сервер отвечает дольше трех секунд;
- используется порт, отличный от 80 или 443;
- endpoint временно недоступен;
- тело не соответствует ожидаемому JSON;
- включена авторизация, которую TradingView не передает в нужном формате.
Официальная инструкция по webhook указывает ограничения по портам, трехсекундный таймаут и отсутствие поддержки IPv6. Архитектуру надежного приемника рассматривает статья что такое webhook TradingView.
Контрольный тест без ожидания рынка
Создайте временное условие рядом с текущей ценой, которое безопасно сработает один раз. В сообщение добавьте уникальный маркер:
{
"event": "delivery_test",
"test_id": "tv-2026-07-17-01",
"symbol": "{{exchange}}:{{ticker}}",
"time": "{{time}}"
}
После события сверьте три времени: запись в Alert Log, прием на сервере и отображение в конечной системе. Разница покажет, на каком участке появилась задержка.
Вывод
Неисправный алерт нужно разбирать как цепочку, а не как одну кнопку. Нет записи в Alert Log — проверяйте условие, контекст и статус. Есть запись — оставьте Pine Script в покое и диагностируйте доставку. Такой порядок быстро отсекает большую часть причин и не заставляет пересоздавать рабочую логику вслепую.
