Install
openclaw skills install @xiyanjun/hectorlee-momentum-position-advisoropenclaw skills install @xiyanjun/hectorlee-momentum-position-advisor纯量价动量评估系统 + 逻辑覆盖层,回答两个核心问题:
设计哲学:模型告诉你"哪里疼",覆盖层判断"要不要截肢"。外生冲击(宏观事件/板块情绪)造成的趋势型破位,在基本面逻辑完好时不应机械执行卖出;反之,结构性走弱(20日无修复)的票即使有单日反弹也不可豁免。
与 volume-price-screener 互补:
默认不轻易卖。6种持有形态覆盖拉升途中的各种调整(缩量回踩/旗形整理/阶梯横盘),只有出现明确的衰竭/破位证据时才发出减仓/卖出信号。
| # | 形态 | 标签 | 强度 | 描述 |
|---|---|---|---|---|
| M1 | 底部启动加速 | 🚀 | ★★★★★ | 长期低量→放量阳线+突破MA20,双路径(3连阳递增/5日4阳温和反转) |
| M2 | 均线多头发散 | 📈 | ★★★★☆ | MA5>MA10>MA20>MA60,量能温和放大,沿MA5上行 |
| M3 | 趋势中继加速 | 🔥 | ★★★★☆ | 上升通道中,短暂回调不破MA10后再次放量阳线 |
| M4 | 缩量回踩支撑 | 🎯 | ★★★☆☆ | 拉升后缩量回踩MA20/MA60,触及即反弹收阳 |
| M5 | 上升旗形整理 | 🏴 | ★★★☆☆ | 拉升后斜向下收敛震荡,缩量,整理幅度<拉升1/2 |
| M6 | 阶梯横盘蓄力 | 🪜 | ★★☆☆☆ | 拉升后窄幅横盘(普通股<12%,科创板688<15%),缩量,≥60%收盘在上半部 |
| M12 | V形反转 | ⚡ | ★★★☆☆ | 近15日回撤>15%后3日内收复>50%,反弹放量,站上MA20(V1.3.5新增) |
| M13 | 双底反转 | 🔄 | ★★★★☆ | 两低点不破前低(<3%)+放量突破颈线(V1.3.5新增) |
| M0 | 横盘整理通用 🪜 | ★★ | V1.3.2新增:站上MA10+MA20+VP确认时兜底,给8/15分 |
| # | 信号 | 触发条件 | 含义 |
|---|---|---|---|
| M7 | 高位搏杀 | 累计涨幅>30% + 爆量/涨停 + 换手>20% + 量能峰值后衰减 | 鱼尾行情 |
| W1 | 涨幅过热 | 20日涨幅>20%,或10日涨幅>15% | 风险累积 |
| W2 | 乖离过大 | 收盘价偏离MA20>15% | 均值回归压力 |
| W3 | 上影频现 | 近5日中≥3日上影线>3% | 抛压增大 |
| W4 | 量能背离 | 价格新高但近5日均量<前5日80% | 动能衰竭 |
| Pre-M11 | 预破位预警 ⚠️ | 距MA20<3%+量缩至85%+3日2阴+MA20斜率趋平 | V1.2新增:提前1-3天预警 |
| # | 信号 | 触发条件 | 强度 |
|---|---|---|---|
| B1 | 反包阳线 🔄 | 前日阴线 + 当日阳线实体吞没前日实体 + 放量>1.2x | ★★★ |
| B2 | 回踩确认 🎯 | 回踩MA20/MA60不破缩量 + 当日放量阳线反弹 | ★★★★ |
| B3 | 整理突破 🚩 | M5/M6整理末端 + 放量突破上轨 | ★★★★★ |
| B4 | 缩尽首阳 🌅 | 连续3日+缩量阴线后放量阳线(量>1.5x + 涨>2%) | ★★ |
前置条件:动量健康度 ≥ 60(非卖出区间) + 至少命中一种加仓形态
评级:⭐⭐⭐ 强烈建议(8分) | ⭐⭐ 建议(5分) | ⭐ 轻仓试探(3分)
VP共振:VP≥80 升级 | VP≥60 +2分 | VP背离 否决加仓
| # | 信号 | 触发条件 | 强度 | 策略 |
|---|---|---|---|---|
| R1 | 恐慌抛售反弹 🩸 | 回撤>20% + 量>2x + 收阳 + 锤子线 | ★★★ | 恐慌盘出清,短线反弹确定性最高 |
| R2 | 缩量衰竭反弹 🌑 | 回撤>25% + 量<60%均值 + 跌速放缓 + 连阴≥4力量耗尽 | ★★ | 卖盘枯竭,买方试探 |
| R3 | 超跌均值回归 🎯 | 回撤>30% + 乖离>12% + 止跌信号 + 近3日有试探资金 | ★ | 极端超卖,统计规律驱动 |
前置条件:已触发 M10/M11 卖出信号
警告:反弹博弈 ≠ 趋势反转,严格止损(入场价-5%),目标 MA10
| # | 信号 | 触发条件 | 数据支撑 |
|---|---|---|---|
| M8 | 高开诱多 | 高开(开>昨收+2%)但收盘涨幅<1%,量>昨量70% | AI股D+1模式 |
| M9 | 缩量连阴 | 连续2日阴线 + 每日量<前5日均量70% | 55%顶部触发 |
| M10 | 峰值回撤 | 从近20日高点回撤>8%,近3日无反弹阳线 | D+2升级版 |
| M11 | 趋势破位 | 收盘跌破MA20且连续2日未收回 | 82%顶部确认 |
| 维度 | 分值 | 核心因子 |
|---|---|---|
| 趋势强度 | 25 | MA多头排列+15,站上MA20+5;破MA20-10,破MA60分级(M1康复-5/双支撑-10/普通-15) |
| 量能健康度 | 20 | 温和放量+10,涨放量跌缩量+10;放量滞涨-8,量价背离-5 |
| 衰竭信号 | 25 | 无上影+10,回撤小+10,涨幅适中+5;W1~W4硬地板扣分,M1康复豁免 |
| 均线支撑 | 15 | MA10/20/60逐级支撑+5/级;无近端支撑0分 |
| 形态匹配 | 15 | M1 |
| 基础分小计 | 100 | 以上五维(base_total) |
| 加仓信号 | +10 | B1~B4触发+有VP确认加分,VP背离否决 |
| 量价共振 | -10~+12 | VP形态融合加成:强+12/标准+8/弱+3/背离-8 |
| 持仓成本 | ±8 | 盈≥30%→+8,盈≥15%→+5,亏≥10%→-8 |
| 资金流向 | +8 | 近5日主力净流入加分(可选,无数据0分不扣) |
| 满分 | 108 | 总分 clamp 到 [0,108] |
分数 反弹 M1 MA结构 底部反弹 ≥4维 决策
───────────────────────────────────────────────────────────
<35 有 — — — — WATCH
<35 无 — — ✓ — WATCH 底部反弹
<35 无 — — ✗ — SELL
35~49 有 — — — — WATCH
35~49 无 — 多头 — — REDUCE 均线多头回调
35~49 无 — 双撑弱 — — WATCH 弱势整理
35~49 无 — 破位 — — SELL
50~64 有/是 ✓ — — — WATCH 反弹/M1观察
50~64 无 否 — — ✓ REDUCE 偏持有观望
50~64 无 否 — — ✗ REDUCE 偏谨慎
65~74 — 是 — — 衰竭✓ HOLD M1康复
65~74 — — 多头跌破 — ✓ REDUCE 涨多回调
65~74 — — 不破位 — ✓ HOLD 质量升级
65~74 — — — — ✗ REDUCE 偏谨慎
≥75 — — — — — HOLD 标准持有
cd scripts
python advisor.py --portfolio # 读取 data/positions.json
python advisor.py --portfolio --detail # 带五维评分明细
python advisor.py 300663 --cost 6.88 # 带成本价
python advisor.py 300663 600519 --detail # 多股+明细
python advisor.py --search 科蓝 --cost 6.88 # 搜索后诊断
python advisor.py --scan --top 20 # 扫描动量形态Top20
python advisor.py --scan --top 20 --detail # 带明细
python advisor.py 300663 --params '{"vol_ratio_min":1.3,"ma_period":10}'
data/positions.json:
{
"positions": [
{"code": "300663", "name": "科蓝软件", "cost": 6.88, "buy_date": "2026-07-15"},
{"code": "600519", "name": "贵州茅台", "cost": 1800.00, "buy_date": "2026-06-01"}
]
}
═══ 动量持仓顾问 V1.3.5 ═══
🟢 贵州茅台(600519) HOLD 82分 M2均线多头 VP:+A/78
🟡 浪潮信息(000977) REDUCE 58分 ⚠ 涨幅过热+乖离过大
👁 万向钱潮(000559) WATCH 52分 M1康复观察 3/7维健康
👁 寒武纪(688256) WATCH 40分 超跌反弹 R3:36分
🟡 恒玄科技(688608) REDUCE 35分 均线多头回调 1/7维健康
═══ 动量持仓顾问 ── 欣旺达(300207) ═══
Price: 18.65 | 成本: 17.50 | PnL: +6.6%
Trend: MA20+7d | peak4d ago -3.5%
Decision: HOLD 68/100pts (63(VP+5))
Primary: 无形态 ❓
趋势强度 ░░░░░░░░░░ 0/25 站上MA20
量能健康度 ██████████ 20/20 温和放量+涨放量跌缩量
衰竭信号 ██████████ 25/25 无上影+回撤小
均线支撑 ██████░░░░ 10/15 MA10/MA20双支撑
形态匹配 █████░░░░░ 8/15 M0横盘整理+VP确认
加仓信号 ░░░░░░░░░░ 0/10 无加仓信号
量价共振 ██████████ 10/10 标准横盘78.5分
Advice: HOLD 质量升级 4/7维健康
| 数据 | 来源 | 说明 |
|---|---|---|
| 日K线 | 腾讯 ifzq.gtimg.cn(前复权,90根) | 复用 volume-price-screener |
| 实时行情 | 腾讯 qt.gtimg.cn | 含换手率/名称/ST标记 |
| 全市场列表 | 东方财富 → 腾讯排行(备用) | 复用 volume-price-screener |
依赖:
pip install requests numpy
scripts/
├── advisor.py # 主入口:持仓诊断/单股诊断/全市场扫描(含板块共振)
├── momentum_detect.py # 25种形态并行识别引擎(8持有M1~M6/M12/M13 + 4卖出M8~M11 + 6预警W1~W4/M7/Pre-M11 + 4加仓B1~B4 + 3反弹R1~R3)
├── momentum_scoring.py # 五维评分引擎 + 成本因子 + 量价共振维度
├── cross_ref.py # volume-price-screener 交叉引用与融合加成(V1.2强化)
├── sector_resonance.py # **V1.2新增**:板块分类 + 共振检测 + 降级逻辑
├── risk_filter.py # 风险前置过滤(ST/退市/一字板/连板)
└── portfolio.py # 持仓文件读写 + 盈亏计算
data/
└── positions.json # 默认持仓文件
references/
└── pattern_rules.md # 形态规则与参数详解
V1.1 起,持仓诊断会自动融合 volume-price-screener 的量价收敛形态结果进入评分体系:
| 量价收敛结果 | 动量决策 | 加成 | 逻辑 |
|---|---|---|---|
| 强形态(≥80分) | 持有 | +12 | 共振:蓄力+动量双确认,最优信号 |
| 标准形态(≥60分) | 持有 | +8 | 双重确认:蓄力确认+动量趋势 |
| 弱形态(<60分) | 持有 | +3 | 略有加分 |
| 背离预警(出货嫌疑) | 任意 | -8 | 强化卖出信号 |
| 强形态(≥60分) | 减仓 | +5 | 回调蓄力中,减仓不急 |
| 强形态(≥60分) | 卖出 | +5 | 关注假跌破可能 |
| 未命中 | 任意 | 0 | 纯动量驱动 |
简洁模式:VP:~C/57.0(变体/分数)
详细模式:独立"量价共振"维度(0-10分)+ 底部摘要行
详见 scripts/cross_ref.py
本 skill 的顶部识别逻辑基于 2026-08-02 对 14 只 AI 概念股 50 日 K 线的实证分析:
详见 references/pattern_rules.md(形态规则与参数详解)
V1.3.8 实盘复盘(2026-09-11,18只热门科技股20日回溯)暴露的系统性问题:外生冲击日(FOMC前/美股暴跌传导)M10/M11 趋势型卖出信号批量误触发——11/18 只被判 SELL,但其中多数基本面逻辑完好、且出现低位承接信号。纯量价模型无法区分"杀估值"与"杀逻辑"。
data/fundamentals.json 配置每只票的 logic: intact|weak|broken + note + support(纪律位)+ valid_until(过期自动失效)detect_absorption_day() — 下影线≥2% + 收盘位于振幅上半部 + 量比≥1.2x = 低位承接日data/events.json 配置事件窗口(如 FOMC 前N日),窗口内外生冲击类卖出可逆性高| 规则 | 触发 | 动作 |
|---|---|---|
| A 逻辑完好豁免 | SELL(仅M10/M11) + logic=intact + (承接日|底部反弹|事件窗口) | SELL → WATCH,标注纪律位 |
| B 结构性走弱升级 | 20日无任何≥2%修复阳线 + logic≠intact | REDUCE/WATCH → SELL("恒玄模式":无修复日的票没有恐慌日背景,是病灶) |
| C 逻辑破坏加速 | logic=broken | HOLD → REDUCE |
配置缺失/过期时自动退回纯量价决策,不影响主流程;覆盖层异常打印 stderr 并降级。
data/fundamentals.json:
{
"688981": {"logic": "intact", "note": "Q3指引+产能满载", "support": [115.8, 113], "valid_until": "2026-09-30"},
"688608": {"logic": "weak", "note": "20日无修复,结构性走弱", "support": []}
}
data/events.json:
[
{"date": "2026-09-16", "name": "美联储FOMC决议", "window": 3}
]
window = 事件日前 N 天内视为事件窗口。建议在每次重大宏观事件后更新此文件与 fundamentals.json。
Pre-M11 预破位预警:在 M11 趋势破位正式确认前 1-3 日发出预警。触发条件:价格距 MA20 < 3% + 缩量至 85% + 3 日 2 阴 + MA20 斜率趋平。严重度评分(0-100),≥50 分为高危。
板块共振降级:批量诊断后,若同板块 ≥2 只触发 SELL,自动将该板块内 HOLD/REDUCE 标的降 10 分。支持精确代码映射 + 名称关键词匹配 + 代码前缀推断三级分类。
VP 共振加权强化:加成幅度全面提高——强形态 +8→+12,标准 +5→+8,关注 +2→+3,减仓/卖出场景 +3→+5,背离惩罚 -5→-8。
持仓成本融合:根据盈亏幅度调整决策紧迫度。大盈(≥30%)+8 分(利润缓冲,可从缓),大亏(≤-10%)-8 分(止损优先)。
反弹博弈判断(R1-R3):仅在 M10/M11 卖出信号触发后检测,识别潜在的短线技术反弹机会。R1 恐慌抛售反弹(最强)、R2 缩量衰竭反弹(中)、R3 超跌均值回归(弱)。所有反弹信号必须出现止跌K线(阳线/十字星)才能触发,避免接飞刀。
scripts/momentum_detect.py: 新增 detect_pre_m11_warning() + detect_rebound_signals() (R1-R3) + detect_all() 主信号逻辑调整scripts/cross_ref.py: compute_fusion_bonus() 加成值全面上调scripts/momentum_scoring.py: 新增 compute_cost_factor() 函数 + 反弹博弈信号展示scripts/advisor.py: diagnose_single() 传递成本数据,批量模式增加板块共振检测scripts/sector_resonance.py: 新文件,板块分类 + 共振检测 + 降级逻辑scripts/momentum_detect.py: M1/M6/W1 逻辑增强,detect_all() 接受 code 参数scripts/momentum_scoring.py: 趋势强度增加底部反转加分,衰竭信号增加超跌修复场景scripts/advisor.py: 传递 code 到 detect_all()R3 乖离阈值 -20% → -12%:MA20 下行时乖离难以追赶跌幅,寒武纪跌 31% 乖离仅 -13.5%。
MA60 跌破惩罚分级:M1 康复 -5 / 站上 MA10+MA20 双支撑 -10 / 普通 -15。
M0 横盘整理通用形态:无 M1~M6 命中但 VP 确认 + MA10/20 双支撑时,给 8/15 分兜底。
WATCH 观望决策:<50 分 + 有 R1~R3 反弹信号 → WATCH(不再一刀切 SELL)。
质量置信度体系:统计 N/7 维健康(≥60% 满分),边界区根据质量升降级。
决策引擎全面重构:分数定区间 + 质量定升降 + MA 结构覆盖 + 反弹信号覆盖 + M1 特殊通道。新增 WATCH 覆盖:3549 反弹→WATCH,5064 反弹/M1→WATCH。MA 多头回调(MA10>20>60 但价格破 MA20)降为 REDUCE 而非 SELL。
scripts/momentum_detect.py: R3 乖离阈值 -20→-12scripts/momentum_scoring.py: MA60 分级/M0 形态/决策引擎重构/质量置信度scripts/advisor.py: 汇总支持 WATCHscripts/cross_ref.py: reduce_watch 兼容双支撑弱势整理 WATCH:35-49分区间新增中间状态判断。当价格站上MA10+MA20(短期双支撑)但跌破MA60(中期未修复)且无明确卖出形态触发时,决策从 SELL 修正为 WATCH(弱势整理)。
触发动机:万向钱潮(000559) 40分跌破MA60判SELL,但MA10/20双支撑+窄幅整理+跌幅仅4%不构成趋势破位,实战中应为观望等方向而非卖出。
卖出信号区分:决策引擎新增 has_sell_signal 判断,区分"形态明确触发卖出"和"因分数边界值被动判SELL"两种情况。前者维持SELL,后者在有双支撑时降级WATCH。
ma1020_double_support:价格同时站上MA10和MA20ma60_broken:价格跌破MA60double_support_weak:双支撑+破MA60+非多头排列(弱势整理特征)has_sell_signal:是否有卖出形态明确触发scripts/momentum_scoring.py: 新增双支撑弱势整理检测 + 决策引擎 35-49 区间新增 WATCH 分支 + 卖出信号区分深度回撤+阳线 = 止跌信号:<35分区间不再一刀切SELL。当回撤>20%且今日收阳时,升级为 WATCH(底部反弹)。
触发动机:寒武纪(-27.6%)、兴森科技(-34.1%)、中芯国际(-28.3%) 都因M11破位判SELL,但今日均放量收阳。深度回撤后卖在底部不合理,应给观察期等MA20修复方向。
不放量要求:底部反弹初期天然缩量(买方试探),不能用调整期高量做基准。只要回撤>20%+阳线即触发,不要求量能确认。
回撤计算:基于近20日最高价 vs 当前收盘价。仅对 <35 分区间生效,不影响其他区间判断。
半导体板块从「4只卖出→共振降级」变为「1只卖出→关注」,不再触发板块级降级。
peak20:近20日最高价drawdown:基于 peak20 的回撤百分比(负值=回撤)is_bullish_day:最后一天是否为阳线(close > open)deep_rebound_watch:回撤>20% + 阳线 = 底部反弹WATCHscripts/momentum_scoring.py: 新增底部反弹检测 + 决策引擎 <35 区间新增底部反弹 WATCH 分支问题:M8/M9/M10 卖出信号 + Pre-M11 预破位预警均以"近3日阴线"为触发条件,未识别"最新日已放量反弹收复MA20"的反转事实,导致放量阳线反弹日仍误判 SELL。
触发动机:寒武纪(688256) 今日(8-17)收盘 1156.00(+5.76% 放量阳线)站上 MA20(1154.20),却因 M10 峰值回撤(近3日2日阴线)+ M8 高开诱多 + Pre-M11 预破位(severity 100)被判 SELL。实际是明确的止跌反弹,应 WATCH。
卖出信号反弹覆盖:detect_all() 中新增——最新日为放量反弹阳线(收阳 + 涨≥2% + 量≥1.1x + 站上MA20)时,清除 M8/M9/M10 回撤/诱多型卖出信号。M11 趋势破位要求连续2日跌破MA20,今日阳线站上天然不触发,无需处理。
Pre-M11 反弹豁免:detect_pre_m11_warning() 中新增——最新日放量阳线(涨≥2% + 量≥1.1x + 站上MA20)属于向上收复而非向下逼近MA20,方向相反,不构成预破位预警,直接返回 None。
V1.3.4 已确立"深度回撤+阳线=止跌信号,不应机械卖出"的哲学,但仅覆盖"回撤>20%"的场景。本次将这一哲学上移到统一层面:只要最新日是放量反弹阳线收复MA20,无论回撤幅度,回撤/诱多/预破位类信号一律失效,交由决策引擎按弱势整理(WATCH)处理。
scripts/momentum_detect.py: 新增 detect_all() 卖出信号反弹覆盖 + detect_pre_m11_warning() 反弹豁免问题:V1.3.6 的"今日放量反弹覆盖"只覆盖了"最新日为大阳线"的场景,未覆盖"昨日大阳反弹 + 今日缩量回踩"。中芯国际(688981) 8-17 放量阳线 +2.93% 创新高后,8-18 缩量回踩 -2%,却因 M10 的"近3日≥2日阴线"(8-14 阴 + 8-18 阴)误判 SELL。
根因:M10 文档语义是"回撤>8% 且近3日无反弹阳线",但代码实现成"近3日≥2日阴线",两种表述在"见底反弹后正常回踩"时不等价——后者会把反弹阳线也数进去,误杀反弹股。
detect_m10_peak_drawdown() 中,在"≥2日阴线"判断前,先检查近3日是否出现涨幅≥2%的阳线。若有,说明已有反弹,直接不触发 M10。scripts/momentum_detect.py: detect_m10_peak_drawdown() 新增反弹阳线豁免