筹码异动策略查询¶
来源同步:
/Users/mac/Projects/chatgpt-codex/doc/api_StrategyChipMovement.md所属接口集:
筹码异动策略
请求 URL¶
GET /v1/api/strategy/chip_movement
认证方式¶
Bearer Token(详见 认证与签名)
接口概述¶
按指定日期返回命中 D+(主力增仓)信号的股票列表,作为"主力异动策略"列表。为提升实盘查询性能,本接口只计算 D+ 信号;若显式传 signal=D-,直接返回空列表。
根据查询日期是否为交易日当天,接口走两条不同数据路径:
- realtime(交易日当天):从 Redis 实时数据计算,data_source = "realtime"
- snapshot(历史/非交易日):从 MySQL 快照表 monitor_chip_peak_daily_snapshot 读取,data_source = "snapshot"
请求参数¶
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
day |
string | 否 | 查询日期,格式 YYYYMMDD,默认当天 |
signal |
string | 否 | 信号筛选:all(默认)/ D+ / D-(传 D- 直接返回空列表) |
codes |
string | 否 | 逗号分隔的股票代码,限定筛选范围,如 600519,000858 |
exclude_prefixes |
string | 否 | 逗号分隔的代码前缀排除列表,如 688,689 排除科创板 |
net_amount_gte |
number | 否 | 净额下限,只返回 net_amount >= 该值 的记录 |
concentration_90_lte |
number | 否 | 90%筹码集中度上限,只返回 concentration_90 <= 该值 的记录 |
free_float_shares_gte |
number | 否 | 流通股本下限(亿股),只返回 free_float_shares >= 该值 的记录 |
free_float_shares_lt |
number | 否 | 流通股本上限(亿股),只返回 free_float_shares < 该值 的记录 |
page |
int | 否 | 页码,默认 1 |
page_size |
int | 否 | 每页条数,默认 100,最大 500 |
接口说明¶
锁仓/增减仓核心公式¶
统一使用 main_control(主力控盘度)计算 lock_ic_daily 与 lock_ic_delta_daily:
lock_ic_delta_daily = (main_control - pre_main_control) / |pre_main_control| # 带符号(增减仓比例)
lock_ic_daily = |main_control - pre_main_control| / |pre_main_control| # 绝对值(锁仓比例)
lock_ic_delta_daily:增减仓指标,带符号的比值。正值表示增仓,负值表示减仓。lock_ic_daily:锁仓指标,取绝对值的比值,衡量主力锁仓力度。
当
|pre_main_control| <= 1e-9时,两个指标均不计算(返回null)。
realtime 路径下 main_control 取值¶
main_control:优先取bigdata:{day}:{code6}哈希,回退bigdata:days:{code6}哈希pre_main_control:取bigdata:days:{code6}哈希
snapshot 路径下 main_control 取值¶
main_control:取当前快照行的main_controlpre_main_control:取时间上紧邻的更早一条快照行的prev_main_control(通过子查询获取)
信号判定条件¶
设 net_amount = buy_total_amount - sell_total_amount。
D+(红点,主力增仓),需同时满足以下三个条件:
| 条件 | 阈值 | 常量名 |
|---|---|---|
lock_ic_delta_daily > 1.0 |
增仓比例超过 100% | RED_LOCK_IC_DELTA_MIN |
net_amount > 5,000,000 |
净流入超过 500 万元 | RED_NET_AMOUNT_MIN |
concentration_90 < 5.0 |
筹码集中度低于 5% | RED_CONCENTRATION_90_MAX |
D-(绿点,主力减仓),需同时满足以下四个条件(本接口默认不计算,d_plus_only=True 时跳过):
| 条件 | 阈值 | 常量名 |
|---|---|---|
lock_ic_delta_daily < -0.9 |
减仓比例低于 -90% | GREEN_LOCK_IC_DELTA_MAX |
lock_ic_daily > 2.0 |
锁仓变动超过 200% | GREEN_LOCK_IC_DAILY_MIN |
concentration_90 < 5.0 |
筹码集中度低于 5% | GREEN_CONCENTRATION_90_MAX |
net_amount < -10,000,000 |
净流出超过 1000 万元 | GREEN_NET_AMOUNT_MAX |
任一必需字段(lock_ic_delta_daily、buy_total_amount、sell_total_amount、concentration_90)缺失则不产生信号。
realtime 路径 D+ 预筛优化¶
为避免对全市场每只股票都读取大单明细导致超时,采用两级筛选:
- 快速预筛(
_prefilter_dplus_candidates):仅用廉价hget做 D+ 的必要条件判断,缩小候选集合: lock_ic_delta_daily > 1.0concentration_90:Redis 已存明确值(>0)且>= 5.0时排除;缺失/<=0保留(后续实时重算)-
净额粗筛:
chip_buy_total_amount_today - chip_sell_total_amount_today <= 0时排除;哈希缺失则保留 -
逐票精算:对预筛后的候选,批量读取哈希字段构建指标,若
concentration_90缺失或<= 0则用大单明细实时重算(_recalculate_realtime_concentration_90)
买/卖总额取值(realtime 路径)¶
交易日当天的 buy_total_amount / sell_total_amount 直接取自 bigdata 哈希:
buy_total_amount = HGET bigdata:{day}:{code6} chip_buy_total_amount_today
(缺失回退 HGET bigdata:days:{code6} chip_buy_total_amount_today)
sell_total_amount = HGET bigdata:{day}:{code6} chip_sell_total_amount_today
(缺失回退 HGET bigdata:days:{code6} chip_sell_total_amount_today)
集中度取值(realtime 路径)¶
concentration_90 取值优先级:当日 bigdata:{day} → bigdata:days 的 pre_concentration_90 → MySQL 上一交易日 prev_concentration_90。
排序规则¶
D+信号优先|net_amount|降序stock_code升序
最新行情字段¶
close / pct_chg / vol / free_float_shares / today_vol_ratio 始终取当前最新 Redis 行情日(交易日取今天,否则取上一交易日),不随 day 参数变化:
close/pre_close/vol:HGET {prefix}:intraday:kline:1m:state:{latest_quote_day}:{code6}free_float_shares/today_vol_ratio:HGET {prefix}:monitor:bigdata:{latest_quote_day}:{code6}pct_chg = (close - pre_close) / pre_close * 100
响应格式示例¶
{
"code": 1,
"message": "success",
"data": {
"query_day": "20260801",
"resolved_day": "20260801",
"data_source": "realtime",
"latest_quote_day": "20260801",
"latest_quote_fallback_day": "20260731",
"signal": "all",
"filters": {
"exclude_prefixes": ["688", "689"],
"net_amount_gte": null,
"concentration_90_lte": null
},
"total": 25,
"page": 1,
"page_size": 100,
"items": [
{
"stock_code": "600519.SH",
"stock_name": "贵州茅台",
"signal": "D+",
"label": "D+",
"dot_color": "red",
"day": "20260801",
"net_amount": 15000000.0,
"buy_total_amount": 35000000.0,
"sell_total_amount": 20000000.0,
"lock_ic_daily": 1.25,
"lock_ic_delta_daily": 1.25,
"concentration_90": 3.2,
"close": 1800.5,
"pct_chg": 2.35,
"vol": 35000.0,
"free_float_shares": 12.56,
"today_vol_ratio": 0.85
}
]
}
}
返回状态¶
| 状态码 | 说明 |
|---|---|
| 200 | 成功 |
| 400 | 参数错误 |
| 401 | 未认证 |
| 403 | 无权限 |
| 404 | 资源不存在 |