Files
go/docs/limit-board-break-next-performance.md
T
yang d5c053e59d 1、新增二板炸板情况统计;
2、更新项目结构;
2026-05-09 16:59:45 +08:00

161 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 炸板次日表现接口文档
## 1. 基本信息
- 接口名称:炸板次日表现
- 请求方法:`GET`
- 请求路径:`/api/v1/limit-board/break-next-performance`
- 接口用途:按 T 日范围查询 T-2 未涨停、T-1 涨停、T 日触及涨停价但收盘未封住的炸板股票,并返回 T+1 交易日表现。
- 导出路径:`/api/v1/download/limit-board/break-next-performance-csv`
## 2. 请求参数
| 参数 | 类型 | 必填 | 默认值 | 说明 |
| --- | --- | --- | --- | --- |
| `tradeStartDate` | `string` | 是 | 无 | T 日起始日期,格式 `YYYY-MM-DD` |
| `tradeEndDate` | `string` | 是 | 无 | T 日结束日期,格式 `YYYY-MM-DD` |
| `page` | `int` | 否 | `1` | 页码 |
| `pageSize` | `int` | 否 | `20` | 每页数量 |
| `tOpenGainLt101` | `bool` | 否 | 无 | 筛选 T 日开盘价是否小于 T-1 收盘价的 101%,支持别名 `tOpenLessThan101`、`t_open_gain_lt_101` |
| `breakTimeBefore1100` | `bool` | 否 | 无 | 筛选 T 日炸板时间是否在 `11:00:00` 前,空炸板时间按 `true` 处理,支持别名 `tBreakTimeBefore1100`、`break_time_before_1100` |
兼容 `start_date`、`end_date` 作为日期参数别名。
示例:
```http
GET /api/v1/limit-board/break-next-performance?tradeStartDate=2026-05-07&tradeEndDate=2026-05-07&tOpenGainLt101=true&breakTimeBefore1100=true&page=1&pageSize=20
```
导出示例:
```http
GET /api/v1/download/limit-board/break-next-performance-csv?tradeStartDate=2026-05-07&tradeEndDate=2026-05-07&tOpenGainLt101=true&breakTimeBefore1100=true
```
## 3. 统计规则
- 以 `trade_calendar` 中 `exchange = 'SSE'` 且 `is_open = 1` 的记录推导 T-2、T-1、T、T+1 交易日。
- 样本池来自 `stock_limit_combined_data`:T 日必须为炸板记录,即 `final_status = 2`;T-1 必须为涨停记录,即 `final_status = 1`;T-2 同一股票不能存在 `final_status = 1`。
- T 日和 T+1 日 OHLC 来自 `stock_daily`。
- 股票板块来自 `stock_limit_combined_data.market`。
- T 日开盘涨幅以 T-1 收盘价为基准计算。
- 如果 T 日有 Tushare 炸板记录,则返回具体的 Tushare 炸板时间 `tushare_first_time` 并格式化为 `HH:MM:SS`;无 Tushare 炸板记录或无具体时间时 `first_time` 为空。
- T 日炸板时间为空时,`break_time_before_1100` 默认返回 `true`。
- T+1 开盘涨幅、最高获利、最大亏损、收盘涨跌幅均以 T 日收盘价为基准计算。
- T+1 盘中是否可以获利表示:T+1 盘中最高价是否能弥补 T 日最高价买入后到 T 日收盘价的差价,按 `next_high >= t_high` 判断;缺少 T+1 最高价、T 日最高价或 T 日收盘价时返回 `null`。
## 4. 响应字段
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `trade_start_date` | `string` | 查询起始 T 日 |
| `trade_end_date` | `string` | 查询结束 T 日 |
| `page` | `int` | 当前页 |
| `page_size` | `int` | 每页数量 |
| `total` | `int` | 命中总数 |
| `total_pages` | `int` | 总页数 |
| `summary.break_count` | `int` | T 日炸板股票总数 |
| `summary.next_trade_data_count` | `int` | 有 T+1 行情数据的股票数 |
| `list` | `array` | 明细列表 |
明细核心字段:
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `trade_date` | `string` | T 日 |
| `ts_code` / `symbol` / `name` | `string` | 股票标识 |
| `market` / `industry` | `string` | 板块和行业 |
| `t_open` / `t_high` / `t_close` | `number \| null` | T 日行情 |
| `t_open_pct_chg` | `number \| null` | T 日开盘涨幅,基于 T-1 收盘价 |
| `t_open_gain_lt_101` | `boolean` | T 日开盘价是否小于 T-1 收盘价的 101% |
| `first_time` | `string` | T 日 Tushare 炸板时间,格式化为 `HH:MM:SS`,无 Tushare 炸板记录或无具体时间时为空 |
| `break_time_before_1100` | `boolean` | T 日炸板时间是否在 `11:00:00` 前;空炸板时间默认为 `true` |
| `has_tushare_break_data` | `boolean` | T 日是否存在 Tushare 炸板记录,即 `tushare_limit_type = 'Z'` |
| `next_open` / `next_high` / `next_low` / `next_close` | `number \| null` | T+1 行情 |
| `next_open_pct_chg` | `number \| null` | T+1 开盘涨幅,基于 T 日收盘价 |
| `next_intraday_profitable` | `boolean \| null` | T+1 盘中是否可以获利,按 T+1 最高价是否能弥补 T 日最高价买入后到 T 日收盘价的差价判断,即 `next_high >= t_high` |
| `next_high_profit_pct` | `number \| null` | T+1 最高获利百分比,基于 T 日收盘价 |
| `next_low_loss_pct` | `number \| null` | T+1 最大亏损百分比,基于 T 日收盘价 |
| `next_close_pct_chg` | `number \| null` | T+1 收盘涨跌幅,基于 T 日收盘价 |
## 5. 响应示例
```json
{
"trade_start_date": "2026-05-07",
"trade_end_date": "2026-05-07",
"page": 1,
"page_size": 20,
"total": 3,
"total_pages": 1,
"summary": {
"break_count": 3,
"next_trade_data_count": 3
},
"list": [
{
"trade_date": "2026-05-07",
"symbol": "000060",
"ts_code": "000060.SZ",
"name": "中金岭南",
"market": "主板",
"industry": "铅锌",
"t_open": 7.71,
"t_open_pct_chg": 3.77,
"t_open_gain_lt_101": false,
"t_high": 8.17,
"t_close": 8.08,
"t_pct_chg": 8.7483,
"first_time": "13:55:30",
"break_time_before_1100": false,
"has_tushare_break_data": true,
"next_open": 7.81,
"next_high": 8.23,
"next_low": 7.77,
"next_close": 7.95,
"next_open_pct_chg": -3.34,
"next_intraday_profitable": true,
"next_high_profit_pct": 1.86,
"next_low_loss_pct": -3.84,
"next_close_pct_chg": -1.61
}
]
}
```
## 6. CSV 导出
- 响应类型:`text/csv; charset=utf-8`
- 响应头:`Content-Disposition: attachment; filename="limit_break_next_performance_YYYYMMDD_YYYYMMDD_daily_detail.csv"`
- 文件包含 UTF-8 BOM,便于 Excel 直接打开中文列名。
- 导出接口复用列表接口的日期、`tOpenGainLt101`、`breakTimeBefore1100` 筛选条件,不使用分页参数。
列顺序:
| 列名 | 来源字段 |
| --- | --- |
| `T日` | `trade_date` |
| `股票代码` | `ts_code` |
| `股票简称` | `name` |
| `T涨跌幅` | `t_pct_chg` |
| `T开盘<1%` | `t_open_gain_lt_101`,导出为 `是`/`否` |
| `tushare炸板时间` | `first_time` |
| `11点前炸板` | `break_time_before_1100`,导出为 `是`/`否` |
| `T+1盘中可盈利` | `next_intraday_profitable`,导出为 `是`/`否`/`无次日数据` |
| `T+1最高获利` | `next_high_profit_pct` |
| `T+1开盘涨幅` | `next_open_pct_chg` |
| `T+1收盘涨跌` | `next_close_pct_chg` |
| `市场` | `market` |
| `行业` | `industry` |
| `T开盘` | `t_open` |
| `T开盘涨幅` | `t_open_pct_chg` |
| `T最高` | `t_high` |
| `T收盘` | `t_close` |
| `tushare是否炸板` | `has_tushare_break_data`,导出为 `是`/`否` |
| `T+1开盘` | `next_open` |
| `T+1最高` | `next_high` |
| `T+1最低` | `next_low` |
| `T+1收盘` | `next_close` |
| `T+1最大亏损` | `next_low_loss_pct` |