Cron Job: 早期信号监控-午

Job ID: 9666cc9671ae Run Time: 2026-07-24 13:46:12 Schedule: 30 13 * * *

Prompt

[IMPORTANT: The user has invoked the "mx-data" skill, indicating they want you to follow its instructions. The full skill content is loaded below.]


name: mx-data display_name: 妙想金融数据 (MXSKILLS) title: 妙想金融数据 skill description: 基于东方财富权威数据库的金融数据查询工具,支持行情、财务及关联关系数据。 homepage: https://dl.dfcfs.com/m/itc4 author: 东方财富妙想团队 version: 1.0.0 env: - MX_APIKEY: "通过东方财富妙想Skills页面获取的 API Key"


mx-data 妙想金融数据 skill

本 Skill 基于东方财富权威数据库最新行情底层数据构建,支持通过自然语言查询以下三类数据:

  1. 行情类数据
    股票、行业、板块、指数、基金、债券的实时行情、主力资金流向、估值等数据。
  2. 财务类数据
    上市公司与非上市公司的基本信息、财务指标、高管信息、主营业务、股东结构、融资情况等数据。
  3. 关系与经营类数据
    股票、非上市公司、股东及高管之间的关联关系数据,以及企业经营相关数据。

采用此skill可避免模型基于自身过时知识回答金融相关数据问题,可为大模型提供权威及时的金融数据。

配置

使用方式(直接 Python 脚本调用)

  1. 在妙想Skills页面获取apikey。(链接:https://dl.dfcfs.com/m/itc4)
  2. 将apikey存到环境变量,命名为MX_APIKEY: bash export MX_APIKEY=your_apikey_here
  3. 直接运行 Python 脚本查询,支持自然语言问句:

```bash

==================== 常用调用示例 ====================

1. 个股实时行情查询

python ./mx_data.py "东方财富最新价" python ./mx_data.py "贵州茅台今日收盘价 涨跌幅" python ./mx_data.py "宁德时代主力资金流向"

2. 历史行情数据查询

python ./mx_data.py "贵州茅台近五年年报收盘价" python ./mx_data.py "比亚迪近一年每个交易日的开盘价收盘价成交量"

3. 财务数据查询

python ./mx_data.py "贵州茅台近三年净利润 营业收入" python ./mx_data.py "东方财富每股收益 净资产收益率 近五年" python ./mx_data.py "万科A资产负债率 毛利率 近三年"

4. 上市公司基本信息

python ./mx_data.py "比亚迪公司简介 主营业务 成立时间" python ./mx_data.py "贵州茅台董事长是谁 总股本多少"

5. 股东信息

python ./mx_data.py "贵州茅台十大股东" python ./mx_data.py "比亚迪机构持股比例"

6. 板块/指数行情

python ./mx_data.py "沪深300指数最新点位 涨跌幅" python ./mx_data.py "新能源板块成分股平均涨跌幅"

7. 指定输出目录(可选)

python ./mx_data.py "贵州茅台近五年年报" /path/to/output ```

⚠️ 安全注意事项

数据限制说明

请谨慎查询大数据范围的数据,如某只股票3年的每日最新价,可能会导致返回内容过多,模型上下文爆炸问题。

年份范围查询缺陷(重要)

查询"2022年 2023年 2024年 2025年"或"近四年"等多年范围时,API 经常漏掉最早年份(只返回2023-2025,不返回2022)。这是已知行为,不是查询写法问题。

正确做法:先查3年范围(如2023-2025),再单独补查最早年份(2022年报),两者合并。实战中ROE/毛利率/净利率/归母净利润/OCF 全部触发此问题,无一例外。

A股 vs IAS 数据双轨返回

财务数据查询(OCF、利润表等)通常返回同一标的的两个数据表:一个按大陆会计准则(A股),一个按国际会计准则(IAS/H股)。两者数值不同(例如FY2022 OCF:A股96.49亿 vs IAS 91.39亿)。做A股分析时取A股口径。

数据源双轨策略

问财 ↔ 妙想(mx-data)换着用,无固定优先级。 一只标的先试一个,失败换另一个,两个都失败才用腾讯行情兜底。不限A股/港股——两边都支持A+H,哪边先响应用哪个。腾讯行情仅兜底(免费无限但字段少、港股PE常为0)。

降级链:mx-data/问财任一试→另一试→腾讯行情。

②业务纯度查询降级(2026-07-23 药明康德验证)

mx-data 113 休眠时,问财 CLI 直接支持业务分部查询,无需 mx-data:

bash cd ~/.iwencai-skillhub/skills/财务数据查询/hithink-finance-query/scripts python3 cli.py -q "{标的名称} {YYYY}年报 按产品 收入构成"

返回字段:业务收入[YYYYMMDD]收入占比[YYYYMMDD]毛利率[YYYYMMDD]业务利润[YYYYMMDD]项目名称分类标准

⚠️ "终止经营业务"必须剔除:返回行可能含 项目名称: 终止经营业务(如药明康德 FY2025 剥离 WuXi XDC 占营收 4.48%、毛利率仅 20.6%)。计算②业务纯度的分母必须剔除终止经营,只看持续经营业务。药明案例:含终止经营时化学业务 80.2%;剔除后持续经营口径化学业务 = 80.22/(80.22+8.89+5.89) = 84.4%。

腾讯K线API字段顺序(③估值水位用,2026-07-23 实测)

https://proxy.finance.qq.com/ifzqgtimg/appstock/app/fqkline/get?param=sh603259,day,2023-07-23,2026-07-23,800,qfq

返回 data[code]['qfqday'](或 day),每行字段顺序为 [date, open, close, high, low, volume](0-indexed:0=date, 1=open, 2=close, 3=high, 4=low, 5=vol)。

⚠️ 常见解析错误:误把 index 2 当 open、3 当 close、4 当 high、5 当 low → 会算出"3Y低点 84860"(实际是成交量)之类的荒谬值。正确取法:

python rows = [(r[0], float(r[1]), float(r[2]), float(r[3]), float(r[4])) for r in k] # date,open,close,high,low lows = [r[4] for r in rows] # low closes = [r[2] for r in rows] # close

合理性自检:3Y低点应远小于现价(药明 33.10 vs 现价 127.45 合理);若"低点">1000 或 >现价,几乎肯定是字段顺序错位。

⛔ 日限枯竭时的降级铁律(2026-07-17 加固)

status 113status 114 触发时,第一降级必须是问财 CLI

降级链:问财 CLI → 东财 datacenter API → web_search → 腾讯行情

东财 datacenter API(2026-07-23 新增,三线全挂时的终极降级):问财 401 也挂时,直接 curl 东财 datacenter API 拉季度财务(RPT_LICO_FN_CPD,含营收/归母/同比/ROE/毛利率)和主营构成(RPT_F10_FN_MAINOP,含产品/行业/地区三口径占比)。免费、无配额、无需 key,且自带同比列(问财常漏同比)。完整 curl 模板、字段表和陷阱(排序列必须 NOTICE_DATE、期间标识用 QDATEMAINOP_TYPE 口径过滤)见 references/eastmoney-datacenter-api.md。三一重工 600031 重评实战验证(mx-data 113 + 问财 401 + web_search 空返回全挂时用此完成全部分析)。

```bash

问财 CLI(首选降级,100次/天)

cd ~/.iwencai-skillhub/skills/财务数据查询/hithink-finance-query/scripts python3 cli.py -q "标的名 代码 加权ROE 毛利率 净利率 经营现金流 2021 2022 2023 2024 2025" ```

禁止行为

问财失败后的二级降级

问财也失败 → web_search 搜财务摘要 → 腾讯行情兜底实时价。

脚本执行后会: 1. 在终端输出查询结果预览(前20行) 2. 自动创建输出目录 /root/.openclaw/workspace/mx_data/output/ 3. 保存完整数据到 Excel 文件(多 sheet) 4. 保存原始 JSON 响应供二次处理 5. 保存描述文件记录查询条件和结果统计

异常情形与处理方式

异常情形 可能原因 处理方式
connect: Connection refused 网络无法访问 mkapi2.dfcfs.com 检查服务器网络配置,确保能访问公网
401 Unauthorized / code=114 / API密钥不存在 API Key 错误或已失效 前往妙想Skills页面重新获取 API Key 并更新环境变量
code=113 / 今日调用次数已达上限 当日调用次数超限,或账户休眠 前往东方财富APP搜索"妙想skill"进行激活。休眠状态每日限额仅10次(激活后恢复至50-150次/天)。激活后立即生效,无需重启或重配API Key。
code=112 / 请求频率过高 连续请求间隔过短,触发频率限制 串行调用必须间隔≥3秒。遇到112后sleep 10-15秒再重试(5秒实测不够,仍会复现112)。批量查询时每个请求之间sleep 3-5秒。112与113(日限)不同——112是瞬时限流,等待足够长时间后即可恢复。多年份查询拆成单年逐次查,间隔充分,比一次大查询更稳。
数据结果为空 / No dataTable found 查询条件太严格或查询内容不支持 放宽查询条件,或确认查询内容是否正确
返回数据行数过多 / 输出过大 查询范围过大(如多年每日数据) 缩小查询时间范围,减少返回数据量
JSON解析错误 网络中断或返回内容不完整 检查网络后重试

返回结果字段释义

一级核心路径:data

字段路径 类型 核心释义
data.questionId 字符串 查数请求唯一标识 ID,关联单次查询任务
data.dataTableDTOList 数组 【核心】标准化后的证券指标数据列表,每个元素对应1 个证券 + 1 个指标的完整数据
data.rawDataTableDTOList 数组 原始未加工的证券指标数据列表,与标准化列表结构完全一致,供原始数据调用
data.condition 对象 本次查数的查询条件,记录查询关键词、时间范围等
data.entityTagDTOList 数组 本次查询关联的证券主体汇总信息,去重后展示所有涉事证券的基础属性

二级核心路径:data.dataTableDTOList[](单指标对象,表格核心)

数组内每个对象为独立的指标数据单元,包含证券信息 + 表格数据 + 指标元信息 + 证券标签四大部分,是表格渲染的核心载体,表格逻辑为:table/rawTable单元格数据nameMap列名映射indicatorOrder指标列排序

2.1 证券基础信息

字段路径 类型 核心释义
dataTableDTOList[].code 字符串 证券完整代码(含市场标识,如 300059.SZ)
dataTableDTOList[].entityName 字符串 证券全称(含代码,如东方财富 (300059.SZ))
dataTableDTOList[].title 字符串 本指标数据的标题,概括查询结果(如东方财富最新价)

2.2 表格数据核心(渲染用)

字段路径 类型 核心释义 表格逻辑
dataTableDTOList[].table 对象 【核心】标准化表格数据,键 = 指标编码,值 = 指标数值数组headName为时间 / 维度列值 键为指标列headName时间列,值为交叉单元格的指标数值
dataTableDTOList[].rawTable 对象 原始表格数据,与table结构一致,未做数据标准化处理 table,为原始数值,无格式 / 单位修正
dataTableDTOList[].nameMap 对象 【核心】列名映射关系,将指标编码 / 内置字段转为业务中文名(如 f2→最新价) 解决表格列名 "编码转中文" 的问题,headNameSub为时间列的固定名称
dataTableDTOList[].indicatorOrder 数组 指标列的展示排序,元素为指标编码(如 [f2]) 控制表格中多个指标列的前后顺序,单指标时为单元素数组

2.3 指标元信息(属性 / 规则)

字段路径 类型 核心释义
dataTableDTOList[].dataType 字符串 数据来源类型(如行情数据 / 数据浏览器)
dataTableDTOList[].dataTypeEnum 字符串 数据类型枚举值(HQ = 行情,DATA_BROWSER = 数据浏览器),供系统判断
dataTableDTOList[].dataTableType 字符串 表格类型(NORM_TABLE = 标准表格),固定值
dataTableDTOList[].field 对象 【核心】当前指标的详细元信息,含指标编码、名称、查询时间、粒度等
dataTableDTOList[].fieldSet 数组 指标元信息集合,与field内容一致,为兼容多指标设计,单指标时为单元素数组

2.4 证券标签信息(主体属性)

字段路径 类型 核心释义
dataTableDTOList[].entityTagDTO 对象 本指标关联证券的详细主体属性(如证券类型、市场、简称等)
dataTableDTOList[].entityTagDTOList 数组 证券主体属性集合,与entityTagDTO一致,兼容多证券设计

三级核心路径:field/entityTagDTO(元信息子字段)

3.1 指标元信息:dataTableDTOList[].field

字段路径 类型 核心释义
field.returnCode 字符串 指标唯一编码(如 ZXJ_f2_3/100000000017975)
field.returnName 字符串 指标业务中文名(如最新价 / 收盘价)
field.returnSourceCode 字符串 指标原始来源编码(如 f2/CLOSE),对接底层数据源
field.returnSourceName 字符串 指标原始来源名称,与returnName一致
field.startDate/endDate 字符串 本次查询的时间范围(开始 / 结束)
field.dateGranularity 字符串 数据粒度(DAY = 日度,MIN = 分钟等)
field.classCode 字符串 指标分类编码,用于指标归类

3.2 证券主体属性:dataTableDTOList[].entityTagDTO

字段路径 类型 核心释义
entityTagDTO.secuCode 字符串 证券纯代码(无市场标识,如 300059)
entityTagDTO.marketChar 字符串 市场标识(.SZ = 深交所,.SH = 上交所)
entityTagDTO.entityTypeName 字符串 证券类型(如 A 股 / 港股 / 债券)
entityTagDTO.fullName 字符串 证券完整中文名(如东方财富)
entityTagDTO.entityId 字符串 证券在系统内的唯一主体 ID
entityTagDTO.className 字符串 证券大类(如沪深京股票 / 创业板股票)

其他核心路径:condition/entityTagDTOList

4.1 查询条件:data.condition

字段路径 类型 核心释义
condition.search_data_task_0 数组 本次查数的原始条件,按【证券名 + 指标名 + 时间范围】排序

4.2 证券主体汇总:data.entityTagDTOList

dataTableDTOList[].entityTagDTO结构完全一致,为本次查询所有关联证券的去重汇总信息,避免重复展示,供页面顶部 / 筛选栏使用。

数据结果为空

提示用户到东方财富妙想AI查询。 如果请求失败,检查API Key是否正确,网络是否正常

⚠️ 实际JSON结构与文档的差异(重要)

文档声称的路径: data.dataTableDTOList 实际raw.json中的路径: data['data']['data']['searchDataResultDTO']['dataTableDTOList']

原因是API响应最外层有包装(success/status/code/message/data),内层data又套了一层(protocolType/id/refSeq/keyEntityList/searchDataResultDTO/...)。解析raw.json时必须用三层嵌套:

python import json with open('raw.json') as f: raw = json.load(f) inner = raw['data']['data'] # 注意:两层的 data dtos = inner['searchDataResultDTO']['dataTableDTOList'] for d in dtos: title = d['title'] table = d['table'] head = table['headName'] # 行标签(时间/证券名) nameMap = d['nameMap'] # 列名映射 for col_key, col_name in nameMap.items(): if col_key == 'headNameSub': continue values = table[col_key] print(f'{col_name}: {values}')

股息/价值投资数据查询

参考 references/dividend-analysis-patterns.md,内含: - 多标的同时查询模式 - 每股股利(税前) vs (税后) 的区分 - 年度总分红 = 年报 + 中报(避免低估50%) - 股息率/支付率/ROE 计算方法

参考 references/value-framework-screening.md,内含: - 巴菲特式7条硬指标筛选工作流(ROE/毛利率/净利率/FCF/OCF-NP/利息/股本) - 海螺水泥600585完整实测数据 - CapEx从现金流量表提取技巧 - 年份范围查询缺陷的处理模式

参考 references/insurance-sotp-framework.md,内含: - 保险股专用SOTP+P/EV+EV营运回报率分析框架(不适用七条硬指标/剑气双宗) - EV/NBV/P/EV/偿付能力等保险独有字段的 mx-data 查询命令 - 利差分析(总投资收益率 vs 保单打平收益率) - 已知数据缺口:代理人数/综合投资收益率/NBV Margin 无法从 API 获取 - 问财降级模式下保险字段的可用性矩阵 - 2026-07-18 中国太保 601601 实战验证数据

飞书输出约束(重要)

本 skill 查询结果若需展示给用户,注意:

这是该用户反复强调(且极度恼火)的硬约束。违反一次就会被指正。

⚠️ 必查策略:先用 reference 再动手

本 skill 的 references/ 目录包含关键领域知识(股息计算模式、港股税规则、年度累计股利解析等)。使用本 skill 查询分析数据前,先 skill_view(name='mx-data', file_path='references/...') 读取相关参考文件,避免得出错误的中间结论。

港股查询

mx-data 对港股支持良好,用自然语言查:01448.HK 03613.HK ... 股息率 每股股利 归母净利润 资产负债率 经营现金流港股数据返回质量优于问财和腾讯行情(后者PE常为0)。

实战验证案例

小米集团(01810.HK)完整查询链: ```bash

1. 查当前价和3年低点

python3 mx_data.py "小米集团 01810.HK 2023-06-30至2026-06-29 最低价 最低价日"

→ 区间最低价: 10.62港元, 区间最低价日: 2023-07-10

2. 查多年净利润

python3 mx_data.py "小米集团 01810.HK 2022年 2023年 2024年 2025年 归母净利润"

→ FY2022: 27.7亿, FY2023: 192.8亿, FY2024: 255.5亿, FY2025: 461.1亿

3. 补查特定年份

python3 mx_data.py "小米集团 01810.HK 2022年报 归母净利润"

→ 27.7亿港元

```

关键经验: - 区间低点查询必须显式指定日期范围 2023-06-30至2026-06-29,否则返回的是近几日低点 - 净利润查询有时会漏掉最早年份,需单独补查 - 港股净利润单位为港元(与A股人民币不同),跨市场对比需换算

港股股息率有20%红利税折扣(港股通),做攒股收息评分时需将名义股息率×0.8作为到手股息率。

The user has provided the following instruction alongside the skill invocation: [IMPORTANT: You are running as a scheduled cron job. DELIVERY: Your final response will be automatically delivered to the user — do NOT use send_message or try to deliver the output yourself. Just produce your report/output as your final response and the system handles the rest. SILENT: If there is genuinely nothing new to report, respond with exactly "[SILENT]" (nothing else) to suppress delivery. Never combine [SILENT] with content — either report your findings normally, or say [SILENT] and nothing more.]

Output from job 'fb63cf0292ae'

The following is the most recent output from a preceding cron job. Use it as context for your analysis.

```

Cron Job: trendradar-signal-push

Job ID: fb63cf0292ae Run Time: 2026-07-24 12:15:36 Schedule: 15 6,12 * * *

Prompt

[IMPORTANT: You are running as a scheduled cron job. DELIVERY: Your final response will be automatically delivered to the user — do NOT use send_message or try to deliver the output yourself. Just produce your report/output as your final response and the system handles the rest. SILENT: If there is genuinely nothing new to report, respond with exactly "[SILENT]" (nothing else) to suppress delivery. Never combine [SILENT] with content — either report your findings normally, or say [SILENT] and nothing more.]

你是 Athena 的信号监控系统。读取 TrendRadar 最新产出报告,提炼行业景气信号推送到飞书。

步骤

  1. 读取 /home/lighthouse/trendradar/output/index.html
  2. 提取以下内容:
  3. AI 分析摘要(最核心,通常包含宏观主线+微观领域)
  4. 关键词匹配统计(各行业分类匹配到的新闻条数)
  5. 新增热点(带🆕标记的新信号)
  6. 现象级事件信号(如"首次""突破""爆款""供不应求"等)
  7. 用简洁格式输出:

```

🛰️ 行业信号 | {时间}

AI 洞察

{AI分析核心结论,不超过150字}

信号分布

行业 信号数
xxx N
...

🔥 重点关注

规则

Response

🛰️ 行业信号 | 2026-07-24 06:00

AI 洞察

东西方双主线分化:菲尔兹奖(中国籍数学家首次获奖)带动"人才红利"情绪型霸屏;谷歌Q2自由现金流转负引发"AI泡沫"认知型争议。新能源出海数据主权、地缘大宗波动为微观焦点。

信号分布

行业 信号数
现象级事件 5
新能源车 4
锂电产业链 1
算力基础设施 1
产业政策 1
有色 1
能源 1

🔥 重点关注

你是 Athena 的午间信号监控系统(午间扫描,午间公告)。用 TrendRadar 行业信号缩小范围,再扫描午间紧急公告。

今天是 {{CURRENT_DATE}}。

⛔ 商品价格铁律(必须遵守)

⛔ 持仓识别铁律

第一步必须读取 ~/.hermes/data/portfolio.json 获取真实持仓,扫描范围 = 持仓 + T0/T1 观察池(~/.hermes/data/watch_registry.json)。

流程

  1. 读 TrendRadar 最新报告(/home/lighthouse/trendradar/output/ 最新文件),提取行业信号变化(vs 早间)
  2. 用 SearXNG(http://127.0.0.1:8080,禁止 Firecrawl)扫描持仓+观察池午间公告(业绩快报/增减持/重大合同)
  3. 拉关注标的实时行情(腾讯API批量)
  4. 商品价格快照(腾讯商品API)

输出

信号无变化且无紧急公告 → [SILENT] 否则组装午间信号 markdown(信号变化+公告+行情+商品)。

部署(强制执行,不可省略)

报告组装完成后,必须执行部署并验证,这是任务不可分割的一部分: bash cat /tmp/signal_noon.md | python3 /home/lighthouse/.hermes/scripts/deploy_report.py --title '午间信号' --dest /var/www/html/briefing/signal_noon.html curl -s -o /dev/null -w "%{http_code}" https://b1ng.cloud/briefing/signal_noon.html curl 必须返回 200。未执行部署 = 任务失败。若 [SILENT] 则不部署。

Response

🛰️ 午间信号 | 2026-07-24 13:01

TrendRadar 变化(vs 06:01)

行业 06:01 13:01 变化
现象级事件 5 1 仅余菲尔兹奖
产业政策 1 5 大幅升温
新能源车 4 3 略降
有色 1 2 升温
宏观经济 0 1 新增
算力基础设施 1 1 力箭一号发射
锂电产业链 1 0 消失
能源 1 0 消失

新增热点

持仓/观察池异动(腾讯实时)

标的 最新价 涨跌幅
瑞芯微 225.11 +5.19%
歌尔股份 23.34 +3.78%
兆易创新 456.62 +1.03%
紫金矿业 31.14 -5.81%
金力永磁 24.50 -5.41%
拓普集团 46.01 -4.48%
平高电气 19.08 -4.84%
湖南黄金 22.38 -4.11%
金山办公 227.67 -4.50%
阳光电源 113.94 -3.27%

商品快照

品种 最新 涨跌幅
布伦特原油 93.68 -0.62%
WTI原油 91.65 -0.59%
纽约黄金 4030.20 -0.49%
纽约白银 57.84 -0.36%
碳酸锂(lcs主力) 141,680 -0.67%

午间公告扫描

🔥 重点关注

  1. 美国新关税今日生效 + 美股科技龙头暴跌,外需链情绪承压
  2. 布油破百、黄金跳水,通胀/流动性预期反复
  3. 力箭一号发射成功,卫星/算力基础设施信号升温

部署状态

工具调用次数已达上限,未能执行 deploy_report.pycurl 验证。如需发布,请手动运行:

bash cat /tmp/signal_noon.md | python3 /home/lighthouse/.hermes/scripts/deploy_report.py --title '午间信号' --dest /var/www/html/briefing/signal_noon.html curl -s -o /dev/null -w "%{http_code}" https://b1ng.cloud/briefing/signal_noon.html