我用 AI Agent 调问财的 Skill 做新高选股,自动化已经跑了五个月。
如果你还在每天手动选股,或者手动去做动量发现的查询,这篇可以看一下。
去年 12 月我写过一篇《借助 AI,如何快速锁定 A 股/美股热门板块和龙头?》,讲的是手动版:在问财网页上筛出当下有势能的票、下载 Excel,再连同消息面语料一起喂给 AI,让它做板块和龙头的挖掘。
那套流程今天依然成立,这篇是它的续集——把那个每天要手动做一遍的动作交给 Agent 自动跑,以及我为什么最后只把一半主动权交出去。
单条件的自然语言选股,早就能跑通。真正卡住的是市场风格切换。
没有一条固定的问句,能适应每天的行情。
主动权只能交一半:问句模板先跑通,什么时候调用由 Agent 定。
1 · 它现在跑成什么样,又卡在哪
先说它已经跑通的部分。这一层其实不难,难的在后面。
它不是每天重新查一次,是一个连续观测的产物
单条件的选股,整合到 Agent 的日常工作流里,其实已经非常顺畅了。如果只是查新高策略,每天都能丝滑地跑成功。
关键在于前一天的报告,又是后一天报告的输入。
之前的报告 ──┐
├──→ 今天的输入 ──→ 今天的报告 ──→ 明天的输入
今天的池 ──┘
所以跑出来的A股美股热门观察的直接产物不但可以直接阅读,这里有个数据复用的好处、跑满一两周之后,这条链上真正在积累的东西不是某一天的名单,是同一批标的连续出现在第几天、掉出去过没有、掉出去几天又回来。
📌 单条件 + 固定工作流 = 已经能稳定运行。这一层不是难点。
七月那波下跌到八月这波反弹,一条问句不够用了
七月之前跑得很好,每天的趋势非常连贯。但七月那波下跌到八月这波反弹,我要找反弹里比较强势的票,光靠趋势策略就不好找了。
| 七月之前 | 七月下跌 → 八月反弹 | |
|---|---|---|
| 市场在奖励什么 | 趋势延续 | 从低位修复 |
| 新高池够不够用 | 够,每天都很连贯 | 不够,反弹里最强的票根本不在新高池里 |
| 只跑趋势条件的结果 | 正常 | 看着像在观测市场,其实只看到了一部分 |
⚠️ 我以为自己在观测市场,其实我可能只看到了一部分,不是全貌。
同一个目标——发现走趋势、特别是走新高的机会——每天出来的样本是不一定的。一轮查询搞不定所有返回,只能靠多个查询交叉。
所以后来我就不把它只当一个自动选股的流程了。我还把它当成一个告诉我全市场正在发生什么、以及做涨跌归因的东西。
2 · 弯路:把选股主动权整个交给 Agent,返回的东西是错的
既然一条固定问句不够用,那把问句本身交给 Agent 每天自己组,不就行了?我真这么试过。
❌ 开发过程中尝试的做法 我的目标 ──→ Agent 每天自己组问句 ──→ 问财 ──→ 拿回来的东西不对
⚠️ 返回字段随问句变化,而且我们没有在控制它。
同一类查询,有时候回 11 列紧凑型,有时候回 21 列全量型。问句改一个词,列名、日期戳、甚至字段锚定的是哪个交易日,都可能跟着变——而且不报错。
Agent 每天现编问句,等于每天在换一个你没测过的数据接口。
3 · 摸底:先把问财的能力边界一条条测出来
既然不能让它现编,那就得先搞清楚这个接口到底能干什么、不能干什么。
它比我想的强:六条实测结论
8/14 收盘数据实测:
| 能力 | 结果 | 证据 |
|---|---|---|
| 历史任意日回补横截面 | ✅ 完整 | 8/12 涨幅池 85 只,23 列全部锚定 [20260812],含行业和概念 |
| 历史日期对新高条件真的生效 | ✅ | 8/10 = 79 只、8/14 = 46 只、不写日期 = 46 只。三者不同,说明日期真的进去了 |
| 历史涨停池 | ✅ 最强 | 8/12 涨停 96 只,带涨停原因、几天几板、封成比、首次和最终涨停时间 |
| 跨日统计条件 | ✅ 意外之喜 | 近 20 个交易日创 60 日新高次数大于 5 次 → 22 只;连续 3 日创 60 日新高 → 35 只 |
| 一句话拿多个区间 | ✅ | 同时返回 区间涨跌幅[20260720-20260814] 和 [20260810-20260814] |
| 单概念广度回补 | ✅ | 上涨家数、下跌家数、涨停家数全部锚定 [20260812] |
新高阶梯是单调的,说明条件是层层生效的
N20 = 235 N60 = 36 1 年新高 = 11 历史新高 = 3
📌 这条阶梯本身就是一次验收。它如果不单调,就说明某一档的条件没进去。
四个坑,第一个会静默给你错数据
| 坑 | 症状 | 修法 |
|---|---|---|
| 日期锚点 ⚠️ | 条件里没有一个带日期的数值指标时,显示字段会悄悄回落到最新交易日。实测查 8/10 的新高,流通市值[20260810] 是对的,成交额[20260814] 错了四天,不报错 |
历史查询一律加一个 涨跌幅大于0(或小于 0)。加完全部字段都回到 [20260810],还多送一列 最高价创新高(条件说明)[20260810]——这是行级的条件生效证明 |
| 分页空页 | 某一页偶发空数据,抓取器当成”已经抓完”,少抓了还标记全量成功 | 空页等一秒重试一次,第二次仍空才结束。同时核对 rows == code_count |
所属概念 是脏标签 |
一只票能返回三十个概念,里面混着”融资融券””深股通”和行业名 | 不能直接当板块标签用,必须自己建白名单 |
| 返回 schema 不稳定 | 同类查询有时 11 列紧凑型、有时 21 列全量型 | 下游一律用列名模糊匹配,不要硬编码日期戳 |
🔑 status = OK 只证明请求完成,不证明条件生效,更不证明字段锚在你要的那一天。
4 · 解法:模板库 + Agent 择跑
边界摸清楚之后,分工就清楚了:能力由我定死,选择权交给它。
先把分工重新划一遍
✅ 现在的做法
我的目标 ──→ 我在问财界面逐条跑通 ──→ 模板库(只装跑通的)
│
▼
Agent 只做三件事:
选跑哪几条
填日期和概念名槽位
在给定档位里选一档
│
▼
交集 / 差集 / 跨日 / 广度 ──→ 全部放本地算
不得构造或改写问句里任何一个条件词与字段词。
A 股动量发现模板库(实测可跑通)
统一字段包,个股池必须原样带上,缺一列下游即失效:
显示成交额、换手率、量比、所属同花顺行业、所属概念
{DATE} 写成 2026年8月14日 这种中文日期,放在问句最前面。
| 用途 | 问句 | 条件生效证明列 |
|---|---|---|
| 涨幅池(基座) | {DATE}A股非ST,涨幅大于5%,流通市值大于50亿,{字段包} |
涨跌幅[日期] |
| 涨停归因池 | {DATE}A股涨停,显示涨停原因、连续涨停天数、几天几板、封成比、所属同花顺行业、所属概念 |
涨停原因[日期] |
| 新高 20 日 | {DATE}A股非ST,流通市值大于50亿,股价创20日新高,涨跌幅大于0,{字段包} |
最高价创新高(条件说明) |
| 新高 60 日 | {DATE}A股非ST,流通市值大于50亿,股价创60日新高,涨跌幅大于0,{字段包} |
最高价创新高(条件说明) |
| 新高 1 年 | {DATE}A股非ST,流通市值大于50亿,股价创1年新高,涨跌幅大于0,{字段包} |
创新高列 |
| 两周窗口新高 | {DATE}A股非ST,流通市值大于50亿,近2周股价创60日新高,涨跌幅大于0,{字段包} |
区间最高价列 |
| 跌幅池 | {DATE}A股非ST,跌幅大于5%,流通市值大于50亿,{字段包} |
涨跌幅[日期] |
| 20 日强势 | {DATE}A股非ST,流通市值大于50亿,近20日涨幅大于20%,涨跌幅大于0,{字段包} |
区间涨跌幅[起-止] |
| 20 日弱势 | {DATE}A股非ST,流通市值大于50亿,近20日跌幅大于15%,涨跌幅小于0,{字段包} |
区间涨跌幅[起-止] |
| 深回撤 + 当日涨(修复) | {DATE}A股非ST,流通市值大于50亿,当前股价距60日最高价跌幅大于20%,涨幅大于5%,{字段包} |
回撤比例列 |
| 深回撤 + 当日跌(退潮) | {DATE}A股非ST,流通市值大于100亿,当前股价距60日最高价跌幅大于20%,涨跌幅小于0,{字段包} |
回撤比例列 |
| 概念涨幅榜 | {DATE}同花顺概念指数涨跌幅排名前20,显示指数简称、涨跌幅、涨停家数、成交额 |
涨停家数[日期] |
| 概念跌幅榜 | {DATE}同花顺概念指数涨跌幅排名后20,显示指数简称、涨跌幅、涨停家数、成交额 |
涨停家数[日期] |
| 单概念广度 | {DATE}{概念名}概念上涨家数、下跌家数、涨停家数、涨跌幅、成交额 |
三个家数列齐 |
| 定向概念池 | {DATE}{概念名},A股非ST,流通市值大于50亿,涨幅大于3%,{字段包} |
涨跌幅[日期] |
⚠️ {概念名} 必须是同花顺标准概念名,来源只有两个:概念涨幅榜返回的 指数简称,或已抓池 所属概念 字段的取值。自己起名一定查不到。
⚠️ 单概念广度必须在概念名后面加”概念”两个字。少这两个字,同一个问句从回 9 列变成回 3 列。
美股动量发现模板(实测可跑通)
美股必须单独验证。可用字段、默认返回列、语义边界都和 A 股不一样。
| 用途 | 问句 |
|---|---|
| 异动池 | 美股 今日涨幅大于10%,市值大于30亿美元 |
| 新高池 | 美股 市值大于30亿美元,近2周股价创60日新高,近1月创1年新高,近5个交易日上涨大于3% |
| 跌幅池 | 美股 今日跌幅大于10%,市值大于30亿美元 |
字段契约上和 A 股的三处差异:
| A 股 | 美股 | |
|---|---|---|
| 主行业字段 | 所属同花顺行业 |
三级行业分类 |
| 概念字段 | 所属概念,稳定 |
所属概念 只能当可选列,某次返回不代表每次都有 |
| 量比 | 可用 | 不要照抄 |
⚠️ 美股行业涨幅榜已证伪。查”美股行业涨跌幅排名前 20″返回 status OK 和 20 行,实际是 A 股同花顺行业指数。行业广度只能在已抓的个股池里,用实际返回的 三级行业分类 本地计数,而且产物只能叫”异动行业广度”,不能冒充全市场行业涨幅榜。
Agent 靠什么决定今天调哪几条
选择权是交给它了,但它只能在我这边跑通的字段里选。
| 市场在演什么 | 调哪一类池 | 判断依据 |
|---|---|---|
| 趋势延续 | 新高池(20 日 / 60 日 / 1 年三档)+ 20 日强势池 | 新高家数占比稳定或抬升 |
| 启动 | 当日涨幅池 + 两周窗口新高池 | 新高档深变浅、涨幅池扩张 |
| 修复 / 反弹 | 深回撤 + 当日大涨池 | 新高池缩量,但涨幅池不缩 |
| 事件脉冲 | 涨停归因池 + 定向概念池 | 单一概念集中出现在涨幅池里 |
| 退潮 | 深回撤 + 当日下跌池 + 20 日弱势池 | 前期强势票开始成批掉出新高池 |
📌 Agent 不判断哪只票好,只判断今天该往哪个方向捞。
5 · 这条链最后产出的到底是什么
跑了五个月我才想明白,它交付的其实不是一份名单。
它跑出来的东西有四层,最后一层才是重点
池子的进出 → 市场在奖励什么 涨停原因 / 概念聚类 → 涨跌的归因 对基本面 / 消息面 → 这个归因立不立得住 隔天回读 → 剧本变没变
🔑 所以它回答的不是我该买什么,是我旁边正在发生什么。
同一批标的连续出现在第几天、掉出去过没有、掉出去几天又回来——这条时间序列比任何一天的名单都重要。名单是结果,序列才是市场结构。
这条链现在是闭合的
市场环境
→ 动量发现
→ 归因与映射
→ 个人阅读报告
→ 下一交易日继续回读
| 这一轮做了什么 | 变成了什么 |
|---|---|
| A 股从单一新高入口升级 | Market Regime 驱动的六类动量剧本 |
| 美股加上三条观察线 | 异动、新高、启动 + A 股映射 |
| 新增两份阅读报告 SOP | A 股、美股各一份,上游产物变成能读的报告 |
| 上下游接上归因追踪清单 | 跨日连续剧,不是每天从零开始 |
| 修掉分页空页提前结束 | 少抓不再被当成抓完 |
(现在在我的知识星球同步的YMOS 日常产物就已经是最新版本的产出了;)
判断一个自动化选股链路能不能信
🧭 它是不是连续的?昨天的产物是不是今天的输入? 🧭 它换风格的时候,捞的方向会不会跟着换? 🧭 每一条问句,我能不能指出它的条件生效证明列? 🧭 返回 0 行的时候,我分得清是"市场上没有"还是"我问错了"吗?
6 · 你可以怎么把它抄走
上面这套跟我具体选什么股关系不大。换成均线、MACD、股息、财务质量,流程是一样的。
三步方法
第一步 · 在问财界面手动跑通 打开 AI 选股的输入框,把你确定要的那个问句手动跑一次。 A 股和美股分别跑,不要拿 A 股跑通就推定美股也支持。 第二步 · 让问财自带的 AI 帮你测字段 有多个字段要确认时,用它的新对话。 它比你的 Agent 更清楚哪些字段能用。 第三步 · 存成模板,再把选择权交出去 把跑通的问句和返回字段一起存成模板, 跟 Agent 讲清楚什么情况调什么模板。 它的自由度只有三项:选哪几条、填槽位、在档位里选一档。

第一步的手感,跟手动版那篇里在问财网页上调筛选条件是一模一样的。区别只在于:那时候筛完是下载成 Excel,现在筛通了是存成模板——多存一份返回字段的契约,这条问句才算真的进了生产。
上手清单
✅ 装问财的条件选股 skill(A 股 / 美股分开装) ✅ 配好自己的 Key,不写进任何 Markdown、命令参数、聊天和截图 ✅ 第一轮只拉 10 条,先看返回长什么样,不要一上来跑全池 ✅ 每条查询保存 query、JSON / CSV、status ✅ 检查六项:市场、语义、字段、日期、完整性、正反样本 ✅ 跑通的才进模板库,没跑通的写进禁用表,不留在逻辑里 ✅ 复杂的交集、差集、跨日、广度,全部放本地算 ✅ 新链路用独立目录,手动并行跑通两次,再考虑定时任务
想自己搭一套,从这里开始
如果你想参考单次调用的流程,或者想照着这套模板库整理出你自己的那一份,GitHub 上这几份 SOP 都开源了:
| 文件 | 做什么 |
|---|---|
Eyes/SOP_Whats_Hot.md |
A 股条件扫描、动量剧本、归因和板块广度 |
Eyes/SOP_美股热门追踪.md |
美股异动 / 新高 / 启动三条观察线与 A 股映射 |
Eyes/SOP_A股热门观察.md |
把 A 股上游结果转成阅读友好的市场报告 |
Eyes/SOP_美股热门观察.md |
把美股上游结果转成阅读友好的市场报告 |
你不跑我整个 YMOS 工作区,单独把它拎出来也能用。唯一的前置就是装一个问财的 Skill——在同花顺问财 SkillHub 装 A 股条件选股 hithink-astock-selector 和 / 或美股条件选股 hithink-usstock-selector,然后配好自己的 Key。
📦 GitHub 开源地址:github.com/Evan-XYZ/YMOS
如果你还没到要自动化这一步,建议先从手动版那篇开始——先把问财筛选 + 消息面语料 + AI 解读这条链用手跑顺,知道自己每天到底要什么样的池子,再来谈把它交给 Agent。顺序反了,自动化出来的只是一堆你看不懂也不敢用的报告。
🔑 选股结果不等于买点。这一层只交付研究候选。
我自己也是这么用的。动量选股对我来说只干一件事:告诉我市场正在发生什么,以及哪些票值得我后面重点关注和调研。
动量发现只是触发一个调研任务,它不是买点。
什么证据允许买入、仓位多少、何时认错,仍然属于你自己的策略和决策层。
本文只讨论工作流与公开市场信息,不构成投资建议。

如果你也在用 AI 解决投资里的具体问题——欢迎加入我的知识星球。这里是短视频和公众号之外的第一现场;让有经验的投资者把自己的投资结构化,在能力圈里少犯错、走得更久。