> Source: https://ashareapi.com/wiki/kline-fields/  ·  Markdown version for LLMs / AI agents

参考

# 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）。

 接着看

-
[全部端点清单](/endpoints)

-
[错误码与限流说明](/docs/errors)

-
[K 线技术指标怎么算](/docs/guides/kline-technical-indicators)

 [← 全部 Wiki](/wiki)
