ForecastCity 帮助中心

自定义警报消息与使用 Webhook

阅读约 9 分钟

分享赚奖励

向您的朋友或社交媒体上的粉丝推荐阅读这篇文章。只需复制下方链接并分享。有人点击您的链接并订阅后,您和对方都将获得奖励。

正在准备您的链接…

推荐计划详情
ForecastCity · 警报指南

每个警报都会向您勾选的所有接收位置发送同一条消息。默认情况下,消息会说明发生了什么、当时的价格以及警报是否继续开启。您还可以附上一条关于交易计划的备注,这样在打开图表前就能看到原定计划。设置警报及其消息既简单、快速又准确:您可以在编辑器中直接输入,也可以通过语音或文字告诉或询问 AI Trading Assistant。

如果您使用自己的软件、Discord 或 Slack,Webhook 还能自动将每次触发的警报发送到这些地方,无需手动复制。本指南将同时介绍这两项功能。

示例:一个 EURUSD 警报,当 5m 图表上的价格上穿 1.09 时触发。

自动消息的内容

当 Message 字段为空时,警报会在触发时自动生成消息。以本例而言,消息内容如下:

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

第一行用警报编辑器的措辞说明发生了什么。第二行给出触发那一刻的数值。最后一行说明警报是否继续开启。本例使用了 Once only,因此警报现已关闭。如果选择其他触发方式,最后一行会显示 “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”(3 个条件中已满足 2 个)。如果只满足了一个条件(例如使用 or 连接词时),第一行会直接写出该条件,并在下方列出相应数值。

编写自定义消息

  1. 打开警报编辑器,切换到 Options 标签页。

  2. 点击 Message 行。留空时该行显示为 Auto,点击后下方会展开一个文本输入框。

  3. 输入您的消息。输入框最多可容纳 400 个字符。

  4. 如需插入实时数值,请展开输入框下方的 Available variables 列表,连同双花括号一起完整复制所需变量。

Options 标签页中展开的 Message 行,显示空白输入框、下方说明文字以及 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.

价格和条件已经包含在您文字下方的几行中。建议在自定义消息中写下自动文本无法涵盖的内容,例如您的交易计划。

您输入的消息还会作为该警报在警报列表中的名称。如果不输入消息,列表会显示由条件生成的名称。对于价格水平警报,名称很简短,例如 “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” 这样的格式显示时间。如果时区不对,请在 Your profile 页面的 Timezone 设置中选择您的时区。当 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}} 替换所有变量后的自定义消息,或警报列表中显示的名称 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}}。

将警报发送到 Webhook

Webhook 会将每次触发的警报发送到一个网址,由您自己的软件、Discord 频道或 Slack 频道接收。您的订阅套餐必须包含 Webhook 功能。

  1. 在 Options 标签页的 Notifications 下方,勾选 Webhook URL 复选框。随后会出现地址输入框、Format 选择器以及正文输入框。

  2. 粘贴您的接收方所监听的网址。网址必须以 http:// 或 https:// 开头。

  3. 将 Format 设为 Raw JSON,并将正文输入框留空。

  4. 点击 Create 按钮(如果是编辑现有警报,则点击 Save 按钮)。

已勾选 Webhook URL 行,填有接收地址,Format 设为 Raw JSON,正文输入框为空。
已勾选 Webhook URL,填好地址并将 Format 设为 Raw JSON。留空正文输入框会发送默认数据。
  1. 您的接收方所监听的网址。请使用标准端口 80 或 443。

  2. Format:如果是发送给您自己的软件,请选择 Raw JSON;如果是发送给对应平台,请选择 Discord 或 Slack。

当正文输入框留空时,接收方会收到一个 JSON 对象,其中包含上表中的所有变量以及 alertId 和 triggerId。这两个字段分别用于标识该警报和当次触发。在编写依赖这些字段的程序之前,建议先查看一次实际收到的请求。

在输入框下方,编辑器会显示我们发送请求所用的服务器地址。如果您的接收方只接受已知地址的请求,请将该地址加入白名单。

Webhook 地址的要求

  • 使用标准端口的公网地址:http 为 80 端口,https 为 443 端口。系统不会向其他端口、localhost 或私有网络地址发送消息。

  • 网址中不得包含用户名或密码。

  • 该地址本身必须在 3 秒内返回响应。重定向到其他地址会被视为发送失败。

编辑器仅检查地址是否以 http:// 或 https:// 开头。其余要求会在实际发送消息时进行验证,因此请使用真实警报测试您的地址。对于价格警报和技术警报,如果接收方出现临时错误,系统最多会再重试两次。对于 4CM-AI 警报,如果出现超时或服务器错误,消息不会重新发送,因为您的接收方可能已经根据该消息执行了操作。

编写自定义 Webhook 正文

正文输入框支持使用与警报消息相同的变量编写模板,最多可容纳 2000 个字符。输入框允许输入更多字符,但超过长度限制的正文在保存时会被拒绝。

当格式设为 Raw JSON 时,如果接收方只需要一个精简对象,可以使用如下正文:

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

变量会以纯文本形式填入。如果某个变量的值包含引号或换行符,可能会破坏 JSON 格式。不是有效 JSON 的正文会作为纯文本发送。

如果发送到 Discord 频道,请将 Format 设为 Discord 并填入该频道的 Webhook 地址,然后在正文输入框中写一行简短文字,例如:

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

如果使用 Slack,请选择 Slack 并以同样方式编写。ForecastCity 会将您的文本包装成对应服务所需的格式。如果正文输入框留空,这两个平台都会收到如上所示的警报消息,并在最后一行附上 UTC 时间。

检查发送结果

  1. 等待警报触发后,打开 Alerts 面板的 Log 标签页。

  2. 将接收方收到的内容与触发日志中的记录进行核对:发生的事件、代码以及触发时间。

触发日志只表明警报已经触发,并不显示接收方是否成功接收了消息,因此请同时检查接收方自身的日志。如果看到类似 {{prices}} 的花括号,说明变量名拼写有误。如果接收方拒绝了请求正文,请检查 JSON 格式是否正确。

实用提示

  • 警报消息会发送到您勾选的每一个位置,而 Webhook 正文仅发送给 Webhook。

  • Discord 最多显示 1900 个字符,Slack 最多显示 3000 个字符,超出部分会被截断。

这篇文章对您有帮助吗?

最后更新: 2026/10/27