外汇数据查询:历史分钟K线查询接入点实战(延迟与频率)
# 外汇数据查询:历史分钟K线查询接入点实战(延迟与频率)
> 接入点:历史分钟K线查询(1683-3) · 免费 · POST/GET · 返回 JSON · 适用:短线分析、教学演示 · 阅读时间:7 分钟
## TL;DR
- 1683-3 返回指定小时的**逐分钟 K 线**(每分钟一根),适合做分时走势演示。
- 必填:`code`、`hour`(格式 `yyyyMMddHH`);可选:`limit`(默认 10,最大 60)。
- **关键边界:数据更新存在 5 分钟以上延迟,且每 5 分钟才更新一批最新 5 分钟 K 线**——它不是实时行情。
## Why:分钟 K 与日线的区别
日线看趋势,分钟 K 看盘中波动。1683-3 让你拿到「某小时里每一分钟」的 OHLC,适合做分时图、波动率教学。但它明确是**延迟数据**,定位学习分析,别拿来做实时交易信号。
## What:接口速览
| 项 | 说明 |
|----|------|
| 接口地址 | `https://route.showapi.com/1683-3?appKey={your_appKey}` |
| 必填参数 | `code`(String, 如 `CADCNY`)、`hour`(String, `yyyyMMddHH`) |
| 可选参数 | `limit`(String, 默认 10,最大 60,返回条数) |
| 返回核心 | `list: [{datetime, open, high, low, close, code, forexName, time}]` |
| 更新频率 | 每 5 分钟更新最新 5 分钟 K 线(存在 5 分钟以上延迟) |
| 数据性质 | 延迟数据,仅供学习分析,不得用于对外展示 |
## How:查询某小时的分钟 K(Python)
```python
import requests, datetime
def minute_kline(code: str, hour: str, limit: int, appkey: str) -> list:
payload = {"appKey": appkey, "code": code, "hour": hour, "limit": str(limit)}
r = requests.post("https://route.showapi.com/1683-3", data=payload, timeout=10)
data = r.json()
if data.get("showapi_res_code") != 0:
raise RuntimeError(data.get("showapi_res_error"))
body = data["showapi_res_body"]
if str(body.get("ret_code")) != "0":
raise RuntimeError(f"ret_code={body.get('ret_code')}")
return body["list"]
# hour 格式 yyyyMMddHH,例如 2025-02-06 10 时
rows = minute_kline("CADCNY", "2025020610", 10, "YOUR_APPKEY")
for row in rows:
print(row["datetime"], "收:", row["close"])
```
**cURL**
```bash
curl -X POST "https://route.showapi.com/1683-3?appKey=YOUR_APPKEY" \
-H "content-type: application/x-www-form-urlencoded" \
-d "code=CADCNY&hour=2025020610&limit=10"
```
**Node.js(fetch)**
```javascript
const body = new URLSearchParams({
appKey: "YOUR_APPKEY", code: "CADCNY",
hour: "2025020610", limit: "10"
});
const resp = await fetch("https://route.showapi.com/1683-3",
{ method: "POST", body, signal: AbortSignal.timeout(10000) });
const data = await resp.json();
console.log(data.showapi_res_body.list.length, "条分钟K");
```
## 返回示例(节选)
```json
{
"showapi_res_body": {
"ret_code": 0, "remark": "查询成功!", "size": "10",
"list": [
{ "datetime": "2025-02-06 10:00:00", "open": "5.0822000000",
"high": "5.0822000000", "low": "5.0822000000", "close": "5.0822000000",
"code": "CADCNY", "forexName": "加拿大元兑人民币", "time": 1738807200000 }
]
}
}
```
## 进阶 / 边界
- **延迟是硬约束**:文档写明「数据更新存在 5 分钟以上延迟」,做实时看板务必标注延迟、不要当即时行情。
- **hour 是整点**:传入 `yyyyMMddHH`,返回该小时内的分钟 K;超出 `limit` 只取前 N 条。
- **价格是字符串且小数位多**:如 `5.0822000000`,计算前 `float()`。
## FAQ
**Q1:为什么最新几分钟总是查不到?**
A:存在 5 分钟以上延迟,刚发生的分钟尚未入库,属正常现象。
**Q2:limit 最大多少?**
A:文档标明最大 60,默认 10。
**Q3:datetime 和 time 有什么区别?**
A:`datetime` 是人易读的字符串(`2025-02-06 10:08:00`),`time` 是 13 位毫秒时间戳,按用途选。
**Q4:能拿它做分钟级交易信号吗?**
A:不建议。明确为延迟数据、仅供学习分析,不得用于对外展示或实盘依据。
## 下一步阅读
- [外汇数据查询:日线历史查询接入点实战](https://www.showapi.com/guides/forex-daily-history-1683)
- [汇率走势可视化:用日线/分钟K线数据画图](https://www.showapi.com/guides/forex-visualization-1683)
- [外汇数据查询:返回字段与数据结构全解](https://www.showapi.com/guides/forex-response-fields-1683)
- **本系列共 13 篇**:查看[外汇数据查询指南总目录](https://www.showapi.com/guides/forex-guides-1683)