自选监控名单管理¶
来源同步:
/Users/mac/Projects/chatgpt-codex/doc/api_MonitorAgg.md所属接口集:
盘中监控
请求 URL¶
GET /v1/api/monitor/watchlistPOST /v1/api/monitor/watchlistDELETE /v1/api/monitor/watchlist
认证方式¶
Bearer Token(详见 认证与签名)
接口概述¶
管理用户的自选监控股票名单与自定义监控规则。支持查询、添加、删除操作。添加时校验股票必须存在于 monitor:bigdata 快照中(交易日校验当天 Redis 数据,非交易日校验上一交易日 Redis 数据)。expire_date 过期后,该自选及其规则不再参与 WebSocket 监控推送。
规则分类¶
price_track:价格跟踪price_break_ma_up股价突破均线price_break_ma_down股价跌破均线price_new_high股价创新高price_new_low股价创新低price_reach_up股价涨到(最新价涨到指定价格)price_reach_down股价跌到(最新价跌到指定价格)movement_watch:异动盯盘near_limit_up逼近涨停near_limit_down逼近跌停price_speed_up涨速异动price_speed_down跌速异动bigorder_buy大单买入异动bigorder_sell大单卖出异动technical_indicator:技术指标ma_cross_up均线上穿均线ma_cross_down均线下穿均线ma_bullish_stack均线多头排列ma_bearish_stack均线空头排列
6.1 查询自选名单¶
请求 URL¶
GET /v1/api/monitor/watchlist
请求参数¶
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| user_id | int | 是 | 用户 ID(整数) |
| page | int | 否 | 页码,默认 1 |
| page_size | int | 否 | 每页条数,默认 50,上限 200 |
| include_expired | int | 否 | 不传=返回全部记录;0=仅未过期;1=仅已过期 |
响应格式示例¶
{
"code": 1,
"message": "success",
"data": {
"user_id": 123,
"total": 3,
"page": 1,
"page_size": 50,
"items": [
{
"stock_code": "600519",
"stock_name": "贵州茅台",
"expire_date": "2026-06-12",
"is_expired": false,
"created_at": "2026-06-05T09:00:00",
"rules": [
{
"rule_id": 12,
"category": "price_track",
"rule_type": "price_break_ma_up",
"rule_name": "股价突破均线",
"rule_params": {"ma_period": 20},
"rule_signature": "a1b2c3",
"is_enabled": true,
"expire_date": "2026-06-12",
"is_expired": false,
"created_at": "2026-06-05T09:00:00",
"updated_at": "2026-06-05T09:00:00"
}
]
}
]
}
}
6.2 添加股票到异动监控自选名单¶
请求 URL¶
POST /v1/api/monitor/watchlist
请求参数(Body JSON)¶
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| user_id | int | 是 | 用户 ID |
| stocks | array | 否 | 股票列表,每项包含 stock_code(必填)、stock_name(选填)、expire_date(选填)、rules(选填) |
| expire_date | string | 否 | Body 级默认过期日期,支持 YYYY-MM-DD 或 YYYYMMDD;不传时默认 today + 7 天 |
| rules | array | 否 | Body 级默认规则列表;单股模式或 stocks[].rules 未传时生效 |
| replace_rules | bool | 否 | 是否替换股票现有规则,默认 false |
| stock_code | string | 否 | 单股简写模式时的股票代码 |
| stock_name | string | 否 | 单股简写模式时的股票名称 |
- 支持批量模式(
stocks数组)和单股简写模式(直接传stock_code/stock_name) - 每个股票可独立设置
expire_date,未设置时使用 Body 级expire_date,仍为空则默认 today + 7 天 - 每个股票可独立设置
rules;未传时默认补入price_speed_up / price_speed_down / bigorder_buy / bigorder_sell - 添加前校验股票是否在
monitor:bigdata快照中;不存在则返回errors
rules[] 结构¶
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| rule_type | string | 是 | 规则类型 |
| category | string | 否 | 规则分类;不传时按 rule_type 自动推断 |
| rule_name | string | 否 | 规则展示名称;不传时使用默认值 |
| rule_params | object | 否 | 规则参数 |
| is_enabled | bool | 否 | 是否启用,默认 true |
| expire_date | string | 否 | 规则独立过期日期;为空则继承股票的 expire_date |
常用 rule_params¶
price_break_ma_up / price_break_ma_down:{"ma_period": 5|10|20|60|180}price_new_high / price_new_low:{"lookback_days": 5|10|20}price_reach_up / price_reach_down:{"target_price": 12.5}(最新价涨到/跌到指定价格,须为正数)near_limit_up / near_limit_down:{"distance_pct": 0.5}price_speed_up / price_speed_down:{"price_speed_threshold": 3, "price_speed_mult": 1}bigorder_buy / bigorder_sell:{"bigorder_turnover_threshold": 0.0004}ma_cross_up / ma_cross_down:{"fast_ma": 5, "slow_ma": 10}ma_bullish_stack / ma_bearish_stack:{"stack": "ma5_ma10_ma20_ma60"}
请求示例 1:单股简写模式¶
{
"user_id": 123,
"stock_code": "600519",
"stock_name": "贵州茅台",
"expire_date": "2026-06-15",
"rules": [
{
"rule_type": "price_break_ma_up",
"rule_params": {
"ma_period": 20
}
},
{
"rule_type": "price_reach_up",
"rule_params": {
"target_price": 1800
}
},
{
"rule_type": "near_limit_up",
"rule_params": {
"distance_pct": 0.5
}
},
{
"rule_type": "ma_cross_up",
"rule_params": {
"fast_ma": 5,
"slow_ma": 10
}
}
]
}
请求示例 2:批量模式¶
{
"user_id": 123,
"expire_date": "2026-06-20",
"replace_rules": false,
"stocks": [
{
"stock_code": "600519",
"stock_name": "贵州茅台",
"rules": [
{
"rule_type": "price_break_ma_up",
"rule_params": {
"ma_period": 20
}
},
{
"rule_type": "bigorder_buy",
"rule_params": {
"bigorder_turnover_threshold": 0.0004
}
}
]
},
{
"stock_code": "000001",
"stock_name": "平安银行",
"expire_date": "2026-06-18",
"rules": [
{
"rule_type": "price_new_high",
"rule_params": {
"lookback_days": 20
}
},
{
"rule_type": "ma_bullish_stack",
"rule_params": {
"stack": "ma5_ma10_ma20_ma60"
}
}
]
}
]
}
响应示例:成功并带部分失败¶
{
"code": 1,
"message": "success",
"data": {
"data_day": "20260605",
"added": [
{
"stock_code": "600519",
"expire_date": "2026-06-15",
"rules": [
{
"rule_id": 12,
"category": "price_track",
"rule_type": "price_break_ma_up",
"rule_name": "股价突破均线",
"rule_params": {"ma_period": 20},
"rule_signature": "a1b2c3",
"is_enabled": true,
"expire_date": "2026-06-15",
"is_expired": false,
"created_at": "2026-06-05T09:00:00",
"updated_at": "2026-06-05T09:00:00"
},
{
"rule_id": 13,
"category": "movement_watch",
"rule_type": "bigorder_buy",
"rule_name": "大单买入异动",
"rule_params": {"bigorder_turnover_threshold": 0.0004},
"rule_signature": "d4e5f6",
"is_enabled": true,
"expire_date": "2026-06-15",
"is_expired": false,
"created_at": "2026-06-05T09:00:00",
"updated_at": "2026-06-05T09:00:00"
}
]
}
],
"errors": [
{"stock_code": "000858", "error": "already exists"},
{
"stock_code": "000001",
"rule_errors": [
{
"rule_index": 1,
"rule_type": "ma_cross_up",
"error": "fast_ma/slow_ma must be one of (5,10),(10,20),(20,60),(60,180)"
}
]
}
]
}
}
6.3 从异动监控自选名单删除股票¶
请求 URL¶
DELETE /v1/api/monitor/watchlist
请求参数(Body JSON)¶
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| user_id | int | 是 | 用户 ID |
| stock_codes | array | 否 | 要删除的股票代码列表 |
| stock_code | string | 否 | 单股简写模式时的股票代码 |
| rule_ids | array | 否 | 要删除的规则 ID 列表 |
| rules | array | 否 | 按 stock_code + rule_type + rule_params 删除规则 |
- 支持批量删除股票(
stock_codes数组)和单股简写模式(stock_code) - 支持单独删除规则,不删除股票主记录
响应格式示例¶
{
"code": 1,
"message": "success",
"data": {
"deleted": 1,
"deleted_rules": 2,
"requested_codes": ["600519"],
"requested_rule_ids": [12, 13]
}
}
返回状态¶
| 状态码 | 说明 |
|---|---|
| 200 | 成功 |
| 400 | 参数错误(user_id 缺失/非法、stock_codes/rule_ids/rules 均为空、JSON 格式错误) |
| 401 | 未认证 |
| 403 | 无权限 |