- name
- a-stock-operator
- description
- A股市场操盘手技能:个股六维诊断分析+市场资讯选股推荐。Invoke when user asks for A股个股分析、股票诊断、选股推荐、市场资讯研究报告,或提及股票代码/名称+成本价。
# A股市场操盘手技能
本技能为A股市场提供两大核心能力:**个股六维诊断分析**和**市场资讯与选股推荐**。适用于短线博弈与长线价投,帮助系统性避开雷区、捕捉机会。
## 产物落点(必须遵守)
生成的 **Markdown 报告(带日期)**一律写入**当前会话/工程的工作目录根**,绝不可写进本技能安装目录(`os.path.dirname(os.path.abspath(__file__))` 所在的技能目录,或任何技能库目录)。
- 落点优先级:用户显式指定的工程目录 > 当前工作目录(会话 cwd)。可先 `os.getcwd()` 确认当前目录再落盘。
- 若当前工作目录恰好是技能安装目录,则应把报告写入其父级工程目录或用户在对话中指定的股票报告工程目录。
- 报告文件名需自描述,如 `{股票名}_个股诊断-{YYYY-MM-DD}.md` / `行情复盘-{YYYY-MM-DD}.md`。
- **报告统一为原生 Markdown 文档**(带日期),不使用 HTML 可视化;数据/过程产物(如有)放到当前会话工程下的 `a-stock-operator/` 子目录。
---
## 输出模式判断(必须先判断再执行)
**根据用户输入意图,判断输出模式,禁止无脑输出两份报告:**
| 模式 | 触发条件 | 输出内容 | 不输出 |
|:---:|:---|:---|:---|
| **模式A:仅个股诊断** | 用户提及个股名称/代码+成本价,或明确要求"诊断/分析某只股票" | 个股六维诊断报告(1份 Markdown) | 市场报告、涨停选股、板块分析 |
| **模式B:仅行情分析** | 用户要求"行情分析/市场资讯/今日涨停/选股推荐/首板/突破"等,未提及具体个股 | 市场资讯与选股报告(1份 Markdown) | 个股诊断报告 |
| **模式C:两者都要** | 用户既提及个股诊断,又要求行情/市场分析 | 个股诊断报告 + 市场报告(2份 Markdown) | 无 |
### 判断规则
1. **关键词检测**:
- 个股诊断关键词:股票代码(6位数字)、股票名称、"诊断""分析这只股""成本价""盈亏""止损""加仓"
- 行情分析关键词:"今日行情""市场资讯""涨停""首板""突破""选股""板块""龙虎榜""大盘"
2. **优先级**:如果用户输入同时包含两类关键词→模式C;仅含个股类→模式A;仅含行情类→模式B
3. **默认行为**:无法判断时询问用户需要哪种报告,而非默认输出两份
---
## 板块范围规则(选股默认排除创业板/科创板)
**默认行为:选股推荐仅覆盖主板股票,排除创业板和科创板。用户可显式覆盖此规则。**
| 配置项 | 默认值 | 用户覆盖方式 | 生效范围 |
|:---:|:---|:---|:---|
| **创业板(300/301)** | ❌ 排除 | 用户输入含"包含创业板""含创业板""加上创业板""创业板也要"等明确表述 → ✅ 包含 | 仅市场报告的选股推荐(输出二、输出三) |
| **科创板(688)** | ❌ 排除 | 用户输入含"包含科创板""含科创板""加上科创板""科创板也要"等明确表述 → ✅ 包含 | 仅市场报告的选股推荐(输出二、输出三) |
### 规则细节
1. **仅影响选股推荐**:本规则仅作用于市场报告中的「首板低位突破」和「突破放量热点」选股环节,不影响个股诊断(模式A)——用户指定诊断的个股无论是哪个板块都正常分析
2. **ST/*ST永远排除**:无论用户是否要求包含创业板/科创板,ST/*ST股票始终排除,不可覆盖
3. **判断优先级**:用户明确说"包含创业板/科创板" → 包含;用户未提及 → 排除;用户说"只要主板" → 排除(强化默认)
4. **报告标注**:报告须标注当前板块范围,如"本次选股范围:沪市主板+深市主板(默认排除创业板/科创板)"或"本次选股范围:沪市主板+深市主板+创业板(用户指定包含)"
5. **API参数联动**:
- 默认(仅主板):`fs=m:0+t:6,m:1+t:2`(深市主板+沪市A股)
- 包含创业板:追加 `m:0+t:80`
- 包含科创板:追加 `m:1+t:23`
- 包含全部:`fs=m:0+t:6,m:0+t:80,m:1+t:2,m:1+t:23`
---
## 数据源配置
### 权威网站(网页抓取)
| 数据源 | URL | 用途 |
|--------|-----|------|
| 财联社 | https://www.cls.cn | 最新电报、盘中资讯、涨停分析 |
| 东方财富网 | https://finance.eastmoney.com | 行情数据、板块涨跌、龙虎榜、财务数据 |
| 中国证监会 | https://www.csrc.gov.cn | 政策法规、IPO批复、监管动态 |
| 中国结算 | https://www.chinaclear.cn | REITs、退市登记、持仓数据 |
| 证券时报网 | https://stcn.com | 市场评论、公司公告、深度分析 |
### MCP工具(实时行情数据源——必须使用)
通过 `integrated_code_mode` MCP的Exec工具调用Shell/WebFetch/browser等子工具,直接从东方财富API获取实时数据。**生成报告前必须先通过MCP获取实时数据,禁止仅凭搜索结果编造数据。**
#### MCP调用方式
```
run_mcp → server_name: "integrated_code_mode" → tool_name: "Exec"
```
在Exec的code中通过 `await tools.Shell({command: "Invoke-RestMethod -Uri '...' "})` 调用东方财富API。
#### 核心API端点
**1. 实时行情(个股)**
```
http://push2.eastmoney.com/api/qt/stock/get?secid={市场代码}.{股票代码}&fields=f43,f44,f45,f46,f47,f48,f50,f57,f58,f60,f116,f117,f162,f167,f168,f169,f170,f171,f292&ut=fa5fd1943c7b386f172d6893dbbd1d0c
```
- 市场代码:沪市=1,深市=0(如火炬电子:secid=1.603678)
- 字段含义:f43=最新价 f44=最高 f45=最低 f46=开盘 f47=成交量(手) f48=成交额 f50=量比 f57=代码 f58=名称 f60=昨收 f116=总市值 f117=流通市值 f162=PE(动态) f167=PB f169=涨跌额 f170=涨跌幅 f171=振幅
- **注意**:价格类字段需除以100(如f43=4012表示40.12元),PE/PB也需除以100
**2. 日K线历史**
```
http://push2his.eastmoney.com/api/qt/stock/kline/get?secid={市场代码}.{股票代码}&fields1=f1,f2,f3,f4,f5,f6&fields2=f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61&klt=101&fqt=1&beg={开始日期}&end={结束日期}&ut=fa5fd1943c7b386f172d6893dbbd1d0c
```
- klt=101(日K)/102(周K)/103(月K),fqt=0(不复权)/1(前复权)/2(后复权)
- **技术分析必须使用fqt=1(前复权)**,否则除权除息日会出现虚假缺口导致均线失真;仅在查看真实成交价格时用fqt=0
- 返回klines数组,每行格式:日期,开盘,收盘,最高,最低,成交量(手),成交额,振幅%,涨跌幅%,涨跌额,换手率%
- **数据完整性验证**:返回klines.length应与请求交易日天数接近(差异>3天需排查停牌或参数错误);最后一行日期应为最近交易日
**3. 资金流向**
```
http://push2.eastmoney.com/api/qt/stock/fflow/daykline/get?secid={市场代码}.{股票代码}&fields1=f1,f2,f3,f7&fields2=f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61,f62,f63,f64,f65&lmt={天数}&klt=101&ut=fa5fd1943c7b386f172d6893dbbd1d0c
```
- 返回klines数组:日期,主力净流入,小单净流入,中单净流入,大单净流入,超大单净流入,...
- **已知问题**:lmt参数在某些股票上可能只返回1天数据(如近期有大涨大跌或停牌的股票),需验证返回天数,不足时改用K线接口辅助推算
- **资金流平衡验证**:主力净流入 + 小单净流入 + 中单净流入 ≈ 0(三者之和应接近0,差异>1%说明数据异常)
- **主力净流入验证**:主力净流入 = 超大单净流入 + 大单净流入(两者之和应等于主力净流入)
**4. 财务指标**
```
https://emweb.securities.eastmoney.com/PC_HSF10/NewFinanceAnalysis/ZYZBAjaxNew?type=0&code={SH/SZ+股票代码}
```
- 返回最近6期财务数据:每股收益(EPSJB)、每股净资产(BPS)、营收(TOTALOPERATEREVE)、净利(PARENTNETPROFIT)、毛利率(XSMLL)、ROE(ROEJQ)、资产负债率(ZCFZL)、经营现金流(MGJYXJJE)等
**5. 公司概况**
```
https://emweb.securities.eastmoney.com/PC_HSF10/CompanySurvey/PageAjax?code={SH/SZ+股票代码}
```
- 返回公司基本信息:总股本、行业分类、高管、主营业务等
**6. 大盘指数实时行情**
```
http://push2.eastmoney.com/api/qt/stock/get?secid={市场代码}.{指数代码}&fields=f43,f44,f45,f46,f47,f48,f57,f58,f60,f170&ut=fa5fd1943c7b386f172d6893dbbd1d0c
```
- 常用指数secid:`1.000001`(上证指数)、`0.399001`(深证成指)、`0.399006`(创业板指)、`1.000300`(沪深300)、`1.000688`(科创50)
- f43=最新价(需除以100,如380469=3804.69点)、f170=涨跌幅(需除以100,如-62=-0.62%)
**7. 涨停股列表(全市场涨停池)**
```
https://push2ex.eastmoney.com/getTopicZTPool?ut=7eea3edcaed734bea9cbfc24409ed989&dpt=wz.ztzt&Pageindex=0&Pagesize=500&sort=fbt:asc&date={YYYYMMDD}
```
- 返回data.pool数组:c=代码、n=名称、fund=封板资金、fbt=首次封板时间、lbt=最后封板时间、zbc=炸板次数、lbc=连板数、hybk=所属行业
- 同类端点:`getTopicZBPool`(炸板池)、`getTopicDTPool`(跌停池)、`getTopicJSPool`(强势股池)
**8. 板块涨跌排行(行业/概念板块)**
```
# 行业板块排行
https://push2.eastmoney.com/api/qt/clist/get?fid=f3&po=1&pz=50&pn=1&np=1&fltt=2&invt=2&ut=8dec03ba335b81bf4ebdf7b29ec27d15&fs=m:90+t:2&fields=f12,f14,f2,f3,f62,f184
# 概念板块排行(fs=m:90+t:3)
```
- f12=板块代码、f14=板块名称、f2=最新价、f3=涨跌幅、f62=主力净流入、f184=主力净流入占比
- 板块成分股:将fs改为`b:{板块代码}`(如`b:BK0729`)
**9. 全市场条件选股(按涨幅/成交额等排序筛选)**
```
https://push2.eastmoney.com/api/qt/clist/get?fid=f3&po=1&pz=50&pn=1&np=1&fltt=2&invt=2&ut=bd1d9ddb04089700cf9c27f6f7426281&fs=m:0+t:6,m:0+t:80,m:1+t:2,m:1+t:23&fields=f12,f14,f2,f3,f4,f5,f6,f7,f8,f15,f16,f17,f18,f20,f21,f23,f100,f115
```
- fs市场范围:`m:0+t:6`=深市主板、`m:0+t:80`=创业板、`m:1+t:2`=沪市A股、`m:1+t:23`=科创板
- fid排序字段:f3=涨跌幅、f6=成交额、f7=振幅、f8=换手率
- fields关键字段:f12=代码、f14=名称、f2=最新价、f3=涨跌幅、f6=成交额、f8=换手率、f15=最高、f16=最低、f17=今开、f18=昨收、f20=总市值、f21=流通市值、f23=市净率、f100=所属板块、f115=PE
- **注意**:东方财富原生clist不支持复合数值条件(如"涨幅5%-7%"),需取回数据后在代码中二次过滤
**10. 主力资金流向排行**
```
https://push2.eastmoney.com/api/qt/clist/get?fid=f62&po=1&pz=50&pn=1&np=1&fltt=2&invt=2&ut=b2884a393a59ad64002292a3e90d46a5&fs=m:0+t:6,m:0+t:80,m:1+t:2,m:1+t:23&fields=f12,f14,f2,f3,f62,f184,f66,f72,f78,f84,f172,f204,f205
```
- f62=今日主力净流入、f184=净流入占比、f66=超大单净流入、f72=大单净流入、f78=中单净流入、f84=小单净流入、f172=5日主力净流入、f204/f205=5日主力净流入/占比
**11. 龙虎榜数据**
```
# 每日龙虎榜上榜股票明细
https://datacenter-web.eastmoney.com/api/data/v1/get?reportName=RPT_DAILYBILLBOARD_DETAILS&columns=ALL&filter=(TRADE_DATE%3E%3D%27{开始日期}%27)(TRADE_DATE%3C%3D%27{结束日期}%27)&pageNumber=1&pageSize=50&sortTypes=-1&sortColumns=TRADE_DATE&source=WEB&client=WEB
# 个股买卖席位明细
https://datacenter-web.eastmoney.com/api/data/v1/get?reportName=RPT_BILLBOARD_DAILYDETAILSBUY&columns=ALL&filter=(TRADE_DATE%3D%27{日期}%27)(SECURITY_CODE%3D%27{代码}%27)&pageNumber=1&pageSize=50&source=WEB&client=WEB
```
- **注意**:URL中日期filter的单引号和比较符需URL编码(`%27`=单引号、`%3E%3D`=≥、`%3C%3D`=≤、`%3D`==)
- 返回字段:SECURITY_CODE、SECURITY_NAME_ABBR、TRADE_DATE、CLOSE_PRICE、CHANGE_RATE、NET_BUY_AMT、BUY_TIMES等
**12. 分时数据(分钟级K线)**
```
# 当日分时图
https://push2his.eastmoney.com/api/qt/stock/trends2/get?fields1=f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13&fields2=f51,f52,f53,f54,f55,f56,f57,f58&ndays=1&iscr=0&secid={secid}&ut=7eea3edcaed734bea9cbfc24409ed989
# 分钟级K线(klt=1/5/15/30/60)
https://push2his.eastmoney.com/api/qt/stock/kline/get?secid={secid}&klt={klt}&fqt=0&beg=0&end=20500101&fields2=f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61&lmt=1000&ut=fa5fd1943c7b386f172d6893dbbd1d0c
```
- klt参数:1=1分钟、5=5分钟、15=15分钟、30=30分钟、60=60分钟、101=日线、102=周线、103=月线
- 分时图fields2:f51=时间、f52=开盘、f53=现价、f54=最高、f55=最低、f56=成交量(手)、f57=成交额、f58=均价(VWAP)
#### ut token速查表(不同场景用不同固定值)
| 场景 | ut值 |
|------|------|
| 选股/行情列表 | `bd1d9ddb04089700cf9c27f6f7426281` |
| 资金流向 | `b2884a393a59ad64002292a3e90d46a5` |
| 个股详情/K线 | `fa5fd1943c7b386f172d6893dbbd1d0c` |
| 涨停池/分时 | `7eea3edcaed734bea9cbfc24409ed989` |
| 板块资金流 | `8dec03ba335b81bf4ebdf7b29ec27d15` |
#### MCP完整调用代码模板(含数据验证)
```javascript
// 在integrated_code_mode的Exec中执行
// 1. 并行获取个股全量数据
const secid = '1.603678'; // 沪市=1, 深市=0
const results = await Promise.all([
// 实时行情
tools.Shell({ command: "(Invoke-RestMethod -Uri 'http://push2.eastmoney.com/api/qt/stock/get?secid=" + secid + "&fields=f43,f44,f45,f46,f47,f48,f50,f57,f58,f60,f116,f117,f162,f167,f168,f169,f170,f171,f292&ut=fa5fd1943c7b386f172d6893dbbd1d0c') | ConvertTo-Json -Depth 5 -Compress" }),
// 日K线(近60日,前复权fqt=1)
tools.Shell({ command: "(Invoke-RestMethod -Uri 'http://push2his.eastmoney.com/api/qt/stock/kline/get?secid=" + secid + "&fields1=f1,f2,f3,f4,f5,f6&fields2=f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61&klt=101&fqt=1&beg=20260601&end=20260730&ut=fa5fd1943c7b386f172d6893dbbd1d0c') | ConvertTo-Json -Depth 5 -Compress" }),
// 资金流向(近5日)
tools.Shell({ command: "(Invoke-RestMethod -Uri 'http://push2.eastmoney.com/api/qt/stock/fflow/daykline/get?secid=" + secid + "&fields1=f1,f2,f3,f7&fields2=f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61,f62,f63,f64,f65&lmt=5&klt=101&ut=fa5fd1943c7b386f172d6893dbbd1d0c') | ConvertTo-Json -Depth 5 -Compress" }),
// 财务指标
Voir sur GitHub