全球股票/ETF/基金/指数 实时价格查询
name: stock-query
by asfamilybank · published 2026-04-01
$ claw add gh:asfamilybank/asfamilybank-stock-query---
name: stock-query
version: 2.0.5
description: >
查询全球主要市场股票实时行情:A 股、港股、美股,以及场内 ETF、场外基金、主要指数。
需要:curl(HTTP 请求)、iconv(GBK→UTF-8 转码)。
Use when: 用户要求查询股价、基金净值、ETF 价格、大盘指数,或需要计算持仓市值时。
NOT for: 加密货币、期货、期权、外汇。
---
# 全球股票/ETF/基金/指数 实时价格查询
前置依赖
运行本 skill 需要以下命令行工具:
| 工具 | 用途 |
|------|------|
| `curl` | 调用股票行情 API |
| `iconv` | 将 API 响应从 GBK 转码为 UTF-8 |
支持的市场与标的
| 市场 | 代码格式 | API 前缀 | 数据源 | 备用数据源 |
|---------|--------------------------|-------------|-------------|-------------|
| 沪市股票 | 6 开头 6 位数字 | `sh` | 腾讯财经 | 新浪财经 |
| 深市股票 | 0 或 3 开头 6 位数字 | `sz` | 腾讯财经 | 新浪财经 |
| 沪市 ETF | 5 开头 6 位数字 | `sh` | 腾讯财经 | 新浪财经 |
| 深市 ETF | 1 开头 6 位数字 | `sz` | 腾讯财经 | 新浪财经 |
| 沪市指数 | 000 开头 6 位数字 | `sh` | 腾讯财经 | 新浪财经 |
| 深市指数 | 399 开头 6 位数字 | `sz` | 腾讯财经 | 新浪财经 |
| 场外基金 | 排除法(见 Step 2) | — | 天天基金 | 东方财富 |
| 港股 | 5 位数字(如 00700) | `hk` | 腾讯财经 | — |
| 美股 | 英文 ticker(如 AAPL) | `us` | 腾讯财经 | — |
| 美股指数 | .DJI / .IXIC / .SPX | `us` | 腾讯财经 | — |
工作流程
Step 0: Meta 命令路由
在解析标的代码前,先检查用户输入是否为 meta 命令:
**version 命令**:输入为 `version`、`-v`、`--version`(大小写不敏感)
→ 直接输出版本信息,**不执行后续步骤**:
stock-query v2.0.4**help 命令**:输入为 `help`、`-h`、`--help`(大小写不敏感)
→ 直接输出用法说明,**不执行后续步骤**:
stock-query v2.0.4 — 全球股票/ETF/基金/指数实时行情查询
用法:
/stock-query <代码> [代码2 ...] 查询一个或多个标的
/stock-query version 显示版本号
/stock-query help 显示本帮助
支持的市场:
A股(沪/深) 6位数字,如 601991 000001
港股 5位数字,如 00700 09988
美股 英文ticker,如 AAPL TSLA NVDA
美股指数 .DJI .IXIC .SPX
ETF 6位数字,如 510300 159915
场外基金 6位数字,如 014978
常用示例:
/stock-query AAPL
/stock-query 00700 09988
/stock-query AAPL 00700 601991 510300---
Step 1: 解析用户输入
从用户消息中提取标的代码。支持以下输入形式:
常见标的速查:
**A 股:**
**港股:**
**美股:**
如果无法确定代码,向用户确认。
Step 2: 识别标的市场
第一步:判断输入类型
if input 是 5 位纯数字:
market = 'hk' # 港股
type = 'hk_stock'
elif input 以 . 开头 (如 .DJI):
market = 'us' # 美股指数
type = 'us_index'
elif input 包含英文字母:
market = 'us' # 美股
type = 'us_stock'
elif input 是 6 位纯数字:
# A 股市场识别(原有逻辑)
if code.startsWith('000') and len==6:
market = 'sh' # 沪市指数(注意与深市股票歧义)
type = 'index_or_stock'
elif code.startsWith('399'):
market = 'sz' # 深市指数
type = 'index'
elif code.startsWith('6'):
market = 'sh' # 沪市股票
type = 'stock'
elif code.startsWith('0') or code.startsWith('3'):
market = 'sz' # 深市股票(可能是场外基金,需二次确认)
type = 'stock_or_fund'
elif code.startsWith('5'):
market = 'sh' # 沪市 ETF
type = 'etf'
elif code.startsWith('1'):
market = 'sz' # 深市 ETF
type = 'etf'
else:
type = 'fund' # 场外基金(2/4/7/8/9 开头)
第二步:A 股歧义处理
对 type='index_or_stock' 的 000 开头代码:
1. 用户提到"指数""大盘""上证" → sh 前缀(指数)
2. 用户提到股票名称或"股票" → sz 前缀(深市股票)
3. 无法判断:先查 sh{code},名称含"指数"则确认为指数;否则查 sz{code}
4. 典型歧义:000001 → sh000001 上证指数,sz000001 平安银行
对 type='stock_or_fund' 的代码做二次确认:
1. 用腾讯接口查询 sz{code}
2. 若返回空/无效,判定为场外基金
3. 若返回数据,确认为深市股票
第三步:防碰撞校验
查询返回后校验名称与用户预期一致。不符时尝试另一市场前缀。Step 3: 查询股票/ETF/指数 实时行情
#### 3a. 腾讯财经(首选,支持全球市场)
腾讯财经 API 统一支持 A 股、港股、美股查询。
# A 股
curl -s "https://qt.gtimg.cn/q=sh601991,sz000001" | iconv -f GBK -t UTF-8
# 港股
curl -s "https://qt.gtimg.cn/q=hk00700,hk09988" | iconv -f GBK -t UTF-8
# 美股
curl -s "https://qt.gtimg.cn/q=usAAPL,usTSLA" | iconv -f GBK -t UTF-8
# 美股指数
curl -s "https://qt.gtimg.cn/q=us.DJI,us.IXIC,us.SPX" | iconv -f GBK -t UTF-8
# 混合查询(可跨市场批量)
curl -s "https://qt.gtimg.cn/q=sh601991,hk00700,usAAPL" | iconv -f GBK -t UTF-8**重要:腾讯接口返回 GBK 编码,必须通过 `iconv -f GBK -t UTF-8` 转码。**
API 前缀规则:
| 市场 | 前缀格式 | 示例 |
|---------|----------------------|--------------------------|
| 沪市 | `sh` + 6位代码 | `sh601991` |
| 深市 | `sz` + 6位代码 | `sz000001` |
| 港股 | `hk` + 5位代码 | `hk00700` |
| 美股 | `us` + ticker | `usAAPL`、`usBIDU` |
| 美股指数 | `us` + .代码 | `us.DJI`、`us.IXIC` |
响应格式为 `~` 分隔的文本,各市场字段结构一致:
| 索引 | 含义 |
|-----|---------------------------------------------|
| [0] | 市场标识(1=A股, 100=港股, 200=美股) |
| [1] | 名称(中文) |
| [2] | 代码 |
| [3] | 最新价 |
| [4] | 昨收 |
| [5] | 今开 |
| [6] | 成交量 |
| [30]| 日期时间 |
| [31]| 涨跌额(已算好) |
| [32]| 涨跌幅 %(已算好,直接使用) |
| [33]| 最高 |
| [34]| 最低 |
注意事项:
**频率限制:** 腾讯接口为公共 API,过度调用会被封禁 IP。健康使用频率:
#### 3b. 新浪财经(A 股备用)
仅用于 A 股。当腾讯接口超时或返回空时回退:
curl -s "https://hq.sinajs.cn/list={market}{code}" \
-H "Referer: https://finance.sina.com.cn" \
| iconv -f GBK -t UTF-8新浪字段索引(引号内逗号分隔,0-based):
新浪涨跌额 = [3] - [2],涨跌幅 = ([3] - [2]) / [2] × 100%
Step 4: 查询场外基金净值
对 type 为 fund 的标的(仅 A 股场外基金),按优先级使用:
**4a. 实时估值(交易日盘中,优先使用):**
curl -s "http://fundgz.1234567.com.cn/js/{code}.js"> **安全说明**:该接口为 HTTP(无 TLS),请求中仅含基金代码,不涉及用户敏感信息。
响应字段:
**4b. 备用:最新确认净值**
curl -s "https://api.fund.eastmoney.com/f10/lsjz?fundCode={code}&pageIndex=1&pageSize=1" \
-H "Referer: https://fund.eastmoney.com"若 4a 返回 `jsonpgz()` 空值,则使用 4b。
**QDII 基金特殊处理:**
基金名称含"QDII""纳斯达克""标普""海外""美国""全球",且净值日期落后 >2 天,属正常——QDII 基金净值公布有 T+2 至 T+7 的系统性延迟。附加提示:`⏳ QDII基金,净值公布有 T+2~T+7 延迟`
Step 5: 格式化输出
以 Markdown 表格输出:
| 代码 | 名称 | 市场 | 最新价 | 涨跌幅 | 最高 | 最低 | 币种 | 更新时间 |
|---------|---------------|-------|----------|----------------|----------|----------|------|-------------------|
| 000001 | 上证指数 | A股 | 3874.39 | 🔴 +1.60% | 3881.20 | 3850.10 | CNY | 2026-03-24 15:00 |
| 601991 | 大唐发电 | A股 | 4.21 | 🔴 +4.47% | 4.25 | 4.06 | CNY | 2026-03-24 15:00 |
| 00700 | 腾讯控股 | 港股 | 511.000 | 🔴 +2.53% | 515.000 | 498.000 | HKD | 2026-03-24 16:00 |
| AAPL | 苹果 | 美股 | 251.49 | 🟩 +1.41% | 254.60 | 250.28 | USD | 2026-03-23 16:00 |
| .DJI | 道琼斯 | 美股 | 46208.47 | 🟩 +1.38% | 46350.12 | 45980.33 | USD | 2026-03-23 17:11 |
| 014978 | 华安纳指100C | 基金 | 6.8897 | 🟢 -1.43%(估) | — | — | CNY | 2026-03-24 15:00 |涨跌标识规则:
如果输出环境支持 HTML 或富文本,使用颜色标签增强显示:
其他输出规则:
Step 6: 持仓市值计算(可选)
如果用户同时提供了持仓份额/股数,额外输出市值表:
| 代码 | 名称 | 持仓 | 成本价 | 最新价 | 市值 | 浮盈/亏 | 盈亏比 |
|--------|----------|--------|--------|--------|-----------|----------------|----------------|
| 600519 | 贵州茅台 | 100股 | 1680.0 | 1725.0 | 172,500 | 🔴 +4,500 | 🔴 +2.68% |
| AAPL | 苹果 | 50股 | 220.0 | 251.49 | 12,574.50 | 🟩 +1,574.50 | 🟩 +14.31% |汇总行:
📊 持仓合计:市值 185,074.50 | 总成本 179,000 | 浮盈 +6,074.50(+3.39%)注意:跨市场持仓汇总时,需提示用户各币种的市值分开统计,或按实时汇率折算。
数据源降级策略
错误处理
| 场景 | 处理方式 |
|------------------|--------------------------------------------------------------|
| 代码无法识别 | 提示 "未找到标的 {code},请确认代码是否正确" |
| 腾讯接口超时/空值 | A 股自动回退新浪;港股/美股提示 "数据源暂时不可用" |
| 新浪接口也失败 | 重试 1 次,仍失败则提示 "数据源暂时不可用,请稍后重试" |
| 场外基金无估值数据 | 回退到确认净值接口,标注 `(净值,非估值)` |
| 市场前缀碰撞 | 校验返回名称与用户预期是否一致,不一致时尝试另一市场前缀 |
| 中文乱码 | 检查是否遗漏 iconv 转码步骤(腾讯和新浪接口均为 GBK 编码) |
安全与隐私说明
交易时间参考
| 市场 | 交易时段(当地时间) | 时区 |
|-----------|---------------------------------------|-----------|
| A 股/ETF | 工作日 09:30-11:30, 13:00-15:00 | UTC+8 |
| 场外基金估值 | 工作日 09:30-15:00 | UTC+8 |
| 港股 | 工作日 09:30-12:00, 13:00-16:00 | UTC+8 |
| 美股 | 工作日 09:30-16:00(夏令时 21:30-04:00 北京) | UTC-4/-5 |
| QDII 基金 | 净值 T+2 至 T+7 公布 | — |
More tools from the same signal band
Order food/drinks (点餐) on an Android device paired as an OpenClaw node. Uses in-app menu and cart; add goods, view cart, submit order (demo, no real payment).
Sign plugins, rotate agent credentials without losing identity, and publicly attest to plugin behavior with verifiable claims and authenticated transfers.
The philosophical layer for AI agents. Maps behavior to Spinoza's 48 affects, calculates persistence scores, and generates geometric self-reports. Give your...