Files
go/docs/limit-board-open-lower-groups.md
T

173 lines
6.7 KiB
Markdown

# 涨停低开分组接口文档
## 1. 接口说明
- 接口名称:涨停低开分组
- 请求方式:`GET`
- 请求路径:`/api/v1/limit-board/open-lower-groups`
- 接口用途:查询指定交易日涨停且前一交易日也涨停的股票,并按指定交易日开盘价是否低于前一交易日收盘价分为两组。
## 2. 请求参数
| 参数名 | 类型 | 必填 | 示例 | 说明 |
| --- | --- | --- | --- | --- |
| `trade_date` | `string` | 是 | `2026-04-24` | 交易日,格式固定为 `YYYY-MM-DD` |
请求示例:
```http
GET /api/v1/limit-board/open-lower-groups?trade_date=2026-04-24
```
## 3. 响应说明
### 3.1 顶层字段
| 字段名 | 类型 | 说明 |
| --- | --- | --- |
| `trade_date` | `string` | 查询的交易日 |
| `previous_trade_date` | `string` | 前一交易日;如果查询日没有前一交易日则为空字符串 |
| `previous_two_trade_date` | `string` | 前二交易日;如果查询日没有前二交易日则为空字符串 |
| `summary` | `object` | 当日涨停摘要信息 |
| `groups` | `array` | 分组后的股票列表,固定返回两组 |
### 3.2 summary 字段
| 字段名 | 类型 | 说明 |
| --- | --- | --- |
| `limit_count` | `int` | 指定交易日涨停且前一交易日也涨停的股票总数 |
| `open_lower_previous_close_count` | `int` | 指定交易日开盘价低于前一交易日收盘价的股票数量 |
| `others_count` | `int` | 样本池内其他股票数量 |
| `first_to_second_board_count` | `int` | 前一交易日是首板、指定交易日是二板的股票数量 |
| `first_second_before_eleven_count` | `int` | 开盘低于前收、首板进二板、且指定交易日首次涨停时间早于 11:00 的股票数量 |
### 3.3 groups 字段
| 字段名 | 类型 | 说明 |
| --- | --- | --- |
| `key` | `string` | 分组标识,取值为 `open_lower_previous_close` 或 `others` |
| `label` | `string` | 分组展示文案 |
| `count` | `int` | 当前分组内股票数量 |
| `stocks` | `array` | 当前分组内的股票列表 |
### 3.4 groups[].stocks 字段
| 字段名 | 类型 | 说明 |
| --- | --- | --- |
| `symbol` | `string` | 股票代码 |
| `ts_code` | `string` | TS 股票代码 |
| `name` | `string` | 股票名称 |
| `market` | `string` | 所属板块或市场信息 |
| `trade_date` | `string` | 交易日 |
| `open` | `number` | 当日开盘价 |
| `close` | `number` | 当日收盘价 |
| `previous_trade_date` | `string` | 前一交易日 |
| `previous_two_trade_date` | `string` | 前二交易日 |
| `previous_close` | `number` | 前一交易日收盘价 |
| `is_first_to_second_board` | `boolean` | 是否为前一交易日首板、指定交易日二板 |
| `is_first_second_before_eleven` | `boolean` | 是否满足开盘低于前收、首板进二板、首次涨停时间早于 11:00 |
| `highlight_label` | `string` | 重点标记文案;优先返回 `首二一一`,其次返回 `首板进二板`,否则为空字符串 |
| `limit_price` | `number` | 理论涨停价 |
| `pct_chg` | `number` | 当日涨跌幅 |
| `ak_amount` | `number \| null` | AKShare 成交额 |
| `ak_float_market_value` | `number \| null` | AKShare 流通市值 |
| `ak_total_market_value` | `number \| null` | AKShare 总市值 |
| `ak_turnover_rate` | `number \| null` | AKShare 换手率 |
| `ak_seal_amount` | `number \| null` | AKShare 封板资金 |
| `ak_first_limit_time` | `string \| null` | Tushare 首次封板时间,可能为 `09:35:12` 或 `93200` 这类紧凑格式 |
| `ak_last_limit_time` | `string \| null` | AKShare 最后封板时间 |
| `ak_break_limit_count` | `int \| null` | AKShare 炸板次数 |
| `ak_limit_up_stat` | `string \| null` | AKShare 涨停统计 |
| `ak_limit_up_days` | `int \| null` | AKShare 连板数 |
| `ak_industry` | `string \| null` | AKShare 所属行业 |
| `vol` | `int \| null` | 成交量 |
## 4. 响应示例
```json
{
"trade_date": "2026-04-24",
"previous_trade_date": "2026-04-23",
"previous_two_trade_date": "2026-04-22",
"summary": {
"limit_count": 23,
"open_lower_previous_close_count": 5,
"others_count": 18,
"first_to_second_board_count": 3,
"first_second_before_eleven_count": 2
},
"groups": [
{
"key": "open_lower_previous_close",
"label": "开盘低于前收",
"count": 5,
"stocks": [
{
"symbol": "000001",
"ts_code": "000001.SZ",
"name": "示例股份",
"market": "主板",
"trade_date": "2026-04-24",
"open": 11.1,
"close": 12.35,
"previous_trade_date": "2026-04-23",
"previous_two_trade_date": "2026-04-22",
"previous_close": 11.2,
"is_first_to_second_board": true,
"is_first_second_before_eleven": true,
"highlight_label": "首二一一",
"limit_price": 12.35,
"pct_chg": 10.01,
"ak_amount": 1523000000,
"ak_float_market_value": 8245000000,
"ak_total_market_value": 12678000000,
"ak_turnover_rate": 18.64,
"ak_seal_amount": 286000000,
"ak_first_limit_time": "09:35:12",
"ak_last_limit_time": "14:42:08",
"ak_break_limit_count": 2,
"ak_limit_up_stat": "1天1板",
"ak_limit_up_days": 1,
"ak_industry": "软件开发",
"vol": 123456789
}
]
},
{
"key": "others",
"label": "其他涨停股",
"count": 18,
"stocks": []
}
]
}
```
## 5. 业务规则
- 只统计指定交易日 `stock_limit_combined_data.final_status = 1` 且前一交易日 `stock_limit_combined_data.final_status = 1` 的股票。
- 前一交易日、前二交易日通过 `trade_calendar` 中 `exchange = 'SSE'` 且 `is_open = 1` 的交易日确定。
- 只有当日 `stock_daily.open` 和前一交易日 `stock_daily.close` 都存在,且 `open < previous_close` 时,股票才会进入 `open_lower_previous_close` 分组。
- 行情缺失、没有前一交易日、或不满足 `open < previous_close` 的股票都会进入 `others` 分组。
- 当指定交易日涨停、前一交易日涨停、前二交易日不涨停时,返回 `is_first_to_second_board = true`,并设置 `highlight_label = "首板进二板"`。
- 在 `open_lower_previous_close` 分组内,如果同时满足 `is_first_to_second_board = true` 且 `ak_first_limit_time` 早于 `11:00`,返回 `is_first_second_before_eleven = true`,并将 `highlight_label` 设为 `首二一一`。`93200` 会按 `09:32:00` 处理。
- 每个分组内的 `stocks` 按 `pct_chg` 从大到小排序;如果 `pct_chg` 相同,则按 `ts_code` 升序排序。
## 6. 错误响应
当缺少 `trade_date` 参数时:
```json
{
"error": "trade_date 参数不能为空"
}
```
当服务端内部异常时:
```json
{
"error": "具体错误信息"
}
```