跳转至

7615 F10 / TQLEX API

7615 是通达信 F10 / 资料数据的 HTTP 网关,适合查询公司概况、题材、公告、财务报表、估值、研报等资料类数据。

它和 7709 行情主站是两条线:

类型 7709 7615
连接方式 TCP 长连接 HTTP POST
数据类型 行情、K 线、分时、成交明细、代码表 F10、财务、题材、新闻公告、研报
使用入口 TdxClient client.f10 或 F10Client
是否需要 7709 握手 需要 不需要

实盘验证状态

7615 通路已实盘验证可用(000001,耗时约 1.1 秒,5 项抽查全部返回真实数据):

$ python -m eltdx.f10_smoke --code 000001
[OK] company_profile tables=1 rows=[1]
[OK] hot_topics tables=1 rows=[10]
[OK] announcements tables=1 rows=[89]
[OK] theme_market tables=2 rows=[1, 13]
[OK] valuation tables=2 rows=[1, 20]
[OK] f10 smoke passed

关于「与 easy_tdx 对比」需要说明一点:easy_tdx 1.20.7 里没有任何 7615 实现 (全仓检索 7615 命中 0 次),所以 7615 这条通路不存在同协议可对比对象, 只能做实盘冒烟与跨协议互证。

与 7709 公司信息(F10 文本)的关系

7709 另有一条文本型 F10 通路:0x02CF 列目录 + 0x02D0 读内容, 拿到的是通达信客户端「F10」里那段 GBK 文本(例如 000001.txt = 平安银行最新提示)。 它与本页的 7615 Entry 是两套独立数据源,不是同一份数据的两种封装。

⚠️ 这两条命令(连同 0x02C5)的可用性取决于原生模块版本: 随 v3.2.3 发布、或从 PyPI 装到的 _native 不含这 3 个命令, 调用会抛 UnsupportedCommandError: unsupported command: 0x02cf; 而用本仓库 Rust 源码编译出的 _native 已包含它们,可直接使用 client.company_info.category(code, market) / .content(code, market, filename, offset, length)。 版本落后的原因与编译方法见 CHANGELOG「未发布」。 旁证:easy_tdx 1.20.7 用它的纯 Python 实现能取回 000001.txt 的 23426 字节正文; 而同一份数据走 eltdx 的 resources.read("000001.txt") 只能拿到 chunk_len=0 的空块(说明该文件不经普通文件通路提供),所以文本型 F10 必须用 0x02CF/0x02D0 读取,不能靠 resources.read() 绕。 若手上只有发布版原生模块,可暂用 7615 的 company_profile / announcements / news 等 Entry 替代。

这 3 个命令的差分 fixture 已于本轮补齐(tests/native 25/25 命令全覆盖), 载荷为 7709 F10 的真实结构:目录 = count(u16 LE) + count × 152 字节 (64 name + 80 filename + 4 start + 4 length,GBK);内容 = 12 字节头 (正文长度在 [10:12])+ GBK 正文。

基本用法

from eltdx import TdxClient

client = TdxClient(timeout=3)
profile = client.f10.company_profile("000034")
topics = client.f10.hot_topics("000034")
notices = client.f10.announcements("000034")

print(profile.rows[0])
print(topics.rows[:3])
print(notices.rows[:3])

也可以只用 F10 HTTP 客户端:

from eltdx import F10Client

f10 = F10Client(timeout=3)
print(f10.company_profile("000034").rows[0])

连接策略

自 v3.2.0 起,F10Client 和 client.f10 默认优先尝试 IPv4;IPv4 连接失败后继续尝试其他地址,包括 IPv6。要恢复系统默认地址顺序,可使用 F10Client(prefer_ipv4=False),或设置 client.f10.prefer_ipv4 = False。

此策略仅作用于 F10 请求,不修改全局 DNS 函数,也不会把并发请求串行执行。保留 urllib 的环境代理、HTTP Host、HTTPS SNI 和证书校验。使用代理时,排序作用于客户端实际连接的代理地址,目标地址的解析由代理决定。

各地址依次连接并使用 timeout;这是地址优先级调整,不是 IPv4/IPv6 并行竞速。连接多个失败地址、DNS 解析和读取响应可能使总耗时超过一次 timeout。

返回结构

常规 F10 方法返回 F10Response;涨跌停列表返回 LimitBoardLadder,其 raw 和 summary 仍保留服务端原始结构:

字段 / 属性 含义
entry 实际调用的 TQLEX Entry
request_body 实际发送的 JSON body
error_code 服务端 ErrorCode
ok ErrorCode 为 0 或空时为 True
tables / result_sets 返回的表
rows 第一张表的行,适合最常见的单表结果
raw 原始 JSON 响应

每张表是 F10ResultSet:

字段 / 属性 含义
key ResultSetKey,没有时自动用 table0、table1
columns 原生列名
rows 字典行
row_cells 带列位置的单元格,适合处理重复列名
count 行数

如果服务端返回重复字段名,rows 会自动保留后续列:

T120, T120 -> row["T120"], row["T120__2"]

F10 字段以服务端返回的 ColName / ColDes 为准,很多 Entry 会返回 T003、N001 这类原生列名。单个调用方法的常用字段对照见 methods/README.md 里的 F10 单页;遇到未列出的字段时,先看:

print(response.tables[0].columns)
print(response.tables[0].rows[:2])

常用方法

方法 作用 底层 Entry
stock_info(code) 股票名称、代码、市场 CWServ.tdxf10_gg_comreq
limit_up_down_list(start_date=None, end_date=None, include_summary=False) 指定日期 / 日期范围的逐股涨停、炸板和跌停列表 CWServ.cfg_fx_lbtt
company_profile(code, section="8") 公司概况,默认发行上市信息 CWServ.tdxf10_gg_gsgk
business_composition(code, report_date=None) 主营构成,不传报告期时自动取最新报告期 CWServ.tdxf10_gg_jyfx
shareholder_change_plans(code) 股东增减持计划 CWServ.tdxf10_gg_gdyj
dividend_financing(code, section="fh") 分红融资,默认分红方案历史 CWServ.tdxf10_gg_fhrz
allotment_dates(code) 增发获配可选日期 CWServ.tdxf10_gg_fhrz_zfhpmx
allotment_details(code, date) 增发获配机构明细 CWServ.tdxf10_gg_fhrz_zfhpmx
finance_report(code, report_type="zcfzb") 财务报表,默认资产负债表 CWServ.tdxf10_gg_cwfx
finance_diagnosis(code, section="yynl") 财务诊断 CWServ.tdxf10_gg_cwzd
stock_score(code, section="pf") 个股总评,默认综合评分 CWServ.tdxf10_gg_ggzp
profit_forecast(code, section="ylyctj") 盈利预测与评级,section 可传 ylyctj 统计、ylycmx 明细、yzyq 一致预期、tzpjtj 投资评级统计、ycpjyjbg 研报 CWServ.tdxf10_gg_ybpj
shareholders(code, section="count", *, report_date=None, kind="000", filter1="", filter2="", page=1, page_size=20) 股东研究 11 个 section:股东人数、同业股东人数排名、控股股东、十大流通股东、十大股东、十大债券持有人、持股变动、机构持股汇总 / 分类、机构持仓明细、增减持计划 CWServ.tdxf10_gg_gdyj(institution_holdings 走 CWServ.tdxf10_gg_gdyj_jgcgmx)
capital_structure(code, section="structure", *, date=None) 股本结构 5 个 section:结构、变动、回购、限售流通、限售解禁明细(明细必填 date) CWServ.tdxf10_gg_gbjg / CWServ.tdxf10_gg_gbjg_xsjjmx
business_report(code, section="business", *, report_date=None) 经营分析 6 个 section:主营概述、主营构成、前五名客户、前五名供应商、产品价格、财务指标变动 CWServ.tdxf10_gg_jyfx
industry_analysis(code, section="peers", *, arg="") 行业分析 10 个 section:同业对比、同业分红排名、同业规模、同业估值、行业新闻、行业研报、市场份额、行业汇总、可比公司、可比公司资料(后两个走 CWServ.tdxf10_gg_kbgs) CWServ.tdxf10_gg_hyfx
trading_report(code, section="margin", *, arg="", date=None, page=1, page_size=20) 交易数据 11 个 section:两融 / 大宗 / 龙虎榜 / 沪股通 / 涨跌停分析 / 可转债 / 主力盘口 / 席位 / 科创板标记 CWServ.tdxf10_gg_jyds(margin_history 走 CWServ.tdxf10_gg_sj)
fund_report(code, section="basic", *, arg="", date=None, page=1, page_size=20) ETF / 场外基金 30 个 section:资料、净值、分红、配置、重仓、财务、销售、评级等 CWServ.skef10_jj_jjzl 等 CWServ.skef10_jj_* 家族
market_report(code, section="board_info", *, arg="", date=None, page=1, page_size=20) 板块 / 指数 / 大盘 20 个 section:板块资料与资金、成份股、指数概况与跟踪、大盘两融与新股 CWServ.skef10_bk_getinfo 等 CWServ.skef10_bk_* / skef10_zs_* / skef10_dpzx_*
theme_market(code, req_id="200743") 题材概念行情,默认相关板块 HQServ.hq_nlp_tcihq
valuation(code, req_id="200191") 估值市场数据,默认估值表 HQServ.hq_nlp_gpsj
ranking_detail(code, section="scpmdela") 市场 / 行业排名明细 CWServ.tdxf10_gg_zxts_rqpm
governance(code, section="wgcl") 资本运作治理 CWServ.tdxf10_gg_zbyz
hot_topics(code, section="zttzbkz") 热点题材 CWServ.tdxf10_gg_rdtc
topic_compare(code, topic_id, section="gndbzfsj") 题材内对比排名 CWServ.tdxf10_gg_rdtc_gndb
topic_compare_first(code) 自动取第一个题材 ID 后做题材对比 CWServ.tdxf10_gg_comreq + CWServ.tdxf10_gg_rdtc_gndb
company_news(code, section="gsyj") 公司研报 / 监管措施 / 财报点评(finance_review 走 CWServ.tdxf10_gg_cwfx_cbdp) CWServ.tdxf10_gg_gszx
digest(code, section="tips", *, page=1, page_size=20) 「最新提示」页 8 个 section:最新提示、公司概要、公司大事、公司新闻、公司公告、公司研报、路演互动、投资者互动(interaction 走 CWServ.tdxf10_gg_zxtstzzhd) CWServ.tdxf10_gg_zxts
northbound_holding(code) 沪深股通持股变化 CWServ.tdxf10_gg_zlcc
detail(detail_type, record_id) 按记录 ID 查询正文 CWServ.tdxf10_gg_idreq
announcements(code) 公告列表 CWSearch.tzx_rcache
news(code) 新闻列表 CWSearch.tzx_rcache
roadshows(code) 路演列表 CWSearch.tzx_rcache

个股 F10 其余 Entry

个股 F10 页面统一放在 http://static.tdx.com.cn:7615/site/tdxf10/<page>.html,脚本在 js/<page>.js(例如 gg_gdyj.html + js/gg_gdyj.js)。合并封装后一个 Entry 往往覆盖整页多个子表,Params[1] 选子表:

Entry 对外方法 子表(Params[1])
CWServ.tdxf10_gg_gdyj shareholders() 10 个子表:gdrs 股东人数、thygdrs 同业股东人数排名、kggd 控股股东、ltgd 十大流通股东、sdgdbgq 十大股东、sdzqcyr 十大债券持有人、cgbd 持股变动、jgcg 机构持股汇总、jgcgz 机构持股分类、gdzjcjh 增减持计划
CWServ.tdxf10_gg_gdyj_jgcgmx shareholders(section="institution_holdings") 机构持仓明细(单表,Params 形如 [code, kind, report_date, "99", …])
CWServ.tdxf10_gg_gbjg capital_structure() 4 个子表:gbjg 股本结构、gbbd 股本变动、gphg 股票回购、xslt 限售流通
CWServ.tdxf10_gg_gbjg_xsjjmx capital_structure(section="restricted_detail") 限售解禁明细(必填 date 参数)
CWServ.tdxf10_gg_jyfx business_report() 6 个子表:zyyw 主营业务概述、zygc 主营构成、qwm 前五名客户、qwmgys 前五名供应商、cpjg 产品价格、0 财务指标大幅变动
CWServ.tdxf10_gg_hyfx industry_analysis() 8 个子表:cwgz、fhrzb、gsgm、gzsp、hyxw、hyyb、scbx、tot
CWServ.tdxf10_gg_jyds trading_report() rzrq 两融、dzjy 大宗交易、lgt 龙虎榜、islgt 沪深股通、dtfx 跌停分析、ztfx 涨停分析、zrq 可转债、zlpskcj 主力盘口、yxsbxx 研报席位、checkkcb 科创板标记
CWServ.tdxf10_gg_sj trading_report(section="margin_history")、client.money_flow.history() 区间通道:rzrq_sj 近 6 个月两融、zjlx_sj 3/5/10/20/60 日资金流向
CWServ.tdxf10_gg_cwfx finance_report()、finance_diagnosis() zcfzb、lyb、xjllb 三大表 + zyzb、dbfx、cwgc、zcdjt、ylnl、cwzd、cwbg 等指标表;js/gg_cwfx_module.js 是同一页的「点评」
CWServ.tdxf10_gg_zbyz governance() 8 个子表:wgcl 违规处理、dbmxbgq 担保明细、gljy 关联交易、gqzr 股权转让、gqzy 股权质押、sgjb 诉讼仲裁、zdsx 重大事项、zjly 资金运用
CWServ.tdxf10_gg_ybpj profit_forecast() 5 个子表:ylyctj、ylycmx、yzyq、tzpjtj、ycpjyjbg
CWServ.tdxf10_gg_zxts ranking_detail()、digest() 排名与提示子表:scpmdela、scpmdelat、hypmdela、hypmdelat、scpmzxt、hypmzxt、ztxqzxts;digest() 另用 zxts 最新提示、gsgy 公司概要、gsds 公司大事、gsxw 公司新闻、gsgg 公司公告、gsyj 公司研报、lyhd 路演互动
CWServ.tdxf10_gg_zxtstzzhd digest(section="interaction") 投资者互动(单表,Params 形如 [code, "1", "1", page_size])
CWServ.tdxf10_gg_zlcc northbound_holding() bszj 北向资金、sdzj 南向资金;页面脚本另有 iphq、iphqtj、jjcgtj 子表
CWServ.tdxf10_gg_kbgs industry_analysis(section="comparable")、industry_analysis(section="comparable_profile") Params ["1", code] 可比公司列表、["0", code] 本公司在本页的资料
CWServ.tdxf10_gg_comreq stock_info()、business_periods()、topic_ids() 页面初始化辅助查询:gpquery 股票名称与市场、zygcfx 主营报告期、rdtcgn 题材 ID 等

其余具名封装(gsgk、fhrz、fhrz_zfhpmx、cwfx_cbdp、cwzd、ggzp、rdtc、rdtc_gndb、gszx、zxtstzzhd、idreq、zxts_rqpm)见上面的「常用方法」表。

发现方式:客户端 T0002\tmp\Code Cache 保存了页面脚本的请求 URL,脚本里直接写出了 Entry 名与 Params 取值(例如 gg_gdyj.js 里出现 gdrs、ltgd、kggd 等子表名)。

ETF / 基金 F10(skef10_jj_*)

页面在 http://page1.tdx.com.cn:7615/site/sketchf10/jjf10/html/<page>.html,脚本在 .../jjf10/js/<page>.js。左侧菜单固定 7 页,ETF 与场外基金共用同一批 Entry:

菜单页(页面模块) 使用的 Entry
最新提示(skef10_jj_jjzl) skef10_jj_jjzl(1 基金经理 / 2 基金管理人 / 4 基本概况 / 5 交易席位)、skef10_jj_idreq(名称与市场)、skef10_jj_jjpj(评级)、skef10_jj_jjpf(评分)、skef10_jj_fxsy(分类/同类对比)
规模份额(skef10_jj_gmfe) skef10_jj_gmfe、skef10_jj_cyrjcmx、skef10_jj_etfzj(是否 ETF / ETF 两融)、skef10_jj_fxsy
净值回报(skef10_jj_jzhb) skef10_jj_jzhb(0 单位净值 / 1 区间收益 / 3 同类排名 / 5 分红)、skef10_jj_fxsy
投资组合(skef10_jj_tzzh) skef10_jj_tzzh(zcpz 资产配置 / hyfb 行业分布 / cgjzd 重仓变动 / zjpz 重仓排名 / jjxtzzh 持仓汇总 / zczq 债券配置 / ccqhmx 期货明细)
持股情况(skef10_jj_cgqk) skef10_jj_cgqk(cgqkbgq / cgmxbgq / cyjjmxbgq / sxjjzcbgq)、skef10_jj_tzzh
财务状况(skef10_jj_cwzk) skef10_jj_cwzk(zcfzb 等报表)
销售信息(skef10_jj_xsxx) skef10_jj_xsxx(0 费率 / 4 销售公告 / 5 相关资讯)、skef10_jj_idreq

这 7 页合计引用 13 个 Entry 名:skef10_jj_idreq、skef10_jj_jjzl、skef10_jj_gmfe、skef10_jj_jzhb、skef10_jj_tzzh、skef10_jj_cgqk、skef10_jj_cwzk、skef10_jj_xsxx、skef10_jj_etfzj、skef10_jj_cyrjcmx、skef10_jj_jjpj、skef10_jj_jjpf、skef10_jj_fxsy(首页脚本 skef10_jj_index.js 里还出现过 skef10_jj_tssj「特色数据」入口)。封装入口是 client.f10.fund_report()。

板块 / 指数 / 大盘 F10(skef10_bk_* / skef10_zs_* / skef10_dpzx_*)

板块与指数的页面在 http://page1.tdx.com.cn:7615/site/sketchf10/zsf10/html/<page>.html,大盘指数在 .../dpzxf10/html/<page>.html,脚本分别在各自的 js/ 目录。

板块 / 指数(zsf10)菜单共 12 页,引用 25 个 Entry 名(11 个 skef10_bk_* + 14 个 skef10_zs_*):

菜单页 使用的 Entry
操盘必读 skef10_zs_cpbd、skef10_bk_cpbd_jczl(001 基础资料 / 002 板块说明 / 004 交易数据)、skef10_bk_getinfo、skef10_zs_bkzx
板块资金 skef10_zs_zjlx、skef10_zs_zjlx_fg、skef10_bk_zjlx
异动分析 skef10_zs_ydfx、skef10_bk_ydfx
涨停轨迹 skef10_zs_lsztgj、skef10_bk_rdbk
板块资讯 skef10_zs_bkzx、skef10_bk_getinfo
成份股资金 skef10_zs_cfgsj、skef10_bk_cfgsj
成份股数据 skef10_zs_scgl、skef10_bk_scgl、skef10_bk_cfgsj
成份股对比 skef10_zs_ggdb、skef10_bk_ggdb_cwdb、skef10_bk_ggdb_gzdb、skef10_bk_ggdb_scbxdb
行情涨幅图 纯前端图表,不请求 Entry
深度分析 skef10_zs_gzfx、skef10_zs_ag_gzfx、skef10_bk_sdfx、skef10_zs_jbxx_gzxx
指数基本信息(skef10_zs_ag_jbxx) skef10_zs_getinfo、skef10_zs_jbxx_zsgk、skef10_zs_jbxx_gzbd、skef10_zs_jbxx_gzxx
指数成份股(skef10_zs_ag_cfgsj) skef10_zs_cfgsj_cfgdb、skef10_zs_cfgsj_cfgjcsj、skef10_zs_cfgsj_ggcfgdb、skef10_zs_cfgsj_qz
今日提示(skef10_zs_ag_jrts) skef10_zs_jrts、skef10_zs_jrts_ggjrts
资金动向(skef10_zs_ag_zjdx) skef10_zs_zjdx、skef10_zs_zjdx_ggzjdx
指数公告(skef10_zs_ag_zsgg) skef10_zs_getinfo

大盘(dpzxf10)菜单 8 页,Entry 有 9 个:skef10_dpzx_jbxx(基本信息)、skef10_dpzx_rzrq(大盘两融)、skef10_dpzx_xgfx(新股分析)、skef10_dpzx_scgl(市场概览)、skef10_dpzx_scrq、skef10_dpzx_lhb(龙虎榜)、skef10_dpzx_hgyj、skef10_dpzx_zqyw,加上页面注册用的 skef10_dpzx_index(另有 skef10_dpzx_uitls)。这些页面还会复用 skef10_zs_getinfo、skef10_zs_jbxx_gzxx、skef10_zs_jbxx_gzbd、skef10_zs_zjdx。

发现方式:客户端 T0002\tmp\Code Cache 里存有这些页面脚本的请求 URL(http://page1.tdx.com.cn:7615/site/sketchf10/...),脚本的 createMenu() 直接写出菜单页模块名,页面脚本再引用具体 Entry。封装入口是 client.f10.market_report() 的 20 个 section。

高级调用(需手动指定 Entry 和参数)

这是用户主动使用的底层入口,不会由 SDK 自动执行。没有封装到具名方法里的 Entry,可以手动指定 Entry 和参数直接调用:

from eltdx import F10Client

f10 = F10Client(timeout=3)

response = f10.call(
    "CWServ.tdxf10_gg_gsgk",
    params=["8", "000034", ""],
)

print(response.rows[0])

对于 HQServ.* 这类使用自定义请求体的 Entry,直接传完整 body:

response = f10.call(
    "HQServ.hq_nlp_tcihq",
    [{
        "ReqId": "200743",
        "setcode": 0,
        "code": "000034",
        "Page": -1,
        "PageSize": "-1",
        "modname": "mod_tcihq.dll",
    }],
)

真实检查

python scripts/smoke/smoke_f10.py --code 000034 --timeout 8
eltdx-f10-smoke --code 000034 --timeout 8

这个脚本会检查公司概况、热点题材、公告、题材行情和估值数据。