Install
openclaw skills install @handm-735/kline-shortterm-checklistA 股短线(日/尾盘)选股与买点核查清单技能。当用户想用技术分析纪律筛选 A 股短线标的、评估某只股票是否符合「96 原则(九不买+六不卖)/ 下午 2:30 选股法(八层筛选)/ 底部 K 线形态」、或为自选股做纪律化买前/持有核查时使用。覆盖 9 类不买、6 类不卖、12 种底部形态、八层 2:30 筛选、上升趋势研判与心态纪律,并能调用腾讯财经 API 自动拉取涨跌幅/量比/换手率/流通市值等客观指标做初筛,连接 Wind 金融数据 MCP 时还可把九不买
openclaw skills install @handm-735/kline-shortterm-checklist把一套 A 股技术分析经验(96 原则 / 12 底部形态 / 下午 2:30 选股法 / 上升趋势纪律)
蒸馏成纪律化、可复用的核查清单。客观指标(涨跌幅、量比、换手率、流通市值等)
交由 scripts/fetch_quote.py 调用腾讯财经 API 自动抓取与初筛;主观项(K 线形态、趋势、
分时、题材)按 references/ 中的规则逐条人工/看图判定。最终产出结构化筛查报告。
⚠️ 本清单为方法论整理,不构成投资建议;任何短线策略都有失效期与回撤风险, 实盘前须用模拟盘/小仓位验证,并严守止损与仓位纪律。
对目标代码运行附带脚本,一次性拿到涨跌幅/量比/换手率/流通市值等,并自动判定 「下午 2:30 选股法」第 1~4 层与「96 原则」第 8、9 条的可量化阈值:
python scripts/fetch_quote.py <代码> --screen
# 例: python scripts/fetch_quote.py 603045 --screen
# 代码支持 603045 / sh603045 / 600158 / sz000001 / 8xxxxx(北交所 bj)
脚本输出含 JSON>>> 行,便于程序化消费;客观结论标记「达标 / 偏弱 / 偏高 / 警惕 / 剔除」。
「去选股」模式(未给具体代码时):若用户要“选股/筛一批票”,先跑全 A 客观四层初筛——
python scripts/select_stocks.py,对全 A(沪/深/创业板/科创板,东方财富push2delay延迟行情)按涨幅降序翻页,过滤涨幅3~5% & 量比≥1 & 换手5~10% & 流通市值50~200亿, 结果写入当前目录candidates.json(含代码/名称/现价/涨幅/量比/换手/流通市值)。 随后用scripts/kline_history.py --top 15 --json(--top自动读candidates.json取量比前 15 只,无需手敲代码)拉新浪日 K 并导出kline_data.json, 最后必须用scripts/report_html.py生成固定版式 HTML 看板报告(版式已锁定,禁止随意改排版,见步骤 6)。 注:东方财富push2delay在本环境可用(腾讯web.ifzq.gtimg.cnK 线接口 bad params、东方财富push2/push2his被墙),单页上限 100 条需翻页。
🔤 术语澄清(重要):「96 原则」= 九不买(买入侧纪律,步骤 2 逐条判定)+ 六不卖(卖出侧纪律,步骤 5 持有判定)。 「6」指 六不卖(6 类应继续持有 / 不卖的情形),非 6 次筛选。 真正负责「筛选」的是**「下午 2:30 选股法」的「八层筛选」(共 8 层)——源文本又称「6 次筛选原则」, 但通读实为步骤 1→8 共 8 道连续筛选**,本清单按此落地为八层(层 1
4 自动 / 层 58 人工)。 即本报告执行的是 「九不买」逐条 + 「六不卖」持有判定 + 「八层」筛选,不存在孤立的「6 次筛选」; 六不卖细则与八层映射均已补全,见references/checklist.md第二、四节。
读取 references/checklist.md 第一节,对 9 类不买逐条判定(下跌趋势、高位放量滞涨、
利好兑现、短期暴涨、大股东减持、基本面问题、破平台、技术走坏、换手异常)。其中
量比>10、换手率>25% 或 <1% 已由脚本在步骤 1 标出,其余需结合 K 线/均线/消息人工判断。
#5/#6 的可自动化部分:#6 的「ST/*ST/退市」可由股票名称自动核查、「亏损」可由 TTM 市盈率(腾讯快照字段 39 / 东方财富 clist 字段 f9)自动判定——这两项目前可在
scripts/select_stocks.py与报告中自动输出;#5 大股东减持、#6 的「业绩预减/违规」 现可由 Wind 金融数据 MCP 公告核查(步骤 2.5)客观化(连接wind-finance时, 减持命中→#5 剔除、监管问询/处罚→#6 剔除);若未连接 Wind,则回落为 👁 并给出人工核查路径(东财/巨潮资讯公告页)。
九不买里 #3 利好兑现 / #5 大股东减持 / #6 业绩预减·违规 以往只能标 👁(沙箱无可达公告接口)。
若环境已连接 wind-finance MCP 连接器,可把这三项客观化:
python scripts/announcements_wind.py --plan 生成待查清单 announcement_plan.json——
每只候选 1 个自然语言查询:{公司名} {代码} 最近公告(如「福达合金 603045 最近公告」)。
⚠️ 不要用「塞满关键词」的严格查询(如「603045 2026年8月 减持 业绩预告 处罚 违规 公告」), Wind 的 NL 检索对这类常返回空;用「X 最近公告」这种自然宽泛查询最稳,四类信号全部由
--merge的本地关键词扫描覆盖。
mcp__wind-finance__get_company_announcements(query="{公司名} {代码} 最近公告", top_k=5),
把返回 items 按 code 归集进 wind_raw.json(顶层为 [{code, items:[{title,date,content,...}]}])。python scripts/announcements_wind.py --merge → 生成 announcement_check.json(字段:reduction / earnings_warn / penalty / good_news / hits / checked)。report_html.py 读取后自动把 #3/#5/#6 的 👁 翻转为客观判定:减持命中 → 九不买 #5 剔除;监管问询/处罚命中 → 九不买 #6 剔除;回购/增持/中标/合同/重组类利好命中 → #3 提示「利好兑现/出尽风险,需谨慎」;并保留真正主观项(题材/逻辑/分时)的 👁。🔴 两道防线(缺一不可,已焊进
announcements_wind.py --merge,务必理解其必要性):
防线1 · 标题过滤:Wind 即使 query 是「X 最近公告」,仍可能返回跨公司/基金招募书/指数类噪音条目 (实测曾返回「广发利鑫灵活配置混合型证券投资基金招募说明书」等)。这类条目标题不含本公司名/代码,
--merge会自动丢弃(终端会打印「丢弃跨公司/基金/指数类噪音标题 N 条」)。若不丢,其正文里的 「未受到公开谴责、处罚」等字眼会污染关键词扫描。防线2 · 否定语境守卫:公告极常用自证清白句式——「未受到处罚 / 未被立案 / 不存在…违法违规 / 未涉及重大资产重组…股份回购」。若只扫关键词(处罚/重组/回购),会把这种否定句误判为
penalty=true或good_news=true,导致 #6 误翻「不买」或 #3 误报利好。scan()内对 违规(PENALTY)、 业绩(EARN)、利好(GOOD) 三类均配了*_NEG否定守卫——加新关键词时,务必同步加对应的否定例外。防线3 · 标题类型门控:否定句式变体无穷无尽,靠穷举
*_NEG堵不住。实测漏网: 「独立董事提名人声明与承诺」正文含"没有受过处罚"→ 误判 penalty;「对外担保的进展公告」正文含 "下降/亏损"→ 误判 earnings_warn;「董事辞职暨补选」→ 误判 reduction。 对策:正文关键词只做"确认",标题决定"这份公告到底属不属于这一类"——正文命中必须与RED_TITLE / EARN_TITLE / PEN_TITLE / GOOD_TITLE相符才算数,把"堵漏"变成"白名单"。 ⚠️merge()必须写scan(text, title=title),只传拼接文本会静默退化成无门控模式(曾是真实 bug)。防线4 · 业绩方向判定:业绩预告正文必然出现「上年同期为亏损 XXX 万元」这类对照基准表述, 纯关键词会把扭亏为盈的利好判成业绩预减(实测:银河电子 002519 归母由 -2881 万转 +544 万、 营收 +114%,却被判
earnings_warn→ #6 误剔除)。规则:命中EARN_POS(扭亏为盈/由负转正/ 预计盈利/业绩预增)且无当期预亏表述 → 翻回未触发;且 #6 以【归母】口径判定, 「扣非…仍处于亏损」用 20 字窗口豁免(_cur_loss()),扣非亏损只作质量提示、不硬否决。
--merge另按类别分桶输出hits_reduction / hits_earn / hits_penalty / hits_good, 报告展示理由时取对应桶,避免「判定=减持、理由却是业绩预告」的错配。架构说明:Wind 是 MCP 连接器,由助手(agent)在对话中调用,独立 Python 脚本无法直接调 MCP; 故本步骤的「拉公告」由助手执行,脚本只负责生成查询计划(
--plan)与解析归集(--merge,含上述四道防线)。 若未连接 Wind,announcement_check.json不存在,报告回落到 👁 人工项,不影响其他逻辑。 关键词扫描规则:减持(且未被"未减持/提前终止减持/不减持"否定)、业绩预减/预亏/亏损/同比下降(且非"未亏损"等否定)、处罚/警示函/立案/违规/监管函/问询函(且非"未受到处罚/未被立案"等自证)、中标/合同/重组/回购/增持(且非"未涉及重组/股份回购/增持"等自证否定清单)。
⚠️ 范围边界(硬性):Wind 集成仅限本环境已信任/启用时使用,技能不负责连接、也不引导用户去连接 Wind(受 MCP 信任安全设计限制,AI 无法代点「信任」,故「自动连通」在任意环境都不可行)。新环境若要用 Wind,请先自行在连接器管理页信任
wind-finance,再运行本技能;未配置则自动回落 👁,不影响其他逻辑。任何版本都不得把「自动连接/引导连接 Wind」写回本技能。
「下午 2:30 选股法」第 7 层要求看分时图——强势股应"全天运行在分时均价线上方、跑赢大盘"。
原本只能标 👁。若环境已连接 wind-finance,Wind 的 get_stock_quote / get_index_quote
返回分钟级序列(MATCH=当时价、TURNOVER=该分钟成交额、VOLUME=该分钟成交量),可把"分时强度"客观化
(题材仍须人工,Wind 给不了"今天什么在炒"的主观判断,见下方边界):
🔴 AVPRICE 列陷阱(2026-08-10 实测纠错,勿踩回去):Wind 的
AVPRICE不是分时均价线, 而是该根分钟 bar 自身的 (OPEN+HIGH+LOW+MATCH)/4。验证:① 沪深300 09:30 根 (4698.82+4702.07+4698.82+4701.93)/4 = 4700.41 恰等于 AVPRICE,逐根可复现; ② 15:00 收盘集合竞价是单一价(O=H=L=C),当日 10 只个股的 AVPRICE 与 MATCH 完全相等—— 真正的全日均价线几乎不可能恰好等于收盘价。 误当均价线用时,above_ratio实测的是「收盘价 vs 本分钟中值」,接近抛硬币,第 7 层直接失效。 因此parse_series()已改为自行重建累计均价线:有 TURNOVER/VOLUME → 累计成交额÷累计成交量(真 VWAP,首选); 只有 MATCH → 退化为累计等权均价(近似,实测个别标的above_ratio与真 VWAP 口径可差 8~17pt, 会跨越 45%/60% 判定阈值,故务必带上量额两列)。归集intraday_raw.json时请保留 TURNOVER/VOLUME。
python scripts/intraday_strength_wind.py --plan → 生成 intraday_plan.json:
自动复刻报告深度候选(prio)逻辑(在 kline 中 且 多头/低PE<20/近高<1,按 -vr 取前 10),
输出每只 Wind 代码(自动 .SH/.SZ/.BJ 转换)与基准指数 000300.SH(沪深300)。
仅对「重点候选深度卡片」所展示的 prio 票拉分时(与报告卡片严格一致);需先跑
kline_history.py --json。
mcp__wind-finance__get_stock_quote(windcode=..., begin=数据基准日, end=数据基准日),
并对基准调一次 mcp__wind-finance__get_index_quote(windcode="000300.SH", begin=..., end=...),
把每只返回的 data 对象按 intraday_plan 结构归集进 intraday_raw.json(基准存 benchmark,个股存 stocks)。python scripts/intraday_strength_wind.py --merge → 生成 intraday_strength.json
(above_ratio 均价线上方占比、excess 跑赢大盘超额收益、above_at_close、verdict 强/中/弱、partial 是否未收盘)。report_html.py 读取后自动把八层第 7 层「分时强度 👁」翻为客观结论——
「分时强度:强/中/弱(均价线上方占比 X%、跑赢大盘 +Y%)」;题材仍保留 👁。判定口径:
verdict=强需 均价线上方占比≥60% 且 跑赢大盘 且 窗口末仍在均价线上方;中为 占比≥45%且跑赢 或 占比≥60%且窗口末在线;其余为弱。所有原始数值均写入 JSON 并在卡片展示,便于人工复核/覆盖。 若当日未收盘(盘中跑),partial=true,卡片标注「盘中快照截至 HH:MM,未收盘」。
⚠️ 范围边界(硬性,同步骤 2.5):本步骤仅限本环境已连接
wind-finance时使用;未连接则intraday_raw.json不存在, 报告自动回落「分时强度 👁」人工项,不影响其他逻辑。任何版本都不得把「自动连接/引导连接 Wind」写回本技能。
读取 references/kline_patterns.md,在日 K 上对照 12 种形态(狮子张口、挖坑埋牛、
阴阳鉴攻、回眸一笑、鱼跃龙门、葵花向阳、美人长腿、旭日东升、倒锤头线、希望之星、
岛形反转、上涨分手),命中则记录;单形态必须叠加趋势与量能过滤。
第 14 层已由步骤 1 自动完成;第 58 层(量能持续性、均线多头、分时强度+题材、
14:30 创新高回踩均线买点)按 references/checklist.md 第四节人工研判。
趋势 / 均线 / 量能 / 当日 K 线形态的数据支撑:运行
scripts/kline_history.py <代码>拉取新浪日 K,自动算 MA5/10/20、多头排列、近 20 日高低、量能比、当日 K 线要素, 并初判 12 形态中可程序化者(希望之星 / 旭日东升 / 上涨分手 / 葵花向阳 / 美人长腿 / 倒锤头 / 阴阳鉴攻)。需副图(KDJ/CCI)或跳空缺口的形态仍标 👁 人工。 注:腾讯web.ifzq.gtimg.cnK 线接口在本环境返回 bad params、东方财富断连, 历史 K 线统一走新浪;客观快照仍由fetch_quote.py走腾讯qt.gtimg.cn。
references/checklist.md 第二节逐条核对 6 类不卖
(趋势强劲 / 热点题材 / 指标向好 / 量能健康 / 逻辑未变 / 未达目标),命中越多越应持有;
仅当破位、逻辑破坏、达止盈或量价背离时才离场。版式一致性要求(重要):报告输出格式已锁定为「HTML 看板」,由
scripts/report_html.py统一生成,禁止每次自由发挥改排版 / 随意切换 Markdown 或 HTML。该脚本读取同目录candidates.json与kline_data.json,固定渲染统一版式(清爽留白风): ① 顶部 KPI 概览条(候选/剔除/符合/多头排列) → ② 九不买筛查(亏损剔除块常开 + 全候选表可折叠,表格仅用横向分隔线+悬停高亮) → ③ 重点候选纵向分块深度卡片(客观指标/趋势均线/量能K线/九不买逐条/八层/综合结论,左蓝边强调;并内置「六不卖逐只研判 + 下车信号」块:用均线/量能/形态客观判定 4 项、2 项主观标 👁,给出客观命中 X/4 与明确离场条件) → ④ 六不卖规则 3×2 网格(说明 6 类不卖情形,并提示逐只研判见卡片) → ⑤ 综合结论与仓位建议。 这样无论哪次运行、哪个实例,出来的版式都完全一致。
标准产出管线(「去选股」模式,四步串起来跑):
# 1) 全 A 客观四层初筛 → candidates.json + screen_meta.json(已按量比降序)
python scripts/select_stocks.py # 默认: 当天;非交易日自动回退最近交易日
# python scripts/select_stocks.py --date 2026-08-07 # 也可指定意图日期
# 2) 自动取量比居前 15 只拉新浪日 K 并导出 kline_data.json(--top 自动读 candidates.json,无需手敲代码)
python scripts/kline_history.py --top 15 --json
# 3) 公告核查(可选·推荐;需 wind-finance 已连接):先 --plan 生成查询清单,
# 助手逐只调 mcp__wind-finance__get_company_announcements 拉公告归集进 wind_raw.json,
# 再 --merge → announcement_check.json(把 #3/#5/#6 的 👁 翻转为客观判定)
python scripts/announcements_wind.py --plan
python scripts/announcements_wind.py --merge
# 3.5) 分时强度客观化(可选·推荐;需 wind-finance 已连接):先 --plan 生成 prio 分时清单,
# 助手逐只调 get_stock_quote + 一次 get_index_quote(沪深300) 归集进 intraday_raw.json,
# 再 --merge → intraday_strength.json(把八层第7层「分时强度 👁」翻为客观结论;题材仍 👁)
python scripts/intraday_strength_wind.py --plan
python scripts/intraday_strength_wind.py --merge
# 4) 生成固定版式 HTML 看板 → 筛查报告_<数据日期>.html
python scripts/report_html.py
整条管线不写死任何日期或代码:
select_stocks.py入口自动解析日期——不加--date默认按当天,当天为周末/休市则回退到最近交易日(用新浪日K锚定真实交易日,结果写入screen_meta.json);kline_history.py取最近 45 个交易日(按日期升序动态截取),--top N自动从candidates.json取量比前 N 只——换任意交易日直接重跑即可。
报告内容覆盖:references/checklist.md 第八节模板的要素(客观指标表含阈值与结论、
96 原则逐条、K 线形态命中、2:30 八层结果、趋势研判、综合结论 + 明确风险提示与仓位建议),
只是以固定 HTML 看板承载。
前 6 步产出的是固定版式 HTML 看板报告(一次性快照)。若要反复刷新、实时看盘,用内置的
实时工作台——一个零依赖的本地 Python 服务(workbench_server.py + workbench_realtime.html),
把看板变成可交互、可一键重跑的活页面。
启动(在你的任意工作目录里执行一次即可,之后只点刷新):
# 方式一:一键启动器(自动把服务脚本同步到当前目录并拉起)
python <技能目录>/scripts/launch_workbench.py # 默认端口 8765
python <技能目录>/scripts/launch_workbench.py 9000 # 自定义端口
# 方式二:手动(先 cd 到工作目录,再启动)
python <技能目录>/scripts/workbench_server.py 8765
启动后浏览器打开 **http://127.0.0.1:8765/**(换端口改对应数字)。
数据怎么刷新(关键:无需 Agent):
分工边界(与步骤 2.5/2.6 一致):
announcement_check.json(Wind MCP 仅 Agent 可调,属硬性边界);
未跑时工作台自动回落 👁 人工项,不影响其他逻辑。想刷新它,对 Agent 说「跑 Wind 核查」即可。工作台判定逻辑(verdict / 九不买 / 仓位买卖纪律 / 六不卖)严格复用本技能的
report_html.py, 与筛查报告结论零偏差;仅呈现形态为可交互活页面。部署为本地服务(127.0.0.1), 不上公网——如需团队共享,请在本机启动后内网访问,或自行用反向代理发布(超出本技能范围)。
scripts/fetch_quote.py — 腾讯财经实时行情抓取与客观指标初筛(仅用标准库 urllib,无需安装依赖;GBK 解码,字段索引已实测)。scripts/kline_history.py — 新浪日 K 历史研判:MA5/10/20、多头排列、量能比、当日 K 线形态初判(趋势/均线/形态的数据支撑,仅标准库 urllib)。加 --json 时导出 kline_data.json 供报告生成器消费(标准管线第 2 步)。scripts/report_html.py — 生成固定版式 HTML 看板。九不买 #6 的 ST 校验由 is_st() 按名称含 "ST" 判定(含 *ST/SST),直接判「不买」,并联动剔除标签、综合结论与表头类别(历史 bug:文案写"非 ST"却从未校验,ST京蓝 000711 曾被判「观察」)。scripts/announcements_wind.py — 公告核查辅助(标准管线第 3 步,需 wind-finance MCP 已连接):--plan 读 candidates.json+screen_meta.json 生成待查清单 announcement_plan.json(每只 1 个自然语言查询 {公司名} {代码} 最近公告,四类信号由 --merge 本地扫描覆盖,无需多查询);--merge 读助手归集的 wind_raw.json(Wind 原始返回,按 code 归集 items)做关键词扫描,输出 announcement_check.json(reduction/earnings_warn/penalty/good_news/hits/checked)。内置四道防线:① 标题过滤——只保留标题含本公司名/代码的条目,丢弃跨公司/基金招募书/指数噪音;② 否定语境守卫——公告自证句("未受到处罚/未被立案/未涉及重组/股份回购"等)不误判 penalty/good_news。③ 标题类型门控——正文命中须与标题类型相符(merge 必须传 title=,否则静默退化);④ 业绩方向判定——扭亏为盈/由负转正不判预减,#6 以归母口径、扣非亏损豁免。并按类别分桶输出 hits_reduction/hits_earn/hits_penalty/hits_good 供报告取对应理由。报告据此把九不买 #3/#5/#6 的 👁 翻转为客观判定(减持→#5 剔除、监管问询/处罚→#6 剔除、回购/增持/中标/合同/重组→#3 利好兑现提示)。scripts/select_stocks.py — 全 A 客观四层初筛(「去选股」模式):东方财富 push2delay 翻页,过滤涨幅3candidates.json(标准管线第 1 步)。日期自动解析:不加 --date 默认按当天、非交易日回退最近交易日,解析结果(含是否回退标记)写入 screen_meta.json,供报告标注数据基准日。scripts/report_html.py — 固定版式 HTML 看板报告生成器(标准管线第 4 步):读取 candidates.json + kline_data.json + announcement_check.json + intraday_strength.json,统一渲染「KPI 概览 + 可折叠候选表 + 纵向分块深度卡片(含内置『六不卖逐只研判 + 下车信号』块)+ 六不卖规则网格 + 综合结论」的清爽版式。已焊进的几条渲染纪律(禁止改回):① 深度卡片「综合结论」随 verdict() 联动——不买→红色「量化九不买未通过(触发项)→ 回避」、观察→「需谨慎」、符合→「全过」,不得再硬编码"全过";② KPI「九不买剔除」标签按实际剔除类别动态生成(亏损#6/减持#5/违规/监管#6),不得写死"亏损";③ 剔除表理由用与卡片一致的触发项拼法;④ 三大正面梯队(干净多头/低估值PE<20/深跌反弹)过滤掉 verdict=不买 的标的,避免把已剔除股误列进"优先关注";⑤ 八层第 7 层「分时强度」随 intraday_strength.json 联动——连 Wind 时翻为「强/中/弱(均价线上方占比 X%、跑赢大盘 +Y%)」自动结论,题材保留 👁,未连 Wind 回落 👁。报告格式锁定于此,禁止每次改排版。scripts/intraday_strength_wind.py — 分时强度客观化(标准管线第 3.5 步,需 wind-finance MCP 已连接):--plan 读 candidates.json+kline_data.json(复刻报告 prio 深度候选逻辑)+screen_meta.json(数据基准日),生成 intraday_plan.json(每只自动转 Wind 代码 .SH/.SZ/.BJ + 基准 000300.SH 沪深300);助手逐只调 mcp__wind-finance__get_stock_quote(个股)+ 一次 get_index_quote(沪深300)归集进 intraday_raw.json(基准存 benchmark、个股存 stocks,均存 Wind 返回的 data 对象);--merge 解析分钟序列(MATCH=当时价、AVPRICE=分时均价线)算「均价线上方占比 above_ratio / 跑赢大盘超额收益 excess / 收盘是否在线 above_at_close / verdict 强·中·弱 / partial 是否未收盘」,输出 intraday_strength.json。报告据此把八层第 7 层「分时强度 👁」翻为自动结论(强:占比≥60%且跑赢且窗口末在线;中:占比≥45%且跑赢 或 占比≥60%且窗口末在线;弱:其余),题材仍 👁。未连 Wind 时 intraday_raw.json 缺失,报告回落 👁。scripts/workbench_server.py — 实时工作台后端(零依赖,仅标准库):GET / 服务 workbench_realtime.html;/api/run 一键自跑 东财初筛 + 新浪K线 + 东财分时自取 + 合并,返回 payload;/api/data 只读当前快照。判定逻辑严格复用 report_html.py(verdict/九不买/仓位纪律/六不卖零偏差)。分时强度内嵌东财 push2delay 自取(重建 VWAP),不依赖 Wind。scripts/workbench_realtime.html — 实时工作台前端:KPI 概览 + 可筛选/排序候选表 + 深度抽屉卡片(九不买逐条 / 八层 / 六不卖 / 买卖仓位纪律),点「🔄 实时重新筛查」整体自刷新。scripts/launch_workbench.py — 一键启动器:把 workbench_server.py/workbench_realtime.html 同步到当前工作目录并拉起本地服务(127.0.0.1:8765),便于反复使用。references/checklist.md — 方法论详版:核心口诀、96 原则 9 不买、2:30 八层筛选、上升趋势、9 条忠告、数据字段映射、报告模板、风险声明。references/kline_patterns.md — 12 种底部/上涨中继 K 线形态识别规则。wind-finance,未连则回落 👁),题材仍须人工(Wind 给不了"今天什么在炒"的主观判断)。qt.gtimg.cn 接口实测(2026-08),如接口调整需同步更新脚本 parse() 中的索引。wind-finance 时,助手调 mcp__wind-finance__get_company_announcements 拉公告、announcements_wind.py --merge 解析,
报告把 #3/#5/#6 的 👁 翻转为客观判定(减持→#5 剔除、监管问询/处罚→#6 剔除)。
若未连接 Wind,则回落为 👁 并给出人工路径(东财/巨潮资讯公告页)。push2delay 分钟序列自取(重建 VWAP 均价线,与 Wind 版判定口径一致),无需 Wind / 无需 Agent,点「实时重新筛查」即刷新。wind-finance 时,助手调 get_stock_quote(个股)+ get_index_quote(沪深300 基准)、intraday_strength_wind.py --merge 算「均价线上方占比 + 跑赢大盘超额收益」,报告把「分时强度 👁」翻为 强/中/弱 自动结论;题材仍 👁(主观)。workbench_server.py + workbench_realtime.html + launch_workbench.py 收编进技能 scripts/,作为一键自刷新的活页面。intraday_strength_wind.py --merge),不再依赖 Wind / Agent;初筛(select_stocks) + 日K(kline_history) 亦一并自跑。公告核查(#3/#5/#6) 仍保留 Wind/Agent 写盘或 👁 回落(硬性边界不变)。launch_workbench.py 把服务脚本同步到用户工作目录并拉起本地服务(127.0.0.1:8765),数据文件落在该目录,重启用同一命令即可。intraday_strength_wind.py 复用 Wind get_stock_quote(个股)+ get_index_quote(沪深300 基准)的分钟序列(MATCH=当时价、AVPRICE=分时均价线),把八层第 7 层「分时强度 👁」翻为 强/中/弱 自动结论(均价线上方占比 + 跑赢大盘超额收益),题材仍 👁。intraday_strength.json 并在卡片展示,便于人工复核。report_html.py 焊入渲染纪律⑤:八层第 7 层「分时强度」随 intraday_strength.json 联动(连 Wind 翻自动结论、题材保留 👁、未连回落 👁);顶部说明与 foot 同步标注「Wind 分时强度」。wind-finance;未连自动回落 👁,任何版本不写「自动/引导连接 Wind」。announcements_wind.py 把「两道防线」从人工纪律升级为代码强制:
--merge:只保留标题含本公司名/代码的条目,自动丢弃跨公司/基金招募书/指数类噪音(终端打印丢弃条数)。*_NEG),公告自证句不再误判。--plan 改为每只候选 1 个查询 {公司名} {代码} 最近公告(原"2 个查询"已废弃;四类信号由 --merge 本地扫描覆盖)。good_news 正则新增 回购|增持(回购方案/实控人增持属明确利好,#3 提示利好兑现风险)。report_html.py 焊入渲染纪律(禁止改回):① 综合结论随 verdict() 联动(不买红边"未通过→回避"、观察"需谨慎"、符合"全过"),消除"结论与判定自相矛盾";② KPI「九不买剔除」标签按实际类别动态生成(亏损#6/减持#5/违规/监管#6),不再写死"亏损";③ 剔除表理由与卡片触发项一致;④ 三大正面梯队(多头/低估值/深跌反弹)过滤掉 不买 标的,避免把已剔除股误列进"优先关注"。