按计划运行一个简短脚本,读取现货价格并与你设定的价位比较。2026 年 10 月 24 日黄金价格为 $3,996.00 时,以 $4,000 阈值进行的首次调用只会保存初始状态,不会触发提醒。价格为实时,每次运行按一次调用计费。
使用 API 完成操作
- 获取密钥并设置阈值 获取一个免费密钥,并保存在
NARWHAL_API_KEY环境变量中。Narwhal 的各数据 API 共用一个账户和一个 API 密钥,REST 与 MCP 也使用同一个密钥。脚本在Authorization: Bearer YOUR_KEY请求头中发送密钥,并将以美元每金衡盎司计的金价与THRESHOLD比较。 - 保存 Python 脚本 请求从金价现货端点读取
price;价格等于或高于THRESHOLD视为在阈值之上,低于则视为在阈值之下。脚本把这一侧与gold_state.json中保存的值比较,侧发生变化时打印提醒,然后保存新状态并打印价格。import json, os, pathlib import requests THRESHOLD = 4000.00 # alert when gold crosses this level, in USD per troy ounce STATE = pathlib.Path("gold_state.json") # remembers which side of the line we were on price = float( requests.get( "https://api.narwhalapi.com/v1/commodities/spot/XAU/USD", headers={"Authorization": f"Bearer {os.environ['NARWHAL_API_KEY']}"}, timeout=10, ).json()["price"] ) above = price >= THRESHOLD was_above = json.loads(STATE.read_text())["above"] if STATE.exists() else None if was_above is not None and above != was_above: print( f"ALERT: gold {'rose above' if above else 'fell below'} " f"{THRESHOLD:.2f} at {price:.2f}" ) # send an email or chat message here STATE.write_text(json.dumps({"above": above})) print(f"gold {price:.2f}") - 让脚本按计划运行 现货价格是实时的,所以调度频率可以随你设定。每天一个请求,每月约 30 次调用,费用约为 $0.09。
- 把提醒连接到消息 条件内的
print行是发送电子邮件或聊天消息的位置。请在两次定时调用之间保留状态文件,这样脚本才能把每个价格与保存的一侧比较。提醒在两个方向上都会触发:先在下方后升到阈值之上,或先在上方后跌到阈值之下;即使没有穿越,最后的价格print也会执行。
价格是实时的,所以请适度轮询,因为每次轮询都是一次消耗额度的调用。判断是否穿越阈值时,使用的是这些请求返回的价格。脚本每次被调用都会发出一次现货请求。请在脚本之外设置调度,脚本本身没有调度循环。关于调度,请参阅定时拉取每日数据。
用 THRESHOLD 表示价格水平,用 STATE 表示保存 JSON 文件的路径。比较条件是 price >= THRESHOLD。当 above 为 true 时,提醒文本使用 rose above;为 false 时使用 fell below。文本同时包含阈值和返回的价格,因此消息会带上触发提醒的水平以及比较所用的价格。保存的 JSON 中含有下一次调用要读取的 above 值。
无需代码
在 Zapier 或 Make 中,先添加一个定时触发器,再添加指向 https://api.narwhalapi.com/v1/commodities/spot/XAU/USD 的 HTTP 请求。在 Bearer 请求头中发送密钥,使请求使用你的 Narwhal 账户。对返回的 price 添加一个筛选条件,后面接一个电子邮件或聊天操作;由筛选条件判断该价格是否达到你的价位。现货价格为实时,因此每次运行都会比较当前价格。Bearer 请求头使用与 Python 请求相同的 Narwhal 密钥,REST 和 MCP 也共用该密钥。
该方式请参阅 Zapier 教程或 Make 教程。Python 脚本包含已保存的穿越状态;无代码工作流则有价格过滤器和消息动作。在把这两种条件视为同一种提醒之前,先确定你的条件是价格高于阈值,还是相对此前保存的一侧发生了变化。
不同情况应选哪种方法
| 情况 | 最合适的方法 | 原因 |
|---|---|---|
| 每日价位提醒 | 按每日计划运行的脚本 | 每天一次调用 |
| 更快的提醒 | 每隔几分钟运行脚本 | 价格为实时;每次运行按一次调用计费 |
| 无需代码的提醒 | 带 HTTP 请求步骤的 Zapier、Make 或 n8n | 在工作流中使用 HTTP 请求;Zapier 和 Make 可以在电子邮件或聊天动作之前按价格过滤。 |
如何重置已保存的穿越状态?
删除 gold_state.json 即可重置已保存的一侧。该文件不存在时,was_above 为 None,因此提醒条件不会触发。脚本会把返回价格所在的一侧保存为起始状态。所以删除文件会让穿越比较重新开始,但不会让第一个价格就触发提醒。
Webhook 能发送大宗商品价格提醒吗?
Narwhal 的 Webhook 不涵盖价格水平。它们传送经济数据发布、收益率曲线、节假日日历和预测事件。如需价格阈值提醒,请按计划轮询价格。价格比较应放在读取这些价格的脚本或工作流中。
能流式推送原油或铜的提醒吗?
原油和铜只支持 REST,因此这类提醒请使用轮询。只有金属 XAU、XAG、XPT、XPD 以及外汇货币对可以流式推送。轮询适用于所有现货代码,包括 XAU、XAG、XPT、XPD、XCU、BRENT 和 WTI。
计算示例:阈值 4,000
从 2026 年 10 月 24 日的金价 $3,996.00 和阈值 $4,000 开始。第一次调用时,价格低于阈值,也没有已保存的一侧。脚本在状态文件中存入 false 并打印 gold 3996.00,不触发提醒。
例如,假设第 2 天的价格是 $4,012.50,第 3 天是 $4,020。这些后续价格是为说明而编造的。第 2 天,已保存的一侧在下方,新的一侧在上方,所以脚本打印穿越提醒。第 3 天,已保存的一侧和新的一侧都在上方,因此不会重复提醒。
| 调用 | 黄金价格 | 调用后保存的一侧 | 提醒 |
|---|---|---|---|
| 第 1 天,2026 年 10 月 24 日 | $3,996.00 | 下方 | 无 |
| 第 2 天(示例) | $4,012.50 | 上方 | ALERT: gold rose above 4000.00 at 4012.50(提醒输出) |
| 第 3 天(示例) | $4,020 | 上方 | 无 |
发布于。