> Source: https://ashareapi.com/docs/guides/market-mood/  ·  Markdown version for LLMs / AI agents

教程

# 用数据量化 A 股市场情绪
 情绪不是感觉，是可以算的数：涨跌家数、涨停家数、成交额、风格轮动。三个免费接口就能拼出"今天市场什么温度"，下面给出可运行代码与口径陷阱。

## 为什么用「涨跌家数」而不是「指数涨跌」
 指数涨跌会被权重股带偏：指数涨 1% 但 3000 只股票下跌，是常事。**涨跌家数（市场广度）** 反映的是"多数股票怎么样"，比指数更接近散户体感。
 同理，**涨停家数**是情绪的直接读数（赚钱效应），**成交额**是参与度的读数。

## 第一步：拿当天的市场广度（免费）
 `/v1/changedist` 是**市场广度的推荐入口**，返回**当期**口径（当日）。

 Python（可直接运行，无需 Key）
```
import requests

r = requests.get("https://api.ashareapi.com/v1/changedist", timeout=10)
b = r.json()
rows = b.get("structured") or b["data"]

for row in rows:
 print(row) # 涨跌家数 / 涨跌停家数 / 成交额 / 区间分布
```

## ⚠️ 口径陷阱：当期 vs T-1

-
 **`/v1/changedist` = 当期**（今天）—— 判断今日情绪用这个

-
 **`/v1/market-overview?type=updown` = T-1**（返回里会标数据日期，可能滞后一个交易日）—— **两者数值会不一样**

-
 **别把 T-1 的涨跌家数当今天的用** —— 这是最容易犯的错

## 第二步：市场画像与风格轮动（免费）

 Python
```
# 大盘画像总评
print(requests.get("https://api.ashareapi.com/v1/market-overview",
 params={"type": "summary"}, timeout=10).json()["data"])

# 风格轮动（大小盘 / 成长价值）
print(requests.get("https://api.ashareapi.com/v1/market-overview",
 params={"type": "rotation"}, timeout=10).json()["data"])

# 估值分位（中证全指 PE/PB/PS 历史百分位）
print(requests.get("https://api.ashareapi.com/v1/market-overview",
 params={"type": "valuation"}, timeout=10).json()["data"])
```

-
 `type=summary` 画像总评 · `trade` 收盘 · `interval` 多周期 · `technical` 大盘技术

-
 `type=margin` 两融 · **`valuation` 估值分位** · **`rotation` 风格轮动**

## 第三步：看资金在追什么（免费）
 热搜榜反映**散户注意力**。它和"涨跌家数"配合看：广度好 + 热搜集中 = 主线明确；广度差 + 热搜分散 = 情绪退潮。

 Python
```
hot = requests.get("https://api.ashareapi.com/v1/hot",
 params={"limit": 10}, timeout=10).json()
for row in hot.get("structured") or hot["data"]:
 print(row) # 热搜榜：关注度排名 + 涨跌幅
```

## 把三个指标拼成「今日温度」
 |
| | 读数 | 含义 | 怎么用

| | 涨跌家数 | 市场广度 | 涨家数占比 > 60% = 普涨；

| | 涨停家数 | 赚钱效应 | 与近 20 日均值比，明显放大 = 情绪升温

| | 成交额 | 参与度 | 放量上涨 = 增量资金；缩量上涨 = 存量博弈

| | 风格轮动 | 资金去向 | 小盘占优 = 风险偏好高；大盘占优 = 防御

| | 估值分位 | 位置 | 中证全指 PE 处于历史高位 ≠ 马上跌，但**赔率变差**

 涨跌家数
 市场广度
 涨家数占比 > 60% = 普涨； 涨停家数
 赚钱效应
 与近 20 日均值比，明显放大 = 情绪升温

 成交额
 参与度
 放量上涨 = 增量资金；缩量上涨 = 存量博弈

 风格轮动
 资金去向
 小盘占优 = 风险偏好高；大盘占优 = 防御

 估值分位
 位置
 中证全指 PE 处于历史高位 ≠ 马上跌，但**赔率变差**

## 三个必须写下来的纪律

-
 **单日情绪不预测次日** —— 情绪是"状态描述"，不是"买卖信号"

-
 **必须与历史比较** —— 涨停 80 家是多还是少？要和近 20 日均值比才知道

-
 **放量/缩量要分开看** —— 同样是涨，放量涨和缩量涨是两件事

## 常见错误与边界

-
 **把 T-1 当当期** → 用 `/v1/changedist` 取当期，别用 `market-overview?type=updown`

-
 **只看涨停家数** → 不看炸板率会误判（高涨停 + 高炸板 = 情绪不稳）

-
 **`volume` 是手、`amount` 是元** → 算成交额时别混单位（见字段说明）

-
 **匿名限流 5 次/分** → 本教程只用免费端点；批量取数请加 `time.sleep()` 或升级档位

## 常见问题
 这些接口要 Key 吗？
 **都不用**。`changedist` / `market-overview` / `hot` 都在 5 个免费端点里 —— 无需注册、无需 Key，直接调。

 为什么我的涨跌家数和别的平台不一样？
 先确认**口径**：我们 `/v1/changedist` 是**当期**；而 `/v1/market-overview?type=updown` 是 **T-1**（返回里会标数据日期）。另外不同平台对"涨跌"的统计范围（是否含 ST / 北交所 / 停牌）可能不同，对不上先核对这两点。

 情绪好就该买吗？
 **不是。** 情绪是**状态描述**，不是买卖信号。同一个"情绪好"，在趋势初期和趋势末端含义完全相反 —— 判断方向需要结合价格位置与量能，本教程只讲"怎么把情绪算出来"。

 成交额是元还是万元？
 看返回里的字段名与量级：`amount` 类字段一般是**元**（如 `135160431.2` = 1.35 亿元）。**拿一个熟悉的交易日对量级**是最快的自检方法。

 可以每天自动跑吗？
 可以。定时任务里调这三个免费接口即可（无需 Key，也不消耗付费额度）。若要在盘中高频轮询，注意匿名限流是 **5 次/分钟**，建议间隔 ≥ 12 秒，或解一次 PoW 挑战提到 60 次/分。

 最后更新: 2026-09-23
 代码与口径取自线上真实返回（2026-09-23 验证：changedist 为当期口径，market-overview?type=updown 返回 T-1 数据日期）。字段单位与限流以端点文档为准。

 接着看

-
[端点文档（32 个端点，含 changedist / market-overview / hot）](/endpoints)

-
[用 Python 获取实时行情：3 种方法对比](/docs/guides/python-ashare-quotes)

-
[用 Python SDK 取数（pip install ashareapi）](/docs/guides/python-sdk)

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

 [← 全部教程](/docs/guides)
