国际原油价格查询:原油涨跌监控与趋势预警搭建指南
国际原油价格查询原油价格APIWTI原油布伦特原油免费接口 # 国际原油价格查询:原油涨跌监控与趋势预警搭建指南
> 接口:国际原油价格查询(apiCode=1108,接入点 1108-1)| 免费 | 请求方式 POST/GET | 返回 JSON | 适用人群:量化爱好者、运营、个人投资者 | 阅读时间:约 6 分钟
## 核心要点
- 用 `diff_rate`(涨跌幅度)或 `diff_num`(涨跌金额)做阈值判断,超过即提醒。
- 接口每小时整点更新,监控任务每小时跑一次最经济,无需高频轮询。
- `diff_rate` 是带百分号的字符串,比较前先去掉 `%` 转浮点。
## Why
原油单日波动几个百分点并不罕见,盘中异动往往影响决策。与其一直盯着屏幕,不如让程序每小时拉一次价、比对涨跌阈值,超阈值就发一条提醒。国际原油价格查询返回里正好有 `diff_rate` 和 `diff_num`,拿来写监控非常顺手。
## What
| 项目 | 说明 |
|------|------|
| 监控依据 | `diff_rate`(幅度,含 `%`)/ `diff_num`(金额) |
| 拉取节奏 | 每小时一次(对齐整点更新) |
| 触发动作 | 邮件 / 站内信 / webhook 等自定义 |
## How
### 阈值监控最小实现
```python
import requests
APP_KEY = "YOUR_APPKEY"
URL = "https://route.showapi.com/1108-1"
THRESHOLD = 2.0 # 涨跌超过 2% 触发提醒
def check(code="wti"):
r = requests.get(URL, params={"appKey": APP_KEY, "code": code}, timeout=10).json()
b = r["showapi_res_body"]
if b["ret_code"] != 0:
return
rate = float(b["diff_rate"].rstrip("%")) # "1.13%" -> 1.13
if abs(rate) >= THRESHOLD:
notify(b["name"], b["nowPrice"], b["diff_rate"])
def notify(name, price, rate):
# 此处替换为你的实际通知渠道(邮件/Webhook/短信网关)
print(f"[预警] {name} 当前 {price} 美元/桶,涨跌 {rate}%,已超阈值")
# 每小时执行一次(可用系统定时任务 / 云函数定时器触发)
check("wti")
check("blt")
```
**Node.js(fetch 阈值判断)**
```javascript
const APP_KEY = "YOUR_APPKEY";
async function watch(code = "wti", threshold = 2.0) {
const r = await fetch(
"https://route.showapi.com/1108-1?appKey=" + APP_KEY,
{
method: "POST",
headers: { "content-type": "application/x-www-form-urlencoded" },
body: "code=" + code,
signal: AbortSignal.timeout(10000),
}
).then((x) => x.json());
const b = r.showapi_res_body;
if (b.ret_code !== 0) return;
const rate = parseFloat(b.diff_rate.replace("%", ""));
if (Math.abs(rate) >= threshold) {
console.log(`[预警] ${b.name} ${b.nowPrice} ${b.diff_rate}`);
}
}
```
## 返回示例与解析
监控只用 `diff_rate` / `diff_num` / `nowPrice` / `name` 几个字段,均在 `showapi_res_body` 内。注意 `diff_rate` 为字符串且带百分号,`diff_num` 为字符串(涨跌金额)。完整字段见 [返回字段全解](https://www.showapi.com/guides/crude-oil-price-fields-1108)。
## 进阶 / 边界
- **每小时一次足够**:数据整点更新,监控频率高于此无新收益,还耗免费额度。
- **阈值取绝对值**:涨跌都可能是异动,用 `abs(rate)` 同时覆盖上涨与下跌预警。
- **仅供参考**:本接口为每小时汇总的基准油价,非实时逐笔行情,预警用于参考而非交易指令。
## FAQ
**Q:diff_rate 和 diff_num 用哪个做阈值?**
`diff_rate` 是百分比幅度,更适合"波动多大"的预警;`diff_num` 是绝对金额,适合关心"每桶涨跌几美元"的场景。
**Q:监控频率设多高?**
建议每小时一次,与接口整点更新对齐;更频繁不会拿到新数据。
**Q:能监控布伦特吗?**
能,对 `code=blt` 同样跑一遍判断即可。
**Q:这个预警能当交易信号吗?**
不能。数据为每小时汇总基准价、仅供参考,不构成投资建议。
## 相关能力 / 下一步阅读
- [国际原油价格查询返回字段全解:nowPrice / diff_rate / stockNum 一文读懂](https://www.showapi.com/guides/crude-oil-price-fields-1108)
- [国际原油价格查询:整点更新意味着什么?数据时效与缓存设计](https://www.showapi.com/guides/crude-oil-price-update-frequency-1108)
- [国际原油价格查询:免费档位下如何设计缓存节省调用成本?](https://www.showapi.com/guides/crude-oil-price-cache-strategy-1108)
- **本系列共 12 篇**:查看[国际原油价格查询官方指南总目录](https://www.showapi.com/guides/crude-oil-price-guides-1108)