参考
K 线返回字段速查
K 线返回 8 个字段:date、open、last、high、low、volume、amount、turnover。两个最容易踩的点:收盘价字段叫 last 不叫 close;所有数值都是字符串,不是数字。
返回长什么样
GET /v1/kline?code=sh600519&count=2 的真实返回:
{
"ok": true,
"endpoint": "kline",
"tier": "free",
"elapsed_ms": 701,
"source": "multi",
"data": [
{ "date": "2026-09-30", "open": "1239.53", "last": "1258.62", "high": "1268",
"low": "1236.05", "volume": "38331", "amount": "4797250000", "turnover": "0.31" }
]
}
外层 5 个字段是每个端点都一样的:ok 是否成功、endpoint 端点名、tier 当前档位、elapsed_ms 耗时、source 数据来源。要取的行情数据都在 data 数组里。
八个字段各是什么
| 字段 | 含义 | 单位 / 格式 |
|---|---|---|
date |
交易日 | YYYY-MM-DD |
open |
开盘价 | 元 |
last |
收盘价 | 元 |
high |
最高价 | 元 |
low |
最低价 | 元 |
volume |
成交量 | 手 |
amount |
成交额 | 元 |
turnover |
换手率 | 百分比数值(0.31 = 0.31%) |
两个最容易踩的坑
收盘价字段为什么叫 last 不叫 close?
因为同一个字段在盘中代表最新价、收盘后代表收盘价 —— 一个名字覆盖两种含义,不用按时间切换字段名。所以如果你在迁代码,映射关系是 close → last,不是 close → close。
数值为什么是字符串?
"1258.62" 是字符串,不是数字。这样设计是为了不丢精度 —— 浮点数在跨语言传递时会出现 1258.6200000000001 这类误差,而金额和价格对精度敏感。取值时自己转:
import requests
r = requests.get("https://api.ashareapi.com/v1/kline",
params={"code": "sh600519", "count": 250}).json()
for row in r["data"]:
close = float(row["last"]) # 字符串 → float
amount = float(row["amount"])
常见误用
- 拿
volume当股数 —— 它是手(1 手 = 100 股),要股数得乘 100。 - 拿
turnover当小数 ——0.31表示 0.31%,不是 31%。 - 不判
ok就取data—— 失败时data可能为空或缺席,先看ok。 - 忘了 K 线没有
adjust参数 —— 复权口径是固定的,不需要也不接受这个参数。
最后更新: 2026-10-05
字段与示例取自 2026-10-05 线上真实返回(/v1/kline?code=sh600519&count=2)。