Справка ForecastCity

Как написать текст оповещения и настроить вебхуки

9 минут чтения

Делитесь и получайте награды

Посоветуйте эту статью друзьям или своим подписчикам в соцсетях. Просто скопируйте ссылку ниже и поделитесь ею. Когда кто-то переходит по вашей ссылке и оформляет подписку, вы оба получаете награду.

Готовим вашу ссылку…

Подробнее о реферальной программе
ForecastCity · Руководство «Оповещения»
Все статьи руководства «Оповещения»

Каждое оповещение отправляет одно сообщение во все отмеченные вами каналы. Само по себе сообщение указывает, что произошло, какая цена была в этот момент и продолжает ли работать оповещение. Добавьте заметку о своём торговом плане, чтобы сразу вспомнить идею ещё до открытия графика. Настроить оповещение и его сообщение можно просто, быстро и точно: введите текст в редакторе либо скажите голосом или напишите в AI Trading Assistant.

Если вы используете собственную программу, Discord или Slack, вебхук отправит каждое оповещение и туда, без ручного копирования. В этом руководстве описаны оба инструмента.

Пример: оповещение по EURUSD, которое срабатывает, когда цена пересекает уровень 1.09 снизу вверх на графике 5m.

Что содержит автоматическое сообщение

Если поле Message пустое, оповещение формирует сообщение автоматически в момент срабатывания. Для нашего примера текст выглядит так:

EURUSD crossed above 1.09
Price 1.0901.
This alert is now off. It was set to fire once.

Первая строка сообщает, что произошло, словами редактора оповещений. Во второй строке приводятся значения на момент срабатывания. Последняя строка указывает, продолжает ли работать оповещение. В примере выбран режим Once only, поэтому оповещение выключается. При других вариантах настройки Trigger последняя строка имеет вид «This alert stays on.» (оповещение остаётся включённым).

Остальные оповещения строятся в том же порядке. Вот несколько примеров первых строк и следующих за ними строк со значениями:

  • Линия: «GBPJPY touched 1h Resistance R1» и «Price 210.16, line at 210.20.»

  • Пробой линии: «GBPJPY broke above 1h Resistance R1» и «The 1h candle closed at 210.32, above the line at 210.20.»

  • Индикатор: «BTCUSD: 1h RSI(14) crossed above 70» и «RSI(14) was 71.4 when the 1h candle closed at 105240.50.»

  • Изменение прогноза: «GBPJPY: 1h forecast turned bearish» и «Before: bullish above 209.80. Now: bearish below 209.40.»

Оповещение с несколькими условиями сначала сообщает, сколько условий выполнилось, а затем выводит отдельную строку для каждого выполненного условия:

BTCUSD: both conditions met
• Price crossed above 105000: the 1h candle closed at 105240.50
• 1h RSI(14) is above 55 (now 58.2)
This alert stays on.

Если условий больше, первая строка имеет вид, например, «all 3 conditions met» (выполнены все 3 условия) или «2 of 3 conditions met» (выполнено 2 из 3 условий). Когда выполнилось только одно условие, например со связкой or, в первой строке указывается это условие, а ниже следуют его значения.

Как написать собственное сообщение

  1. Откройте редактор оповещений и перейдите на вкладку Options.

  2. Нажмите на строку Message. Пока поле пустое, в строке отображается Auto. Под ней откроется текстовое поле.

  3. Введите текст сообщения. Поле вмещает до 400 символов.

  4. Чтобы подставить актуальное значение в момент срабатывания, откройте список Available variables под полем. Скопируйте переменную точно, вместе с двойными фигурными скобками.

Открытая строка Message на вкладке Options с пустым текстовым полем, подсказкой под ним и разделом Available variables.
Открытое пустое поле Message: в таком виде оповещение отправляет автоматическое сообщение.
  1. Automatic message: пустое текстовое поле. Введите сюда свой текст или оставьте поле пустым.

  2. Строка под полем: «Leave it blank and the alert says what happened and at what price. A message of your own is sent first, with that under it.» (если оставить поле пустым, оповещение само напишет, что произошло и по какой цене; ваш собственный текст отправляется первой строкой, а автоматический добавляется ниже).

  3. Available variables: переменные с актуальными значениями, которые можно вставить в сообщение.

Ваш текст становится первой строкой, а следом за ним идёт автоматический текст. Например, такое сообщение:

{{symbol}} on {{timeframe}}: check the 1h trend before entering.

приходит в следующем виде:

EURUSD on 5m: check the 1h trend before entering.
EURUSD crossed above 1.09. Price 1.0901.
This alert is now off. It was set to fire once.

Цена и сработавшее условие уже содержатся в строках под вашим текстом. Используйте собственное сообщение для того, чего нет в автоматических строках, например для напоминания о вашем торговом плане.

Введённое сообщение также становится названием оповещения в списке Alerts. Если сообщение не задано, в списке отображается название, составленное из условия. Для ценового уровня оно короткое, например «EURUSD crossing up 1.09». Для линии или нескольких условий оно записывается так же, как в редакторе, например «GBPJPY: 1h Price touches 1h Resistance R1». Если вы измените условие, это название обновится вместе с ним. При повторном открытии оповещения поле Message остаётся пустым. Оповещения, сохранённые ранее без текста сообщения, также отображаются в списке с такими названиями.

Как выглядит сообщение в разных каналах

Во все каналы приходит одно и то же сообщение, оформленное под конкретный канал:

Канал Что отображается
Уведомление в приложении Первая строка полужирным шрифтом, а под ней строки со значениями.
Notify my devices Первая строка в качестве заголовка, остальные строки под ней.
Send to MetaTrader Первая строка в качестве заголовка, остальные строки под ней. Рядом с сообщением MetaTrader показывает собственное время.
Telegram Текст сообщения, время в вашем часовом поясе и ссылка на график.
Send email Текст сообщения с датой и временем в вашем часовом поясе.
Webhook URL В Discord и Slack приходит сообщение со временем в UTC. В режиме Raw JSON ваша программа получает описанные ниже переменные.

В Telegram время записывается так: «24 Sep, 11:02 London time». Если часовой пояс указан неверно, выберите свой в настройке Timezone на странице Your profile. Если ваш часовой пояс не задан в ForecastCity, время выводится в UTC.

Ссылка в сообщении Telegram, письме по электронной почте, уведомлении на телефоне или всплывающем окне MetaTrader открывает график этого инструмента вместе с панелью Alerts. Для большинства оповещений 4CM-AI она открывает график в режиме просмотра срабатывания (Alert observation).

Как добавить актуальные значения с помощью переменных

В момент срабатывания оповещения каждая переменная заменяется своим значением. Вот список переменных из раздела Available variables:

Переменная Что подставляется Пример
{{symbol}} Тикер инструмента EURUSD
{{price}} и {{close}} Цена в момент срабатывания оповещения 1.0901
{{condition_text}} Что произошло, без указания тикера Price crossed above 1.09
{{condition}} Краткий код условия CROSSING_UP 1.09
{{timeframe}} Таймфрейм оповещения 5m
{{time_iso}} Дата и время в UTC 2026-09-24 10:02 UTC
{{time}} То же время в секундах (для программ) 1790244120
{{time_now}} Момент отправки сообщения в виде числа 1790244121
{{exchange}} Источник котировок TwelveData
{{status}} Продолжает ли работать оповещение This alert stays on.
{{alert_url}} Ссылка на график инструмента с вашими оповещениями веб-адрес
{{name}} Ваше сообщение с подставленными значениями переменных или название из списка Alerts EURUSD crossing up 1.09

Для линии переменная {{condition_text}} принимает вид «Price touched 1h Resistance R1». Если условий несколько, выполненные условия соединяются словом and. После срабатывания оповещения с режимом Once only переменная {{status}} содержит строку «This alert is now off. It was set to fire once.». Для оповещения с несколькими условиями, линией или индикатором переменная {{condition}} возвращает значение TREE. Эта переменная служит кодом для программ.

В оповещениях 4CM-AI переменная {{forecast_summary}} кратко описывает изменение прогноза, а {{forecast_symbol}} возвращает тикер прогноза. Переменная {{forecast_cycle}} представляет собой счётчик, который увеличивается каждый раз, когда оповещение начинает новый цикл наблюдения. Если в сообщении есть переменная {{forecast_summary}}, автоматические строки снизу не добавляются, так как сводка уже описывает произошедшее.

В большинстве оповещений 4CM-AI переменные {{price}} и {{close}} остаются пустыми, поскольку у них нет одной конкретной цены срабатывания. Переменная {{time_iso}} использует время UTC, поэтому оно может отличаться от часов на вашем экране. Несуществующая переменная остаётся в тексте как есть: написанная с опечаткой {{prices}} придёт как {{prices}}.

Как отправлять оповещения на вебхук

Вебхук отправляет каждое оповещение на веб-адрес (endpoint), где его принимает ваша программа, канал Discord или канал Slack. Поддержка вебхуков должна входить в ваш тариф подписки.

  1. На вкладке Options в разделе Notifications установите флажок Webhook URL. Появятся поле адреса, выбор формата Format и поле тела запроса.

  2. Вставьте адрес вашего получателя. Он должен начинаться с http:// или https://.

  3. Задайте для настройки Format значение Raw JSON и оставьте поле тела запроса пустым.

  4. Нажмите кнопку Create (или Save, если редактируете существующее оповещение).

Отмеченный флажок Webhook URL с введённым адресом, форматом Raw JSON и пустым полем тела запроса.
Включённый параметр Webhook URL с адресом и форматом Raw JSON. При пустом поле тела запроса отправляются данные по умолчанию.
  1. Адрес, который слушает ваш получатель. Используйте стандартные порты: 80 или 443.

  2. Format: выберите Raw JSON для собственной программы либо Discord или Slack для соответствующих сервисов.

Если оставить поле тела запроса пустым, получатель примет объект JSON со всеми переменными из таблицы выше, а также полями alertId и triggerId. Эти два поля идентифицируют само оповещение и конкретное срабатывание. Прежде чем настраивать логику обработки полей на своей стороне, проверьте один реальный запрос.

Под полем редактор показывает IP-адрес сервера, с которого приходят наши запросы. Добавьте его в список разрешённых (allowlist), если ваш получатель принимает запросы только с известных адресов.

Требования к адресу

  • Публичный адрес со стандартным портом: 80 для http, 443 для https. Сообщения на другие порты, на localhost или на адреса в частных сетях не отправляются.

  • Внутри адреса не должно быть имени пользователя или пароля.

  • Ответ должен прийти в течение 3 секунд с самого указанного адреса. Перенаправление (redirect) на другой адрес считается ошибкой доставки.

Редактор проверяет только то, что адрес начинается с http:// или https://. Остальные требования проверяются в момент отправки сообщения, поэтому протестируйте свой адрес на реальном оповещении. Для ценовых и технических оповещений при временной ошибке на стороне получателя отправка повторяется ещё до двух раз. Для оповещений 4CM-AI после таймаута или ошибки сервера сообщение повторно не отправляется, поскольку ваш получатель уже мог выполнить действие по первому запросу.

Как написать собственное тело запроса для вебхука

В поле тела запроса можно вписать шаблон с теми же переменными, что и в обычном сообщении. Максимальная длина составляет 2000 символов. В само поле можно ввести и больше текста, но при сохранении слишком длинное тело запроса не пройдёт проверку.

В режиме Raw JSON для получателя, который ждёт компактный объект, тело запроса может выглядеть так:

{"symbol":"{{symbol}}","condition":"{{condition_text}}","time":"{{time_iso}}","source":"ForecastCity"}

Значения переменных подставляются как обычный текст. Если в значении встретятся кавычки или перенос строки, это может нарушить синтаксис JSON. Тело запроса, которое не является корректным JSON, отправляется как обычный текст.

Для канала Discord задайте для настройки Format значение Discord и укажите URL вебхука этого канала. Затем напишите короткую строку в поле тела запроса, например:

{{symbol}}: {{condition_text}}. Open your alerts: {{alert_url}}

Для Slack выберите вариант Slack и заполните поле таким же образом. ForecastCity автоматически обернёт ваш текст в формат, который ожидает выбранный сервис. Если оставить поле пустым, в оба сервиса придёт обычное сообщение оповещения, как показано выше, со временем в UTC в последней строке.

Как проверить результат

  1. Дождитесь срабатывания оповещения и откройте вкладку Log на панели Alerts.

  2. Сравните данные, которые пришли вашему получателю, с записью на вкладке Log: что произошло, по какому инструменту и в какое время.

Вкладка Log показывает сам факт срабатывания оповещения. Она не показывает, принял ли сообщение ваш получатель, поэтому проверьте также журнал на стороне получателя. Если в тексте остались фигурные скобки, например {{prices}}, значит, в имени переменной допущена опечатка. Если получатель отклоняет тело запроса, проверьте корректность JSON.

Полезно знать

  • Текст из поля сообщения отправляется во все отмеченные каналы. Текст из поля тела запроса вебхука отправляется только на вебхук.

  • Discord отображает до 1900 символов, а Slack до 3000 символов. Более длинный текст обрезается.

Эта статья была полезной?

Последнее обновление: 28.10.2026