L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Développement · SKILL.md

finance-query

finance-query

股票/指数实时行情、K线历史、估值PE/PB、财务三表、技术指标、板块排名、公司信息。覆盖 A股/港股/美股,直接 curl 免费 API,不依赖 web_search。

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: finance-query description: 股票/指数实时行情、K线历史、估值PE/PB、财务三表、技术指标、板块排名、公司信息。覆盖 A股/港股/美股,直接 curl 免费 API,不依赖 web_search。 trigger: "A股|股票|上证|深证|指数|行情|大盘|涨跌|收盘|开盘|基金净值|港股|美股|K线|PE|PB|估值|市值|财报|ROE|市盈率|板块|涨幅榜|茅台|腾讯|苹果|AAPL|TSLA|利润表|资产负债|现金流|EPS|技术指标|MA|RSI|MACD|KDJ|均线|成交量|ETF"

金融行情查询

⚡ 快速调用(直接看这里)

一条 curl 命令搞定,不要绕路去 web_search。

查实时行情(腾讯财经,A/港/美统一)

curl -s "http://qt.gtimg.cn/q={代码}" -H "User-Agent: Mozilla/5.0" | iconv -f GBK -t UTF-8

代码前缀:sh600519(A股沪) / sz000001(A股深) / hk00700(港股) / usAAPL(美股)

批量:q=sh600519,hk00700,usAAPL

查K线/历史走势(东财 + curl_cffi TLS 指纹,首选 ⭐)

东财 K 线数据最全(A/港/美全覆盖),但需要 Chrome TLS 指纹模拟,普通 curl 会被 RST。用 python3 + curl_cffi:

python3 -c "
from curl_cffi import requests as curl_requests
import json

with curl_requests.Session(impersonate='chrome120') as s:
    resp = s.get('https://push2his.eastmoney.com/api/qt/stock/kline/get', params={
        'secid': '{SECID}', 'fields1': 'f1,f2,f3,f4,f5,f6',
        'fields2': 'f51,f52,f53,f54,f55,f56',
        'klt': '101', 'fqt': '1', 'beg': '0', 'end': '20500000', 'lmt': {条数}
    }, headers={'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36', 'Referer': 'https://quote.eastmoney.com/'}, timeout=10)
    data = resp.json()
    klines = data.get('data', {}).get('klines', [])
    for k in klines[-{条数}:]:
        print(k)  # 格式: 日期,开,收,高,低,量
"

SECID:1.600519(A股沪) / 0.000001(A股深) / 105.AAPL(美股) / 116.00700(港股) klt:101(日K) / 102(周K) / 103(月K) / 60(60分) / 15(15分) / 5(5分) fqt:1(前复权) / 2(后复权)

为什么用 curl_cffi:东财服务器检测 TLS 指纹,普通 curl/requests 会被 RST(返回 Empty reply)。curl_cffi 模拟 Chrome 浏览器指纹绕过检测。

查K线(新浪财经,兜底——curl_cffi 不可用时)

curl -s "https://money.finance.sina.com.cn/quotes_service/api/json_v2.php/CN_MarketData.getKLineData?symbol={代码}&scale=240&ma=no&datalen={条数}" \
  -H "User-Agent: Mozilla/5.0" -H "Referer: https://finance.sina.com.cn"

代码格式同腾讯行情:sh000001(上证) / sz399001(深证) / sh600519(茅台) / sz000001(平安银行) scale:240(日K) / 60(60分) / 30(30分) / 15(15分) / 5(5分) 返回 JSON 数组:[{"day":"2026-07-09","open":"4031","high":"4073","low":"4027","close":"4043","volume":"60200973800"}, ...]

新浪 K 线无需 TLS 指纹,plain curl 直接可用,但仅支持 A 股。港股/美股 K 线必须走东财 curl_cffi。

查K线(腾讯日K,curl_cffi 备选)

python3 -c "
from curl_cffi import requests as curl_requests
import json

with curl_requests.Session(impersonate='chrome120') as s:
    resp = s.get('http://ifzq.gtimg.cn/appstock/app/kline/kline', params={'param': '{代码},day,,,{条数},'}, timeout=8)
    text = resp.text
    if '=' in text:
        text = text.split('=', 1)[-1].rstrip(';').strip()
    data = json.loads(text)
    code_data = data.get('data', {}).get('{代码}', {})
    klines = code_data.get('qfqday', code_data.get('day', []))
    # 腾讯可能按年份嵌套: {'2025': [], '2026': []} → 展平
    if isinstance(klines, dict):
        flat = []
        for _, v in sorted(klines.items()):
            flat.extend(v)
        klines = flat
    for k in klines[-{条数}:]:
        print(','.join(k[:6]))  # 日期,开,收,高,低,量
"

代码同腾讯行情前缀:sh600519 / sz000001 / usAAPL

美股通过腾讯接口可能只返回少量数据(<10条),此时自动切东财。

查估值 PE/PB(东财)

# A股
curl -s "https://datacenter.eastmoney.com/securities/api/data/v1/get?reportName=RPT_DMSK_NEWINDICATOR&columns=SECURITY_CODE,SECUCODE&quoteColumns=f115~01~SECURITY_CODE~PE_TTM,f23~01~SECURITY_CODE~PB_NEW_NOTICE&filter=(SECUCODE=%22{代码}.{SH或SZ}%22)&pageNumber=1&pageSize=1&source=HSF10&client=PC" \
  -H "User-Agent: Mozilla/5.0" -H "Referer: https://data.eastmoney.com/"

# 美股
curl -s "https://datacenter.eastmoney.com/securities/api/data/v1/get?reportName=RPT_USF10_DATA_MAININDICATOR&columns=ALL&filter=(SECURITY_CODE=%22{TICKER}%22)&pageNumber=1&pageSize=1&sortTypes=-1&sortColumns=REPORT_DATE&source=INTLSECURITIES&client=PC" \
  -H "User-Agent: Mozilla/5.0" -H "Referer: https://data.eastmoney.com/"

# 港股
curl -s "https://datacenter.eastmoney.com/securities/api/data/v1/get?reportName=RPT_CUSTOM_HKF10_FN_MAININDICATORMAX&columns=ALL&filter=(SECURITY_CODE=%22{5位代码}%22)&pageNumber=1&pageSize=1&sortTypes=-1&sortColumns=REPORT_DATE&source=F10&client=PC" \
  -H "User-Agent: Mozilla/5.0" -H "Referer: https://data.eastmoney.com/"

查财务数据(东财,A股)

# A股主要财务指标(近10期,含净利润/营收/EPS/ROE)
curl -s "https://datacenter.eastmoney.com/securities/api/data/get?type=RPT_F10_FINANCE_MAINFINADATA&sty=APP_F10_MAINFINADATA&filter=(SECUCODE=%22{代码}.{SH或SZ}%22)&p=1&ps=10&sr=-1&st=REPORT_DATE&source=HSF10&client=PC" \
  -H "User-Agent: Mozilla/5.0" -H "Referer: https://emweb.securities.eastmoney.com/"

# A股资产负债表(归母权益/总资产)
curl -s "https://datacenter.eastmoney.com/securities/api/data/get?type=RPT_F10_FINANCE_GBALANCE&sty=APP_F10_GBALANCE&filter=(SECUCODE=%22{代码}.SH%22)&p=1&ps=10&sr=-1&st=REPORT_DATE&source=HSF10&client=PC" \
  -H "User-Agent: Mozilla/5.0" -H "Referer: https://emweb.securities.eastmoney.com/"

查财务数据(东财,美股三表)

# 美股利润表(持续经营利润)
curl -s "https://datacenter.eastmoney.com/securities/api/data/v1/get?reportName=RPT_USF10_FN_INCOME&columns=SECUCODE,SECURITY_NAME_ABBR,REPORT_DATE,REPORT_TYPE,STD_ITEM_CODE,AMOUNT&filter=(SECUCODE=%22{TICKER}.O%22)(STD_ITEM_CODE%20in%20(%22004013003%22,%22004013005%22))&pageNumber=1&pageSize=20&sortTypes=-1,1&sortColumns=REPORT_DATE,STD_ITEM_CODE&source=SECURITIES&client=PC" \
  -H "User-Agent: Mozilla/5.0" -H "Referer: https://emweb.securities.eastmoney.com/"

# 美股资产负债表(归母权益)
curl -s "https://datacenter.eastmoney.com/securities/api/data/v1/get?reportName=RPT_USF10_FN_BALANCE&columns=SECUCODE,SECURITY_NAME_ABBR,REPORT_DATE,REPORT_TYPE,STD_ITEM_CODE,AMOUNT&filter=(SECUCODE=%22{TICKER}.O%22)(STD_ITEM_CODE%20in%20(%22002005999%22,%22002005097%22))&pageNumber=1&pageSize=20&sortTypes=-1,1&sortColumns=REPORT_DATE,STD_ITEM_CODE&source=SECURITIES&client=PC" \
  -H "User-Agent: Mozilla/5.0" -H "Referer: https://emweb.securities.eastmoney.com/"

# 美股现金流量表(经营/投资/筹资现金流)
curl -s "https://datacenter.eastmoney.com/securities/api/data/v1/get?reportName=RPT_USSK_FN_CASHFLOW&columns=SECUCODE,SECURITY_NAME_ABBR,REPORT_DATE,REPORT_TYPE,STD_ITEM_CODE,AMOUNT&filter=(SECUCODE=%22{TICKER}.O%22)&pageNumber=1&pageSize=20&sortTypes=-1,1&sortColumns=REPORT_DATE,STD_ITEM_CODE&source=SECURITIES&client=PC" \
  -H "User-Agent: Mozilla/5.0" -H "Referer: https://emweb.securities.eastmoney.com/"

三条纪律

  1. 严禁用 web_search 查行情/K线/估值——搜索引擎对实时金融数据结果极差,直接 curl API
  2. 所有腾讯/新浪接口必须 iconv -f GBK -t UTF-8——否则中文乱码
  3. 连续请求间隔至少 1 秒——避免被限速封 IP

路由逻辑(用户问什么 → 做什么)

用户意图调用方式数据源
查某股票现价/涨跌腾讯行情(1 次 curl)qt.gtimg.cn
查 PE/PB/市盈率先试腾讯行情(字段39=PE, 43=PB),不够再用东财估值qt.gtimg.cn → datacenter.eastmoney
查 K线/走势/历史东财K线(curl_cffi首选) + generate_chart;新浪兜底(仅A股)push2his.eastmoney → sina
查 A股财报/ROE/利润东财主财务datacenter.eastmoney
查 A股资产负债/净资产东财资产负债表datacenter.eastmoney
查 美股利润/净利东财美股利润表datacenter.eastmoney
查 美股资产/权益东财美股资产负债表datacenter.eastmoney
查 美股现金流东财美股现金流量表datacenter.eastmoney
查涨幅榜/板块东财全市场排名82.push2.eastmoney
查板块成分股东财板块成分82.push2.eastmoney
查技术指标(MA/RSI/MACD)先拉K线(东财curl_cffi首选),再计算(见技术指标章节)push2his.eastmoney → 计算
查美股板块ETF动量shell python yfinanceYahoo Finance
不确定代码东财代码搜索 → 再查searchapi.eastmoney

代码映射规则

腾讯行情前缀

市场前缀示例
A股沪市(6/9开头)shsh600519
A股深市(0/3开头)szsz000001
上证指数sh000001深证成指 sz399001,创业板 sz399006
港股hk + 5位hk00700(腾讯)
美股us + TICKERusAAPL(苹果), usTSLA(特斯拉)

东财 SECID(K线用)

市场格式示例
A股沪(6/9开头)1.代码1.600519
A股深(0/3开头)0.代码0.000001
美股105.TICKER105.AAPL
港股116.代码116.00700

东财估值/财务代码格式

市场格式示例
A股沪市{code}.SH600519.SH
A股深市{code}.SZ000001.SZ
A股北交所(4/8/920开头){code}.BJ430047.BJ
美股纳斯达克{TICKER}.OAAPL.O
美股纽交所{TICKER}.NJPM.N
美股AMEX{TICKER}.AGOLD.A
港股5位代码00700

美股交易所判断:大部分科技股在纳斯达克(.O),金融/工业在纽交所(.N)。不确定时先用 .O 试,无数据再试 .N。


响应解析

腾讯行情(~ 分隔,按索引取值)

索引含义索引含义
1名称3现价
4昨收5开盘
31涨跌额32涨跌幅%
33最高34最低
38换手率%39PE(TTM)
43PB44总市值(元)

东财 K线

响应 JSON → data.klines 数组,每条:"日期,开,收,高,低,量"

参数:klt=101(日) / 102(周) / 103(月) / klt=5(5分钟) / klt=15(15分钟) / klt=60(60分钟) 复权:fqt=1(前复权) / 2(后复权);条数:lmt=N(最近N条)

A股主要财务

响应 JSON → result.data 数组,关键字段:

  • REPORT_DATE: 报告期
  • PARENTNETPROFIT: 归母净利润
  • KCFJCXSYJLR: 扣非净利润
  • TOTALOPERATEREVE: 营业总收入
  • BASIC_EPS: 基本每股收益
  • WEIGHTAVG_ROE: 加权平均ROE
  • MGJZC: 每股净资产
  • YSTZ: 营收同比增长率
  • SJLTZ: 净利润同比增长率

A股资产负债表

  • TOTAL_ASSETS: 总资产
  • TOTAL_PARENT_EQUITY: 归属母公司股东权益
  • TOTAL_EQUITY: 所有者权益合计
  • TOTAL_LIABILITIES: 负债合计

美股财务三表

响应 JSON → result.data 数组,字段含义:

  • REPORT_DATE: 报告期
  • REPORT_TYPE: 年报 / 中报 / 季报
  • STD_ITEM_CODE: 科目代码(见下方映射)
  • AMOUNT: 金额(美元)

利润表关键科目:

STD_ITEM_CODE含义
004013003持续经营净利润(年报)
004013005持续经营净利润(季报)
001013003营业总收入(年报)
001013005营业总收入(季报)

资产负债表关键科目:

STD_ITEM_CODE含义
002005999归母股东权益(年报)
002005097归母股东权益(季报)
002009003总资产(年报)
002009005总资产(季报)

板块与市场概览

A股全市场涨跌幅排名

# 涨幅前20(改 pz 控制数量,po=1 降序 / po=0 升序看跌幅)
curl -s "http://82.push2.eastmoney.com/api/qt/clist/get?pn=1&pz=20&po=1&np=1&ut=bd1d9ddb04089700cf9c27f6f7426281&fltt=2&invt=2&fid=f3&fs=m:0+t:6,m:0+t:80,m:1+t:2,m:1+t:23&fields=f12,f14,f3,f24,f25" \
  -H "User-Agent: Mozilla/5.0" -H "Referer: http://quote.eastmoney.com/center/gridlist.html"

字段:f12=代码, f14=名称, f3=今日涨跌%, f24=60日涨幅%, f25=年初至今%

行业板块列表

curl -s "http://82.push2.eastmoney.com/api/qt/clist/get?pn=1&pz=500&po=1&np=1&ut=bd1d9ddb04089700cf9c27f6f7426281&fltt=2&invt=2&fid=f3&fs=m:90+t:2&fields=f12,f14,f3" \
  -H "User-Agent: Mozilla/5.0" -H "Referer: http://quote.eastmoney.com/"

返回:f12=板块代码(BK0xxx), f14=板块名, f3=涨跌幅%

板块成分股(查某板块下有哪些股票)

# 把 fs 改为 b:{板块代码}
curl -s "http://82.push2.eastmoney.com/api/qt/clist/get?pn=1&pz=50&po=1&np=1&ut=bd1d9ddb04089700cf9c27f6f7426281&fltt=2&invt=2&fid=f3&fs=b:{BK0xxx}&fields=f12,f14,f3" \
  -H "User-Agent: Mozilla/5.0" -H "Referer: http://quote.eastmoney.com/"

美股板块 ETF 动量(需 python + yfinance)

# 一行 python 查 11 大板块 ETF 近期涨跌
python3 -c "
import yfinance as yf
etfs = {'XLK':'科技','XLV':'医疗','XLF':'金融','XLY':'消费','XLC':'通信','XLI':'工业','XLE':'能源','XLP':'必需','XLU':'公用','XLRE':'地产','XLB':'材料'}
for sym,name in etfs.items():
    t = yf.Ticker(sym)
    h = t.history(period='5d')
    if len(h)>=2:
        chg = (h['Close'].iloc[-1]/h['Close'].iloc[0]-1)*100
        print(f'{name}({sym}): {chg:.1f}%')
"

注意:需要 pip install yfinance,首次使用可能需安装。如果 yfinance 不可用,改用东财美股 K线接口查 ETF。


技术指标(基于 K 线数据计算)

用户问 MA/RSI/KDJ/MACD 等技术指标时,先拉 K 线数据(东财 curl_cffi 首选),再用 python 计算:

python3 -c "
from curl_cffi import requests as curl_requests
import json

# 步骤 1:拉取 K 线(东财,至少 120 条用于计算 MA60/MACD)
with curl_requests.Session(impersonate='chrome120') as s:
    resp = s.get('https://push2his.eastmoney.com/api/qt/stock/kline/get', params={
        'secid': '{SECID}', 'fields1': 'f1,f2,f3,f4,f5,f6',
        'fields2': 'f51,f52,f53,f54,f55,f56',
        'klt': '101', 'fqt': '1', 'beg': '0', 'end': '20500000', 'lmt': 120
    }, headers={'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36', 'Referer': 'https://quote.eastmoney.com/'}, timeout=10)
    klines = resp.json().get('data', {}).get('klines', [])

# 步骤 2:解析并计算指标
closes = [float(k.split(',')[2]) for k in klines]  # 收盘价在第3列
highs = [float(k.split(',')[3]) for k in klines]
lows = [float(k.split(',')[4]) for k in klines]
volumes = [float(k.split(',')[5]) for k in klines]

# MA(移动平均线)
def ma(arr, n): return sum(arr[-n:])/n if len(arr)>=n else None
print(f'MA5={ma(closes,5):.2f}, MA10={ma(closes,10):.2f}, MA20={ma(closes,20):.2f}, MA60={ma(closes,60):.2f}')

# RSI(相对强弱指标,14日)
gains, losses = [], []
for i in range(1, min(15, len(closes))):
    diff = closes[-i] - closes[-i-1]
    gains.append(max(diff, 0))
    losses.append(max(-diff, 0))
avg_gain = sum(gains)/14 if gains else 0
avg_loss = sum(losses)/14 if losses else 1
rsi = 100 - 100/(1+avg_gain/avg_loss) if avg_loss else 100
print(f'RSI14={rsi:.1f}')

# MACD(12/26/9)
def ema(arr, n):
    k = 2/(n+1)
    result = arr[0]
    for v in arr[1:]: result = v*k + result*(1-k)
    return result
ema12 = ema(closes[-26:], 12)
ema26 = ema(closes[-26:], 26)
dif = ema12 - ema26
print(f'MACD_DIF={dif:.3f}')

print(f'当前价={closes[-1]:.2f}, 最新量={volumes[-1]:.0f}')
"

常见技术信号判断:

  • MA5 > MA10 > MA20 → 多头排列(看涨)
  • RSI > 70 → 超买区;RSI < 30 → 超卖区
  • MACD DIF 由负转正 → 金叉(买入信号)
  • 量比 > 2 → 放量(注意:量比 = 当日量 / 过去 5 日均量)

分钟 K 线(腾讯,日内交易分析)

# 5分钟K线(A股/港股)
curl -s "http://ifzq.gtimg.cn/appstock/app/kline/mkline?param=sh600519,m5,,320" \
  -H "User-Agent: Mozilla/5.0" -H "Referer: http://stockhtm.finance.qq.com"

参数:m5(5分钟) / m15(15分钟) / m30(30分钟) / m60(60分钟),末尾数字为条数


附加能力

代码搜索(不确定 ticker 时先查)

curl -s "https://searchapi.eastmoney.com/api/suggest/get?input={关键词}&type=14&token=D43BF722C8E33BDC906FB84D85E326E8"

生成走势图

拿到 K 线数据后,调 generate_chart:

{
  "type": "line",
  "data": {
    "labels": ["日期1", "日期2", "..."],
    "datasets": [{"label": "股票名", "data": [价格1, 价格2], "borderColor": "rgb(255,99,132)", "fill": false}]
  },
  "options": {"plugins": {"title": {"display": true, "text": "XXX 近N日走势"}}}
}

新浪财经(A股行情备选 + A股 K 线兜底)

# 实时行情(备选)
curl -s -H "Referer: http://finance.sina.com.cn" "http://hq.sinajs.cn/list=sh000001" | iconv -f GBK -t UTF-8

# K 线(仅 A 股,curl_cffi 不可用时的兜底)
curl -s "https://money.finance.sina.com.cn/quotes_service/api/json_v2.php/CN_MarketData.getKLineData?symbol=sh000001&scale=240&ma=no&datalen=30" \
  -H "User-Agent: Mozilla/5.0" -H "Referer: https://finance.sina.com.cn"

⚠️ 关键纪律(避免绕路)

✅ 正确流程:
1. 判断用户要什么(行情/K线/估值/财务/板块/技术指标)
2. 按「路由逻辑」表选对应 API
3. 一次 shell(python3/curl) 搞定(技术指标额外加一步计算)
4. 解析响应,直接回答

❌ 绕路(禁止):
1. web_search("茅台股价")(搜索引擎拿不到实时行情)
2. web_fetch("https://finance.sina.com.cn/...")(网页需 JS 渲染)
3. 多次 curl 同一个 API(批量查询用逗号拼接一次搞定)
4. 忘记 iconv 导致乱码后再重试(第一次就要带)
5. 用普通 curl 请求东财 K 线(会被 TLS 指纹检测 RST,必须用 curl_cffi)

铁律:

  • 实时行情 → 腾讯(一个接口覆盖 A/港/美,含 PE/PB/市值)
  • K线/走势 → 东财 curl_cffi 首选(数据最全,A/港/美均覆盖);新浪 plain curl 兜底(仅A股)
  • 估值/财务/板块 → 东财(全免费,无需 key)
  • 技术指标 → 拉K线(东财 curl_cffi) + python 计算(不要调第三方库)
  • 美股板块 → yfinance 或东财 K 线查 ETF
  • 腾讯行情已含 PE/PB(字段 39、43),简单估值查询不用单独调东财
  • 东财 ut 和 token 是公开固定值,直接用
  • 非交易时段返回最近一个交易日收盘数据,正常返回即可
  • 美股交易所后缀不确定时先 .O(纳斯达克),无数据再试 .N(纽交所)
  • curl_cffi import 失败时降级到新浪 plain curl(仅A股有效)
  • 港股/美股 K 线只能走东财 curl_cffi,无 plain curl 替代

activate_tools: shell, generate_chart

Skills enregistrées