Tdx Quant Skill
本文档基于 tqcenter.py Version 1.0.6(2026-03-27) 官方文档:https://help.tdx.com.cn/quant/docs/markdown/mindoc-1cfsjkbf8f3is/
TdxQuant 是由深圳市财富趋势科技股份有限公司研发的专业量化投研平台,本 Skill 通过 tqcenter.py 模块的 tq 类提供与通达信客户端交互的完整接口。
重要:Python 文件路径配置
文件目录结构
通达信安装目录\
├── Tdxw.exe # 主程序
├── PYPlugins\ # 插件目录
│ ├── TPyth.dll # 通达信Python通信DLL
│ ├── TPythClient.dll # 通达信Python通信DLL
│ ├── user\ # 用户策略目录
│ │ └── tqcenter.py # TdxQuant核心模块
│ ├── data\ # 下载数据目录
│ └── file\ # 发送文件目录
Python 策略文件可以放在任意位置。
导入 tqcenter 前,必须将通达信安装目录的 PYPlugins\user 路径添加到 sys.path。使用 sys.path.insert(0, ...) 确保加载正确的 tqcenter.py。
获取通达信安装目录
通达信Tdxw的安装目录存储在 Windows 注册表中:
- 注册表路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\通达信金融终端64 - 键名:
InstallLocation
可通过以下 Python 代码自动读取安装目录:
import winreg
def get_tdx_install_path():
"""从注册表获取通达信安装目录"""
key_path = r"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\通达信金融终端64"
try:
with winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, key_path) as key:
install_path, _ = winreg.QueryValueEx(key, "InstallLocation")
return install_path
except FileNotFoundError:
print(f"未找到注册表项: HKLM\\{key_path}")
return None
tdx_root = get_tdx_install_path()
# tdx_root 示例: "D:\\new_tdx" 或 "E:\\App\\new_tdx_test64"
- 本技能必须检测到进程中有运行的TdxW.exe进程。
- 进程路径所在的程序目录即为通达信安装目录。
- python 文件示例中,请将
tdx_root替换为通达信安装目录。 - 如果检测不到tdxw.exe进程,请提示用户先运行通达信客户端。
- 通达信安装目录下面指定位置如果不存在tqcenter.py 文件,提示用户当前的客户端不支持TQ策略,需升级。
- 如果有多个TdxW.exe进程,请依次寻找,直到找到第一个含有tqcenter.py 文件的进程。
- 找到之后,请记住这个位置,作为
tdx_root,不用每次都查找,除非这个位置失效。
初始化示例(动态获取安装目录)
import sys, winreg, os
# 从注册表获取安装目录
key_path = r"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\通达信金融终端64"
with winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, key_path) as key:
tdx_root, _ = winreg.QueryValueEx(key, "InstallLocation")
# 添加 PYPlugins/user 到 sys.path
sys.path.insert(0, os.path.join(tdx_root, 'PYPlugins', 'user'))
from tqcenter import tq
tq.initialize(__file__)
手动指定路径(已知安装目录时)
import sys
sys.path.insert(0, 'E:/App/new_tdx_test64/PYPlugins/user')
from tqcenter import tq
tq.initialize(__file__)
关键说明:
tqcenter.py会在其上上级目录(PYPlugins/)自动定位TPythClient.dll- 使用
sys.path.insert(0, ...)而非sys.path.append(),优先加载通达信安装目录的tqcenter.py __file__为当前 Python 文件路径,用作策略唯一标识符
股票代码格式
- 上交所:
600000.SH - 深交所:
000001.SZ - 北交所:
430047.BJ - 港股:
00700.HK - 美股:
AAPL.US - 新三板:
430047.NQ - 股票期权:
10004073.SZO/10004073.SHO - 国内期货:代码.CFF / .SHF / .DCE / .CZC / .INE / .GFE
- 中证指数:
000300.CSI - 开放式基金净值:代码.OF
时间格式
- 仅日期:
YYYYMMDD(如20231231) - 含时间:
YYYYMMDDHHMMSS(如20231231150000)
常量字典
市场代码后缀(股票代码后缀)
| 后缀 | 市场编号 | 说明 |
|---|---|---|
| SZ | 0 | 深交所 |
| SH | 1 | 上交所 |
| BJ | 2 | 北交所 |
| US | 74 | 美股 |
| HK | 31 | 港股 |
| NQ | 44 | 新三板 |
| SZO | 9 | 深交所期权 |
| SHO | 8 | 上交所期权 |
| CSI | 62 | 中证指数 |
| CNI | 102 | 国证指数 |
| HG | 38 | 国内宏观指标 |
| CFF | 47 | 中金期货 |
| SHF | 30 | 上期所/上海能源 |
| DCE | 29 | 大商所 |
| CZC | 28 | 郑商所 |
| GFE | 66 | 广期所 |
| HI | 27 | 港股指数 |
| OF | 33 | 开放式基金净值 |
K线周期(period)
| 值 | 说明 |
|---|---|
'1m' |
1分钟 |
'5m' |
5分钟 |
'15m' |
15分钟 |
'30m' |
30分钟 |
'1h' |
60分钟 |
'1d' |
日线 |
'1w' |
周线 |
'1mon' |
月线 |
'1q' |
季线 |
'1y' |
年线 |
'tick' |
分笔 |
复权类型(dividend_type)
| 值 | 说明 |
|---|---|
'none' |
不复权 |
'front' |
前复权 |
'back' |
后复权 |
委托类型(order_type)
| 常量 | 值 | 说明 |
|---|---|---|
tqconst.STOCK_BUY |
0 | 买入 |
tqconst.STOCK_SELL |
1 | 卖出 |
tqconst.CREDIT_BUY |
0 | 担保品买入(信用账户) |
tqconst.CREDIT_SELL |
1 | 担保品卖出(信用账户) |
tqconst.CREDIT_FIN_BUY |
69 | 融资买入 |
tqconst.CREDIT_SLO_SELL |
70 | 融券卖出 |
报价类型(price_type)
| 常量 | 值 | 说明 |
|---|---|---|
tqconst.PRICE_MY |
0 | 自填价格 |
tqconst.PRICE_SJ |
1 | 市价 |
tqconst.PRICE_ZTJ |
2 | 涨停价/笼子上限 |
tqconst.PRICE_DTJ |
3 | 跌停价/笼子下限 |
一、初始化与关闭
tq.initialize(path, dll_path='')
初始化与通达信客户端的连接。
tq.initialize(path: str, dll_path: str = '')
path:当前 Python 文件路径(传入__file__),作为策略唯一标识dll_path:可选,自定义TPythClient.dll路径
注意:
- 函数名
"initialize"不可修改;每个策略必须有该函数 - 错误码
ErrorId='12'表示已有同名策略运行(会打印警告但不报错) - 错误码
ErrorId='6'或'7'表示连接断开,会自动触发重新初始化
tq.close()
手动关闭与通达信客户端的连接并释放资源。程序退出时也会自动调用。
二、行情数据接口
2.1 获取K线行情 get_market_data
tq.get_market_data(
field_list: List[str] = [],
stock_list: List[str] = [],
period: str = '',
start_time: str = '',
end_time: str = '',
count: int = -1,
dividend_type: Optional[str] = None,
fill_data: bool = True
) -> Dict
根据股票列表获取历史 K 线数据。
参数说明:
| 参数 | 必填 | 类型 | 说明 |
|---|---|---|---|
| field_list | N | List[str] | 需返回的字段列表;空列表返回所有字段 |
| stock_list | Y | List[str] | 股票代码列表 |
| period | Y | str | K线周期 |
| start_time | N | str | 开始时间 |
| end_time | N | str | 结束时间;未传则默认当前时间 |
| count | N | int | count>0:取截止 end_time 最近 n 条;count<=0:使用 start_time/end_time 区间 |
| dividend_type | N | str | 复权类型:'none'(不复权)、'front'(前复权)、'back'(后复权) |
| fill_data | N | bool | 是否向前填充缺失数据,默认 True |
返回字段:
| 字段 | 类型 | 说明 |
|---|---|---|
| Date | str | 日期 |
| Time | str | 时间 |
| Open | str | 开盘价(元) |
| High | str | 最高价(元) |
| Low | str | 最低价(元) |
| Close | str | 收盘价(元) |
| Volume | str | 成交量(手) |
| Amount | str | 成交额(万元) |
| ForwardFactor | str | 前复权因子(仅 dividend_type=none 时有效) |
返回值: Dict,键为字段名,值为 pd.DataFrame(行=时间,列=股票代码)
重要注意:
count>0时start_time失效,end_time若未传默认为当前时间- 一次最多返回 24000 条数据,获取完整分钟线需分批
- 后复权数据与取的数据个数有关,只在返回的数据中进行后复权
dividend_type=None(Python None,非字符串)时默认不复权
数据样本:
{'Close': 688318.SH
2025-12-24 131.58,
'Volume': 688318.SH
2025-12-24 2257325.0}
2.2 获取实时行情快照 get_market_snapshot
tq.get_market_snapshot(
stock_code: str,
field_list: List = []
) -> Dict
获取指定股票的最新行情快照数据。
参数说明:
stock_code:单个股票代码,如'300505.SZ'field_list:可选,指定返回字段(大小写不敏感);空列表返回所有字段
完整返回字段:
| 字段 | 类型 | 说明 |
|---|---|---|
| ItemNum | str | 快照笔数 |
| LastClose | str | 前收盘价 |
| Open | str | 开盘价 |
| Max | str | 最高价 |
| Min | str | 最低价 |
| Now | str | 现价 |
| Volume | str | 总手 |
| NowVol | str | 现手 |
| Amount | str | 总成交金额 |
| Inside | str | 内盘(板块指数时为跌停家数) |
| Outside | str | 外盘(板块指数时为涨停家数) |
| TickDiff | str | 笔涨跌 |
| InOutFlag | str | 内外盘标志:0=Buy, 1=Sell, 2=Unknown |
| Jjjz | str | 基金净值 |
| Buyp | List[str] | 五档买价列表 |
| Buyv | List[str] | 五档买盘量列表 |
| Sellp | List[str] | 五档卖价列表 |
| Sellv | List[str] | 五档卖盘量列表 |
| UpHome | str | 上涨家数(对指数有效) |
| DownHome | str | 下跌家数(对指数有效) |
| Before5MinNow | str | 5分钟前价格 |
| Average | str | 均价 |
| XsFlag | str | 小数位数 |
| Zangsu | str | 涨速 |
| ZAFPre3 | str | 3日涨幅 |
数据样本:
{'ItemNum': '3342', 'LastClose': '34.21', 'Open': '33.78', 'Max': '36.49',
'Min': '32.50', 'Now': '35.06', 'Volume': '122881', 'NowVol': '1449',
'Amount': '43068.48', 'Inside': '60373', 'Outside': '62509',
'Buyp': ['35.05', '35.04', '35.02', '35.01', '35.00'],
'Buyv': ['154', '9', '49', '136', '154'],
'Sellp': ['35.06', '35.07', '35.08', '35.09', '35.10'],
'Sellv': ['4', '31', '139', '4', '4'],
'Average': '35.05', 'Zangsu': '-0.25', 'ZAFPre3': '-1.83', 'ErrorId': '0'}
2.3 获取股票基础信息 get_stock_info
tq.get_stock_info(
stock_code: str,
field_list: List = []
) -> Dict
注意:field_list 不能为空,必须明确指定字段列表。
完整返回字段(84个):
基础信息
| 字段 | 说明 |
|---|---|
| Name | 证券名称 |
| Unit | 交易单位 |
| VolBase | 量比的基量 |
| MinPrice | 最小价格变动 |
| XsFlag | 价格小数位数 |
| Fz | 开收市时间(4段,8元素列表) |
| DelayMin | 延时分钟数 |
| QHVolBaseRate | 期货期权的每手乘数 |
| HKVolBaseRate | 港股/日股/新加坡股每手股数 |
| BelongHS300 | 是否属于沪深300 |
| BelongHasKQZ | 是否含可转债 |
| BelongRZRQ | 是否是融资融券标的 |
| BelongHSGT | 是否属于沪深股通 |
| IsHKGP | 是否是港股 |
| IsQH | 是否是期货 |
| IsQQ | 是否是期权 |
| IsSTGP | 是否是ST股票 |
| IsQuitGP | 是否是退市整理板股票 |
| TodayDRFlag | 当天是否有除权除息(沪深京) |
| HSStockKind | 沪深京品种类型:0=指数,1=A股主板,2=北证A股,3=创业板,4=科创板,5=B股,6=债券,7=基金,8=权重,9=其它,10=非沪深京品种 |
股本数据
| 字段 | 说明 |
|---|---|
| ActiveCapital | 流通股本(万股) |
| J_zgb | 总股本(万股) |
| J_bg | B股(万股) |
| J_hg | H股(万股) |
财务数据(万元)
| 字段 | 说明 |
|---|---|
| J_zzc | 总资产 |
| J_ldzc | 流动资产 |
| J_gdzc | 固定资产 |
| J_wxzc | 无形资产 |
| J_ldfz | 流动负债 |
| J_cqfz | 少数股东权益 |
| J_zbgjj | 资本公积金 |
| J_jzc | 股东权益/净资产 |
| J_yysy | 营业收入 |
| J_yycb | 营业成本 |
| J_yszk | 应收账款 |
| J_yyly | 营业利润 |
| J_tzsy | 投资收益 |
| J_jyxjl | 经营现金净流量 |
| J_zxjl | 总现金净流量 |
| J_ch | 存货 |
| J_lyze | 利润总额 |
| J_shly | 税后利润 |
| J_jly | 净利润 |
| J_wfply | 未分配利益 |
每股指标
| 字段 | 说明 |
|---|---|
| J_jyl | 净资产收益率 |
| J_mgwfp | 每股未分配 |
| J_mgsy | 每股收益(折算为全年) |
| J_mgsy2 | 季报每股收益 |
| J_mggjj | 每股公积金 |
| J_mgjzc | 每股净资产 |
| J_mgjzc2 | 季报每股净资产 |
| J_gdqyb | 股东权益比 |
| J_gdrs | 股东人数 |
| J_HalfYearFlag | 报告期月份(3,6,9,12) |
| J_start | 上市日期 |
行业与地域
| 字段 | 说明 |
|---|---|
| tdx_dycode | 通达信地域代码 |
| tdx_dyname | 通达信地域 |
| rs_hycode_sim | 通达信行业代码 |
| rs_hyname | 通达信行业 |
| blockzscode | 所属的行业板块指数代码 |
| underly_setcode | 标的市场代码(如ETF跟踪的指数市场) |
| underly_code | 标的代码(如ETF跟踪的指数代码) |
数据样本:
{
'Name': '财富趋势', 'Unit': '100', 'VolBase': '102.22', 'MinPrice': '0.01',
'XsFlag': '2', 'Fz': ['570', '690', '780', '900', '900', '900', '900', '900'],
'DelayMin': '0', 'QHVolBaseRate': '0', 'HKVolBaseRate': '0',
'BelongHS300': '0', 'BelongHasKQZ': '0', 'BelongRZRQ': '1',
'BelongHSGT': '1', 'IsHKGP': '0', 'IsQH': '0', 'IsQQ': '0',
'IsSTGP': '0', 'IsQuitGP': '0', 'TodayDRFlag': '0', 'HSStockKind': '4',
'ActiveCapital': '25611.94', 'J_zgb': '25611.94', 'J_bg': '0.00', 'J_hg': '0.00',
'J_zzc': '389036.97', 'J_ldzc': '235598.84', 'J_gdzc': '972.62',
'J_wxzc': '1184.64', 'J_ldfz': '17412.97', 'J_cqfz': '73.15',
'J_zbgjj': '157998.02', 'J_jzc': '370454.03', 'J_yysy': '19827.85',
'J_yycb': '4258.70', 'J_yszk': '2726.99', 'J_yyly': '20836.07',
'J_tzsy': '5091.96', 'J_jyxjl': '5432.08', 'J_zxjl': '9779.30',
'J_ch': '61.84', 'J_lyze': '20829.85', 'J_shly': '18421.45',
'J_jly': '18421.34', 'J_wfply': '175521.63', 'J_jyl': '4.97',
'J_mgwfp': '6.85', 'J_mgsy': '0.96', 'J_mgsy2': '0.00',
'J_mggjj': '6.17', 'J_mgjzc': '14.46', 'J_mgjzc2': '14.46',
'J_gdqyb': '0.95', 'J_gdrs': '24154.00', 'J_HalfYearFlag': '9',
'J_start': '20200427', 'tdx_dycode': '18', 'tdx_dyname': '深圳板块',
'rs_hycode_sim': 'X4202', 'rs_hyname': '软件服务',
'blockzscode': '881355', 'underly_setcode': '0', 'underly_code': '',
'ErrorId': '0'
}
2.4 获取股票所属板块 get_relation
tq.get_relation(stock_code: str = '') -> List[Dict]
获取指定股票所属的全部板块信息。
参数说明:
stock_code:股票代码,如'688318.SH'
返回字段:
| 字段 | 说明 |
|---|---|
| BlockCode | 板块代码(无板块代码的板块返回 "0") |
| BlockName | 板块名称 |
| BlockType | 板块类型(行业、地区、概念、风格、指数等) |
| GPNume | 成份股数量 |
数据样本:
[{'BlockCode': '881355.SH', 'BlockName': '软件服务', 'BlockType': '行业', 'GPNume': '234'},
{'BlockCode': '880218.SH', 'BlockName': '深圳板块', 'BlockType': '地区', 'GPNume': '427'},
{'BlockCode': '880592.SH', 'BlockName': '互联金融', 'BlockType': '概念', 'GPNume': '211'},
{'BlockCode': '880948.SH', 'BlockName': '人工智能', 'BlockType': '概念', 'GPNume': '1049'},
{'BlockName': '沪股通标的', 'BlockType': '风格', 'GPNume': '1763'},
{'BlockName': '中证500', 'BlockType': '指数', 'GPNume': '500'}]
from tqcenter import tq
tq.initialize(__file__)
gp_block_res = tq.get_relation(stock_code='688318.SH')
print(gp_block_res)
2.6 获取分红配送数据 get_divid_factors
tq.get_divid_factors(
stock_code: str,
start_time: str,
end_time: str
) -> pd.DataFrame
返回 DataFrame 列:
Type:类型;Bonus:每10股分红;AllotPrice:配股价;ShareBonus:送股比例;Allotment:配股比例
2.7 获取更多股票信息 get_more_info
tq.get_more_info(
stock_code: str = '',
field_list: List = []
) -> Dict
获取股票更多扩展信息,包含涨幅系列、主力净额、L2数据、封单、PE/PB/市值等上百个字段。field_list 为空返回所有字段。
完整返回字段(100+个):
基本信息
| 字段 | 说明 |
|---|---|
| MainBusiness | 主营构成 |
| SafeValue | 安全分 |
| ShineValue | 亮点数 |
| ShapeValue | 短期形态+中期形态+长期形态编号 |
| TPFlag | 停牌标识 |
| ZTPrice | 涨停价 |
| DTPrice | 跌停价 |
| HqDate | 行情日期 |
行情指标
| 字段 | 说明 |
|---|---|
| fHSL | 换手率 |
| fLianB | 量比 |
| Wtb | 委比 |
| Zsz | 总市值(亿) |
| Ltsz | 流通市值(亿) |
| vzangsu | 量涨速 |
| Fzhsl | 分钟换手率 |
| FzAmo | 2分钟金额(万元) |
| VOpenZAF | 抢筹涨幅 |
涨幅系列
| 字段 | 说明 |
|---|---|
| ZAF | 涨幅 |
| ZAFYesterday | 昨日涨幅 |
| ZAFPre2D | 前天涨幅 |
| ZAFPre5 | 5日涨幅 |
| ZAFPre10 | 10日涨幅 |
| ZAFPre20 | 20日涨幅 |
| ZAFPre30 | 30日涨幅 |
| ZAFPre60 | 60日涨幅 |
| ZAFYear | 年初至今涨幅 |
| ZAFPreMyMonth | 涨幅(本月来) |
| ZAFPreOneYear | 涨幅(一年来) |
主力资金
| 字段 | 说明 |
|---|---|
| Zjl | 主买净额(万元) |
| Zjl_HB | 主力净流入(万元) |
L2数据
| 字段 | 说明 |
|---|---|
| TotalBVol | 总买量 |
| TotalSVol | 总卖量 |
| BCancel | 总撤买量 |
| SCancel | 总撤卖量 |
| L2TicNum | L2逐笔成交数 |
| L2OrderNum | L2逐笔委托数 |
封单与竞价
| 字段 | 说明 |
|---|---|
| FCAmo | 封单额(万元) |
| FCb | 封成比 |
| OpenAmo | 开盘金额(万元)(A股和板块指数有效) |
| OpenZTBuy | 竞价涨停买入金额(万元) |
| OpenFDE | 开盘封单额(万元) |
| OpenAmoPre1 | 昨开盘金额(万元) |
| OpenVolPre1 | 昨开盘量 |
| CJJEPre1 | 昨成交额(万元) |
| CJJEPre3 | 3日成交额(万元) |
| FDEPre1 | 昨封单额(万元) |
| FDEPre2 | 前封单额(万元) |
涨停相关
| 字段 | 说明 |
|---|---|
| ZTGPNum | 板块指数的涨停家数 |
| LastStartZT | 几天 |
| LastZTHzNum | 几板 |
| EverZTCount | 连板天 |
| ConZAFDateNum | 连涨天数 |
| YearZTDay | 年涨停天数 |
估值与价格
| 字段 | 说明 |
|---|---|
| MA5Value | 5日均价 |
| HisHigh | 52周最高 |
| HisLow | 52周最低 |
| IPO_Price | 发行价 |
| More_YJL | ETF,LOF溢价率 |
| BetaValue | 贝塔系数 |
| DynaPE | 动态市盈率 |
| MorePE | 市盈率(港股:动,其他扩展:静) |
| StaticPE_TTM | 市盈率(TTM) |
| DYRatio | 股息率 |
| PB_MRQ | 市净率(MRQ) |
股票属性
| 字段 | 说明 |
|---|---|
| IsT0Fund | 是否是T+0基金 |
| IsZCZGP | 是否是注册制A股 |
| IsKzz | 是否可转债 |
| Kzz_HSCode | 可转债对应的正股代码 |
| QHMainYYMM | 主力合约关联的月份(期货),主力和次主力 |
财务扩展
| 字段 | 说明 |
|---|---|
| FreeLtgb | 自由流通股本(万) |
| Yield | 应计利息(债券),占款天数(回购) |
| KfEarnMoney | 扣非净利润(万元) |
| RDInputFee | 研发费用(万元) |
| CashZJ | 货币资金(万元) |
| PreReceiveZJ | 合同负债(万元) |
| OtherQYJzc | 其它权益工具(万元) |
| StaffNum | 员工人数 |
近期事件日期
| 字段 | 说明 |
|---|---|
| RecentGGJYDate | 最近北上大额交易日 |
| RecentHGDate | 最近回购预案日 |
| RecentIncentDate | 最近股权激励预案日 |
| NoticeDate_Recent | 最近业绩预告日 |
| RecentReleaseDate | 最近解禁日 |
| RecentDZDate | 最近定增日 |
| ReportDate | 最近财报公告日期 |
| ZTDate_Recent | 近2年最近涨停板日期 |
| DTDate_Recent | 近2年最近跌停板日期 |
| TopDate_Recent | 近2年最近龙虎榜日期 |
| StopJYDate_Recent | 最近停牌日期 |
涨停跌停的判断:用get_more_info取FCAmo来判断涨停跌停,大于0是涨停,小于0是跌停。
数据样本:
{
'MainBusiness': '软件服务收入', 'SafeValue': '98', 'ShineValue': '3',
'ShapeValue': '101308', 'TPFlag': '0', 'ZTPrice': '151.62', 'DTPrice': '101.08',
'HqDate': '20260227', 'fHSL': '0.86', 'fLianB': '0.89', 'Wtb': '-0.66',
'Zsz': '326.91', 'Ltsz': '326.91', 'vzangsu': '2.17', 'Fzhsl': '0.12',
'FzAmo': '514.92', 'VOpenZAF': '0.00', 'ZAF': '1.02', 'ZAFYesterday': '-1.21',
'ZAFPre2D': '1.99', 'ZAFPre5': '-1.56', 'ZAFPre10': '-3.44', 'ZAFPre20': '-10.76',
'ZAFPre30': '-10.13', 'ZAFPre60': '-1.59', 'ZAFYear': '-3.54',
'ZAFPreMyMonth': '-5.23', 'ZAFPreOneYear': '10.27', 'Zjl': '0.00', 'Zjl_HB': '0.00',
'TotalBVol': '1295.00', 'TotalSVol': '3555.00', 'BCancel': '42606.00',
'SCancel': '40266.00', 'L2TicNum': '6880', 'L2OrderNum': '29448',
'FCAmo': '0.00', 'FCb': '0.00', 'OpenAmo': '1069400.00', 'OpenZTBuy': '0.00',
'OpenFDE': '0.00',
'ZTGPNum': '0', 'EverZTCount': '0', 'ConZAFDateNum': '1', 'YearZTDay': '0',
'MA5Value': '126.56', 'HisHigh': '180.86', 'HisLow': '83.41', 'IPO_Price': '107.41',
'More_YJL': '0.00', 'BetaValue': '2.31', 'DynaPE': '133.10', 'MorePE': '107.56',
'StaticPE_TTM': '94.99', 'DYRatio': '0.28', 'PB_MRQ': '8.82',
'IsT0Fund': '0', 'IsZCZGP': '1', 'IsKzz': '0', 'QHMainYYMM': '0',
'FreeLtgb': '7935.14', 'Yield': '106.94', 'KfEarnMoney': '9778.22',
'RDInputFee': '5894.58', 'CashZJ': '60954.52', 'StaffNum': '446',
'RecentReleaseDate': '20230427', 'ReportDate': '20251031',
'ZTDate_Recent': '20241008', 'TopDate_Recent': '20250625',
'ErrorId': '0'
}
2.8 获取股本信息 get_gb_info
tq.get_gb_info(
stock_code: str = '',
date_list: List[str] = [],
count: int = 1
) -> Dict
参数说明:
date_list:日期列表,格式YYYYMMDD;须从小到大排序;len(date_list)必须 ≥countcount:要获取的日期数量,必须 ≥ 1
返回字段:
| 字段 | 说明 |
|---|---|
| Date | 日期 |
| Zgb | 总股本 |
| Ltgb | 流通股本 |
数据样本:
[
{'Date': 20250101, 'Zgb': 182942480.0, 'Ltgb': 182942480.0},
{'Date': 20250601, 'Zgb': 182942480.0, 'Ltgb': 182942480.0}
]
2.9 获取可转债信息 get_kzz_info
tq.get_kzz_info(
stock_code: str = '',
field_list: List[str] = []
) -> Dict
完整返回字段:
| 字段 | 说明 |
|---|---|
| KZZCode | 可转债代码 |
| HSCode | 正股代码 |
| ZGPrice | 转股价格 |
| CurRate | 当期利率 |
| RestScope | 剩余规模(万) |
| PutBack | 回售触发价 |
| ForceRedeem | 强赎触发价 |
| ZGDate | 转股日 |
| EndPrice | 到期价 |
| EndDate | 到期日期 |
| ZGRate | 转股比率% |
| RealValue | 纯债价值 |
| ExpireYield | 到期收益率% |
| KZZScore | 可转债评级 |
| HSScore | 主体评级 |
| AGPrice | 正股当前价格 |
| KZZPrice | 可转债当前价格 |
| KZZYj | 溢价率 |
| ZGValue | 转股价值 |
kzz_info = tq.get_kzz_info(stock_code='123039.SZ')
2.10 获取新股申购信息 get_ipo_info
tq.get_ipo_info(
ipo_type: int = 0,
ipo_date: int = 0
) -> list
ipo_type:0=新股申购,1=新发债,2=两者都返回ipo_date:0=只返回今天,1=今天及以后
返回字段:
| 字段 | 说明 |
|---|---|
| code | 申购代码 |
| name | 证券名称 |
| SGCode | 申购代码 |
| SGDate | 申购日期 |
| SGPrice | 申购价格 |
| PE_Issue | 市盈率 |
| MaxSG | 最大申购额度 |
| setcode | 市场代码:0=沪市,1=深市 |
数据样本:
[
{'MaxSG': '0.00', 'PE_Issue': '0.00', 'SGCode': '371036', 'SGDate': '20251226',
'SGPrice': '100.00', 'code': '301036', 'name': '双乐转债', 'setcode': '0'},
{'MaxSG': '0.00', 'PE_Issue': '0.00', 'SGCode': '718676', 'SGDate': '20251225',
'SGPrice': '100.00', 'code': '688676', 'name': '金05转债', 'setcode': '1'}
]
2.11 获取跟踪指数的ETF信息 get_trackzs_etf_info
tq.get_trackzs_etf_info(zs_code: str = '') -> List[Dict]
获取跟踪某一指数的全部ETF基金信息。
zs_code:指数代码,如'000300.CSI'(沪深300)、'950162.CSI'(科创芯片设计)
返回字段:
| 字段 | 说明 |
|---|---|
| Code | ETF代码 |
| Name | ETF名称 |
| NowPrice | 现价 |
| PreClose | 昨收 |
| IOPV | 净值 |
| Zgb | 净额(万份) |
| Sz | 规模(亿元) |
数据样本:
[{'Code': '589210.SH', 'Name': '科创芯片设计ETF', 'NowPrice': '1.208',
'PreClose': '1.192', 'IOPV': '1.2071', 'Zgb': '7646.90', 'Sz': '0.92'}, ...]
三、专业数据接口
3.1 获取专业财务数据 get_financial_data
tq.get_financial_data(
stock_list: List[str] = [],
field_list: List[str] = [],
start_time: str = '',
end_time: str = '',
report_type: str = 'report_time'
) -> Dict
获取财务报表数据(字段 FN1~FN584),需要客户端下载专业财务数据包。
report_type:'announce_time'(按公告时间)或'tag_time'(按标签时间),默认按报告期- 返回值:
Dict,键为股票代码,值为pd.DataFrame
常用字段(完整字段请参考官方文档):
| 字段 | 说明 |
|---|---|
| FN1 | 基本每股收益 |
| FN2 | 扣除非经常性损益每股收益 |
| FN3 | 每股未分配利润 |
| FN4 | 每股净资产 |
| FN5 | 每股资本公积金 |
| FN6 | 净资产收益率 |
| FN7 | 每股经营现金流量 |
| FN8 | 货币资金 |
| FN21 | 流动资产合计 |
| FN40 | 资产总计 |
| FN54 | 流动负债合计 |
| FN63 | 负债合计 |
| FN64 | 实收资本(或股本) |
| FN68 | 未分配利润 |
| FN72 | 所有者权益合计 |
| FN73 | 负债和所有者权益合计 |
| FN107 | 经营活动产生的现金流量净额 |
| FN119 | 投资活动产生的现金流量净额 |
| FN128 | 筹资活动产生的现金流量净额 |
| FN131 | 现金及现金等价物净增加额 |
| FN134 | 净利润 |
返回字段: announce_time(公告日期)、tag_time(报告期)+ 上述财务字段
3.2 按年度/季度获取财务数据 get_financial_data_by_date
tq.get_financial_data_by_date(
stock_list: List[str] = [],
field_list: List[str] = [],
year: int = 0,
mmdd: int = 0
) -> Dict
year:年份(如2023);0返回最新mmdd:报告期月日(如331=一季报,630=中报,930=三季报,1231=年报);0返回最新
3.3 获取股票交易数据 get_gpjy_value
tq.get_gpjy_value(
stock_list: List[str] = [],
field_list: List[str] = [],
start_time: str = '',
end_time: str = ''
) -> Dict
获取股票市场交易数据(字段 GP1~GP46),包含:股东人数、龙虎榜、融资融券、大宗交易、陆股通、涨停数据等。
完整返回字段(GP1~GP46):
| 字段 | 说明 |
|---|---|
| GP01 | 股东人数 股东户数(户) |
| GP02 | 龙虎榜 买入总计(万元) 卖出总计(万元) |
| GP03 | 融资融券1 融资余额(万元) 融券余量(股) |
| GP04 | 大宗交易 成交均价(元) 成交额(万元) |
| GP05 | 增减持1 成交均价(元) 变动股数(股) |
| GP06 | 陆股通持股量 持股数量(股) |
| GP07 | 陆股通市场成交净额 陆股通市场净买入(万元) |
| GP08 | 龙虎榜机构(卖方)数据 卖方机构个数 机构卖出金额(万元) |
| GP09 | 龙虎榜机构(买方)数据 买方机构个数 机构买入金额(万元) |
| GP10 | 近3月机构调研情况 近3月机构调研次数 近3月调研机构数量 |
| GP11 | 融资融券2 融资买入额(万元) 融资偿还额(万元) |
| GP12 | 融资融券3 融券卖出量(股) 融券偿还量(股) |
| GP13 | 融资融券4 融资净买入(万元) 融券净卖出(股) |
| GP14 | 涨停数据 涨停金额(万元) 开板次数 |
| GP15 | 涨跌停 涨跌停状态 封单金额(万元) |
| GP16 | 总市值 总市值(万元) |
| GP17 | 龙虎榜营业部数据 买入金额(万元) 卖出金额(万元) |
| GP18 | 龙虎榜沪深股通数据 买入金额(万元) 卖出金额(万元) |
| GP19 | 每周股票质押数量 无限售股份质押数(万) 有限售股份质押数(万) |
| GP20 | 每周股票质押比例 质押比例(%) |
| GP21 | 股息率 股息率(%) |
| GP22 | 涨跌停 封成比 封流比 |
| GP23 | 拟增减持 拟增持数量(万股) 拟减持数量(万股) |
| GP24 | 涨停 首次涨停时间 涨停最大封单额(万) |
| GP25 | 盘前盘后成交量 开盘成交量(手) 盘后固定成交量(手) |
| GP26 | 拟增减持金额 拟增持金额(万元) 拟减持金额(万元) |
| GP27 | 人气排名 市场人气排名 行业人气排名 |
| GP28 | 股票回购 回购均价(元) 回购数量(万股) |
| GP29 | 证券信息 是否复牌日 是否更名日 |
| GP30 | 分红送转 派息金额(万元) 送转数量(股) |
| GP31 | 转融券 期初余量(股) 期末余量(股) |
| GP32 | 转融券 融出数量(股) 融出市值(元) |
| GP33 | 跌停数据 跌停金额(万元) 开板次数 |
| GP34 | 跌停 首次跌停时间 跌停最大封单额(万) |
| GP35 | 增减持2 增持数量(股) 减持数量(股) |
| GP36 | 竞价涨停买 买入金额(万元) |
| GP37 | 龙虎榜2 上榜类型连续交易日(天) |
| GP38 | 涨停相关1 近1年涨停次数 近1年溢价5%次数 |
| GP39 | 涨停相关2 近1年首板封板率(%) 近1年次日红盘率(%) |
| GP40 | 涨停相关3 近1年连板率(%) 最后涨停时间 |
| GP41 | 股权登记日 配股股权登记日 |
| GP42 | 龙虎榜专业机构买卖净额 买方成交净额(万元) 卖方成交净额(万元) |
| GP43 | 配股实施 配股价格(元) 配股数量(万股) |
| GP44 | 股票评分 综合评分 |
| GP45 | 评级系数 评级系数 |
| GP46 | 拟询价转让 拟转让股数(万股) 拟转让占总股本(%) |
数据样本:
{'688318.SH': {'GP3': [{'Date': '20250102', 'Value': ['141405.89', '11113.00']}]}}
3.4 按日期获取股票交易数据 get_gpjy_value_by_date
tq.get_gpjy_value_by_date(
stock_list: List[str] = [],
field_list: List[str] = [],
year: int = 0,
mmdd: int = 0
) -> Dict
3.5 获取板块交易数据 get_bkjy_value
tq.get_bkjy_value(
stock_list: List[str] = [],
field_list: List[str] = [],
start_time: str = '',
end_time: str = ''
) -> Dict
获取板块级别市场交易数据(字段 BK5~BK19),包含:PE/PB/PS/PC、市值、涨跌停数、融资融券等。
完整返回字段(BK5~BK19):
| 字段 | 说明 |
|---|---|
| BK5 | 市盈率TTM 整体法 算术平均 |
| BK6 | 市净率MRQ 整体法 算术平均 |
| BK7 | 市销率TTM 整体法 算术平均 |
| BK8 | 市现率TTM 整体法 算术平均 |
| BK9 | 涨跌数 上涨家数 下跌家数 |
| BK10 | 板块总市值(亿元) 整体法 算术平均 |
| BK11 | 板块流通市值(亿元) 整体法 算术平均 |
| BK12 | 涨停数 涨停家数 曾涨停家数 |
| BK13 | 跌停数 跌停家数 曾跌停家数 |
| BK14 | 涨停数据 市场高度(不含ST股和未开板新股) 2板及以上涨停个数 |
| BK15 | 融资融券 沪深京融资余额(万元) 沪深京融券余额(万元) |
| BK16 | 陆股通资金流入 沪股通流入金额(亿元) 深股通流入金额(亿元) |
| BK17 | 开盘成交数 开盘成交额(万元) 开盘成交量(万股) |
| BK18 | 板块股息率(%) 算数平均 整体法 |
| BK19 | 板块自由流通市值(亿元) 整体法 算术平均 |
数据样本:
{
'880660.SH': {
'BK5': [{'Date': '20250102', 'Value': ['55.28', '55.50']}],
'BK6': [{'Date': '20250102', 'Value': ['4.62', '3.79']}],
'BK9': [{'Date': '20250102', 'Value': ['0.00', '35.00']}]
}
}
3.6 按日期获取板块交易数据 get_bkjy_value_by_date
tq.get_bkjy_value_by_date(
stock_list: List[str] = [],
field_list: List[str] = [],
year: int = 0,
mmdd: int = 0
) -> Dict
3.7 获取市场交易数据 get_scjy_value
tq.get_scjy_value(
field_list: List[str] = [],
start_time: str = '',
end_time: str = ''
) -> Dict
获取市场整体宏观交易数据(字段 SC01~SC42),包含:融资融券、陆股通、涨停、打板资金、ETF规模、新开户等。无需传 stock_list。
完整返回字段(SC01~SC42):
| 字段 | 说明 |
|---|---|
| SC01 | 融资融券 沪深京融资余额(万元) 沪深京融券余额(万元) |
| SC02 | 陆股通资金流入 沪股通流入金额(亿元) 深股通流入金额(亿元) |
| SC03 | 沪深京涨停股个数 涨停股个数 曾涨停股个数 |
| SC04 | 沪深京跌停股个数 跌停股个数 曾跌停股个数 |
| SC05 | 上证50股指期货 净持仓(手) |
| SC06 | 沪深300股指期货 净持仓(手) |
| SC07 | 中证500股指期货 净持仓(手) |
| SC08 | ETF基金规模份额数据 ETF基金规模(亿份) ETF净申赎(亿份) |
| SC09 | 沪月新开A股账户 沪月新开A股账户(万户) |
| SC10 | 增减持统计 增持额(万元) 减持额(万元) |
| SC11 | 大宗交易 溢价的大宗交易额(万元) 折价的大宗交易额(万元) |
| SC12 | 限售解禁 限售解禁计划额(亿元) 限售解禁股份实际上市金额(亿元) |
| SC13 | 分红 市场总分红额(亿元) |
| SC14 | 募资 市场总募资额(亿元) |
| SC15 | 打板资金 封板成功资金(亿元) 封板失败资金(亿元) |
| SC16 | 龙虎榜 买入总金额(亿元) 卖出总金额(亿元) |
| SC17 | 龙虎榜机构数据 买入金额(亿元) 卖出金额(亿元) |
| SC18 | 龙虎榜营业部数据 买入金额(亿元) 卖出金额(亿元) |
| SC19 | 龙虎榜沪深股通数据 买入金额(亿元) 卖出金额(亿元) |
| SC20 | 陆股通净买入 沪股通净买入额(亿元) 深股通净买入额(亿元) |
| SC21 | 每周无限售质押率 深市质押率(%) 沪市质押率(%) |
| SC22 | 每周有限售质押率 深市质押率(%) 沪市质押率(%) |
| SC23 | 连板家数 连板股个数(包含ST) 连板股个数(不含ST) |
| SC24 | 沪深京涨跌停股个数 涨停股个数(不含ST) 跌停股个数(不含ST) |
| SC25 | 融资融券 沪深京融资买入额(万元) 沪深京融券卖出量(万股) |
| SC26 | 每周市场质押比 每周市场质押比例(%) |
| SC27 | 央行公开市场净投放 央行公开市场净投放(亿元) |
| SC28 | 历史A股新高新低数 历史新高A股个数 历史新低A股个数 |
| SC29 | 120天A股新高新低数 120天新高A股个数 120天新低A股个数 |
| SC30 | 涨停数据 市场高度 2板以上涨停个数 |
| SC31 | 涨跌家数 涨家数 跌家数 |
| SC32 | 20天A股新高新低数 20天新高A股个数 20天新低A股个数 |
| SC33 | 市场总封单金额 涨停封单金额(亿元) 跌停封单金额(亿元) |
| SC34 | 涨跌股成交量 上涨股成交量(万手) 下跌股成交量(万手) |
| SC35 | 涨停数据 换手板家数 回封率(%) |
| SC36 | 曾涨跌停股个数 曾涨停股个数 曾跌停股个数 |
| SC37 | 转融券 融出市值(亿元) 期末余额(亿元) |
| SC38 | ETF基金规模金额数据 ETF基金规模(亿元) ETF净申赎(亿元) |
| SC39 | 涨跌5%家数 涨幅大于等于5%家数 跌幅大于等于5%家数 |
| SC40 | 陆股通成交 陆股通成交总额(亿元) 陆股通成交总笔(万笔) |
| SC41 | 中证1000股指期货 净持仓(手) |
| SC42 | 沪深股通成交金额 沪股通成交总额(亿元) 深股通成交总额(亿元) |
3.8 按日期获取市场交易数据 get_scjy_value_by_date
tq.get_scjy_value_by_date(
field_list: List[str] = [],
year: int = 0,
mmdd: int = 0
) -> Dict
3.9 获取股票单个数据字段 get_gp_one_data
tq.get_gp_one_data(
stock_list: List[str] = [],
field_list: List[str] = []
) -> Dict
获取股票单个数据字段(字段 GO1~GO47,不按时间序列,返回当前值),包含:发行价、一致预期EPS、解禁日、机构持股、业绩预告等。
完整返回字段(GO1~GO47):
基本信息
| 字段 | 说明 |
|---|---|
| GO1 | 发行价(元) |
| GO2 | 总发行数量(万股) |
一致预期
| 字段 | 说明 |
|---|---|
| GO3 | 一致预期目标价(元) |
| GO4 | 一致预期T年度 |
| GO5 | 一致预期T年每股收益 |
| GO6 | 一致预期T+1年每股收益 |
| GO7 | 一致预期T+2年每股收益 |
| GO8 | 一致预期T年净利润(万元) |
| GO9 | 一致预期T+1年净利润(万元) |
| GO10 | 一致预期T+2年净利润(万元) |
| GO11 | 一致预期T年营业收入(万元) |
| GO12 | 一致预期T+1年营业收入(万元) |
| GO13 | 一致预期T+2年营业收入(万元) |
| GO14 | 一致预期T年营业利润(万元) |
| GO15 | 一致预期T+1年营业利润(万元) |
| GO16 | 一致预期T+2年营业利润(万元) |
| GO17 | 一致预期T年每股净资产(元) |
| GO18 | 一致预期T+1年每股净资产(元) |
| GO19 | 一致预期T+2年每股净资产(元) |
| GO20 | 一致预期T年净资产收益率(%) |
| GO21 | 一致预期T+1年净资产收益率(%) |
| GO22 | 一致预期T+2年净资产收益率(%) |
| GO23 | 一致预期T年PE |
| GO24 | 一致预期T+1年PE |
| GO25 | 一致预期T+2年PE |
解禁与持股
| 字段 | 说明 |
|---|---|
| GO26 | 最新解禁日(YYMMDD格式) |
| GO27 | 最新解禁数量(万股) |
| GO28 | 下一报告期的预约披露时间 |
| GO29 | 最新持股机构家数 |
| GO30 | 最新机构持股总量(万股) |
| GO31 | 最新持股基金家数 |
| GO32 | 最新基金持股量(万股) |
| GO33 | 最新总股本(万股) |
| GO34 | 最新实际流通A股(万股) |
业绩预告
| 字段 | 说明 |
|---|---|
| GO35 | 最新业绩预告 报告期 |
| GO36 | 最新业绩预告 本期归母净利润下限(万元) |
| GO37 | 最新业绩预告 本期归母净利润上限(万元) |
| GO38 | 最新业绩预告 本期归母净利润预计同比增减幅下限% |
| GO39 | 最新业绩预告 本期归母净利润预计同比增减幅上限% |
| GO40 | 最新业绩快报 报告期 |
| GO41 | 最新业绩快报 归母净利润(万元) |
分红募资
| 字段 | 说明 |
|---|---|
| GO42 | 分红募资 派现总额(万元) |
| GO43 | 分红募资 募资总额(万元) |
扣非业绩预告
| 字段 | 说明 |
|---|---|
| GO44 | 最新业绩预告 本期扣非净利润下限(万元) |
| GO45 | 最新业绩预告 本期扣非净利润上限(万元) |
| GO46 | 最新业绩预告 本期扣非净利润预计同比增减幅下限% |
| GO47 | 最新业绩预告 本期扣非净利润预计同比增减幅上限% |
四、板块与股票列表接口
4.1 获取系统分类股票列表 get_stock_list
tq.get_stock_list(
market = None,
list_type: int = 0
) -> List
获取指定市场/分类的股票列表。
list_type:0=只返回代码,1=返回代码和名称([{'Code':..., 'Name':...}, ...])
market 参数完整说明:
默认为全部A股(market='5')
0:自选股 1:持仓股
5:所有A股 6:上证指数成份股 7:上证主板 8:深证主板 9:重点指数
10:所有板块指数 11:缺省行业板块 12:概念板块 13:风格板块 14:地区板块
15:缺省行业分类+概念板块 16:研究行业一级 17:研究行业二级 18:研究行业三级
21:含H股 22:含可转债 23:沪深300 24:中证500 25:中证1000
26:国证2000 27:中证2000 28:中证A500
30:REITs 31:ETF基金 32:可转债 33:LOF基金 34:所有可交易基金
35:所有沪深基金 36:T+0基金
49:金融类企业 50:沪深A股 51:创业板 52:科创板 53:北交所
91:ETF追踪的指数
92:国内期货主力合约
101:国内期货 102:港股 103:美股
使用示例:
# 获取所有A股代码
all_stocks = tq.get_stock_list(market='5')
# 获取ETF基金(含代码和名称)
etf_list = tq.get_stock_list(market='31', list_type=1)
# 获取国内期货主力合约
futures_main = tq.get_stock_list(market='92')
4.2 获取板块列表 get_sector_list
tq.get_sector_list(list_type: int = 0) -> List
获取 A 股全部板块代码列表(相当于 get_stock_list('10'))。
4.3 获取板块内股票列表 get_stock_list_in_sector
tq.get_stock_list_in_sector(
block_code: str,
block_type: int = 0,
list_type: int = 0
) -> List
参数说明:
block_code:板块代码或板块名称,如'BK0707'或'通达信88'block_type:0:板块指数代码或板块名称(默认)1:自定义板块简称(加BKCODE.前缀);特殊板块:ZXG=自选股,TJG=临时条件股2:期货板块代码(加QH.前缀)
list_type:0=只返回代码
4.4 获取用户自选股板块列表 get_user_sector
tq.get_user_sector() -> List
获取通达信客户端中用户设置的自选股板块列表。
4.5 自定义板块管理
创建板块 create_sector
tq.create_sector(block_code: str = '', block_name: str = '')
block_code:板块简称(不能为空)block_name:板块显示名称(不能为空)
删除板块 delete_sector
tq.delete_sector(block_code: str = '')
重命名板块 rename_sector
tq.rename_sector(block_code: str = '', block_name: str = '')
清空板块 clear_sector
tq.clear_sector(block_code: str = '')
清空板块内所有成分股(不删除板块本身)。
五、行情订阅接口
5.1 刷新行情缓存 refresh_cache
tq.refresh_cache(
market: str = 'AG',
force: bool = False
)
刷新快照行情和K线缓存。首次调用 get_market_snapshot 或 get_market_data 时系统会自动刷新,无需手动调用。
market 参数:
| 值 | 说明 |
|---|---|
'AG' |
A股(默认) |
'HK' |
港股 |
'US' |
美股 |
'QH' |
国内期货 |
'QQ' |
股票期权 |
'NQ' |
新三板 |
'ZZ' |
中证指数 |
'ZS' |
综合指数 |
'OF' |
开放式基金 |
force:False=距上次刷新不足10分钟则跳过;True=强制刷新
5.2 刷新历史K线缓存 refresh_kline
tq.refresh_kline(
stock_list: List[str] = [],
period: str = ''
)
参数说明:
period:仅支持'1m'、'5m'、'1d'三种- 不建议一次更新太多,会堵塞策略和客户端
5.3 订阅行情更新 subscribe_hq
tq.subscribe_hq(
stock_list: List[str] = [],
callback = None
) -> object
订阅指定股票的实时行情更新,有行情变化时自动触发回调函数。最多订阅 100 只。
回调参数格式:
def on_data(datas):
import json
d = json.loads(datas)
# d 格式:{"Code": "000001.SZ", "ErrorId": "0"}
code = d.get('Code')
error_id = d.get('ErrorId')
大量股票推荐分批订阅(每批50只):
BATCH_SIZE = 50
for i in range(0, len(stocks), BATCH_SIZE):
batch = stocks[i:i+BATCH_SIZE]
tq.subscribe_hq(stock_list=batch, callback=my_callback)
5.4 取消订阅 unsubscribe_hq
tq.unsubscribe_hq(stock_list: List[str] = [])
5.5 获取已订阅股票列表 get_subscribe_hq_stock_list
tq.get_subscribe_hq_stock_list() -> List
六、下载文件接口
download_file
tq.download_file(
stock_code: str = '',
down_time: str = '',
down_type: int = 1
)
下载通达信特定文件数据(十大股东、ETF申赎数据、舆情、综合信息等)。
文件保存至 ./PYPlugins/data 目录。
down_type:1=十大股东,2=ETF申赎,3=舆情,4=综合信息
七、与客户端交互接口
7.1 发送消息到客户端 send_message
tq.send_message(msg_str: str) -> Dict
将字符串消息发送到通达信客户端 TQ 策略管理界面显示。用 | 分行。
tq.send_message("MSG,策略运行中|买入信号数:3")
7.2 发送文件路径到客户端 send_file
tq.send_file(file_path: str) -> Dict
发送 txt/pdf/html 文件到通达信客户端展示。文件须放在 ./PYPlugins/file/ 目录。
tq.send_file("513100.txt") # 发送txt文件
tq.send_file("report.pdf") # 发送PDF文件
7.3 发送预警信号 send_warn
tq.send_warn(
stock_list: List[str] = [],
time_list: List[str] = [],
price_list: List[str] = [],
close_list: List[str] = [],
volum_list: List[str] = [],
bs_flag_list: List[str] = [],
warn_type_list: List[str] = [],
reason_list: List[str] = [],
count: int = 1
) -> Dict
发送预警信号到通达信客户端 TQ 策略信号界面。
参数说明:
| 参数 | 必填 | 说明 |
|---|---|---|
| stock_list | Y | 股票代码列表 |
| time_list | N | 时间列表(YYYYMMDDHHMMSS);缺少时补当前时间 |
| price_list | Y | 价格列表(纯数字字符串) |
| close_list | Y | 收盘/昨收价列表(纯数字字符串) |
| volum_list | Y | 成交量列表(纯数字字符串) |
| bs_flag_list | N | 买卖标志:'0'=买(红色B),'1'=卖(绿色S),'2'=未知(黄色);缺少时补 '2' |
| warn_type_list | N | 预警类型:'1' 支持双击闪电买卖;缺少时补 '-1' |
| reason_list | N | 预警原因(有效长度25个汉字);缺少时补空字符串 |
| count | Y | 信号数量,必须 > 0 |
注意: price_list、close_list、volum_list 中的元素必须为纯数字字符串;bs_flag_list 可以传空字符串 ''(等同于 '2')。
# 双击预警信号可直接打开闪电买卖界面
tq.send_warn(
stock_list=['600519.SH'],
time_list=['20260101100000'],
price_list=['1823.45'],
close_list=['1822.50'],
volum_list=['15000'],
bs_flag_list=['0'], # 买入标记
warn_type_list=['1'], # 支持双击闪电买卖
reason_list=['MA金叉信号'],
count=1
)
7.4 发送回测数据 send_bt_data
tq.send_bt_data(
stock_code: str = '',
time_list: List[str] = [],
data_list: List[List[str]] = [],
count: int = 1
) -> Dict
输出回测数据到通达信客户端显示,配合 SIGNALS_TQ 公式在K线图上展示。
参数说明:
time_list:时间列表(YYYYMMDDHHMMSS或YYYYMMDD);长度必须 ≥countdata_list:二维列表,每个子列表对应一个时间点,最多取前16个值(均为纯数字字符串)count:数据条数,必须 > 0
data_list 子列表位置与 SIGNALS_TQ ID 对应关系:
- 位置1(index 0)→
SIGNALS_TQ(1, TYPE) - 位置2(index 1)→
SIGNALS_TQ(2, TYPE) - ...以此类推,最多16个
# 发送MA5、MA10和买卖信号
tq.send_bt_data(
stock_code='688318.SH',
time_list=['20260120', '20260121'],
data_list=[
['136.60', '131.74', '1', '0'], # MA5, MA10, 买信号, 卖信号
['135.30', '131.48', '0', '1']
],
count=2
)
7.5 发送股票到自定义板块 send_user_block
tq.send_user_block(
block_code: str = '',
stocks: List[str] = [],
show: bool = False
) -> Dict
block_code:目标板块简称;为空字符串时发送到"临时条件股"板块stocks:股票代码列表;传入空列表[]= 清空板块show:是否在客户端自动跳转显示该板块
# 发送选股结果到临时条件股
tq.send_user_block(block_code='', stocks=result_list)
# 发送到自定义板块并显示
tq.send_user_block(block_code='MYBLOCK', stocks=result_list, show=True)
7.6 调用客户端功能 exec_to_tdx
tq.exec_to_tdx(url: str = '') -> Dict
让通达信客户端根据传入的 URL 或功能串执行指定操作。
参数说明:
url:功能调用串或网址;若是功能串,请以http://www.treeid开头
返回字段:
| 字段 | 说明 |
|---|---|
| ErrorId | 错误码,'0' 表示成功 |
| Msg | 返回信息(内容为传入的 url) |
| run_id | 执行 ID |
from tqcenter import tq
tq.initialize(__file__)
# 调用功能串(跳转到国内期货主界面)
exec_res1 = tq.exec_to_tdx(url='http://www.treeid/MAINQH')
# 打开网页链接(弹出浏览器窗口)
exec_res2 = tq.exec_to_tdx(url='http://www.treeid/dlghttp://www.tdx.com.cn')
print(exec_res2)
# {'ErrorId': '0', 'Msg': 'http://www.treeid/dlghttp://www.tdx.com.cn', 'run_id': '1'}
7.7 导出数据到通达信界面 print_to_tdx
tq.print_to_tdx(
df_list,
sp_name="",
xml_filename="",
jsn_filenames=None,
vertical=None,
horizontal=None,
height=None,
table_names=None
)
将多组 DataFrame 数据导出到通达信客户端 TQ 策略数据浏览中展示。
参数说明:
| 参数 | 说明 |
|---|---|
| df_list | DataFrame 列表;第一列必须是日期,后续列是指标名 |
| sp_name | 因子名称,用于生成 .sp 文件名 |
| xml_filename | 生成的 XML 文件名(含 .xml 后缀) |
| jsn_filenames | JSON 文件名列表,长度必须等于 df_list 长度 |
| vertical | 纵向排列的 table 组数,与 horizontal 二选一 |
| horizontal | 横向排列的 table 组数(优先级更高) |
| height | 各 gridctrl 高度列表(如 ["0.4", "0.6"]),不传则自动平均分配 |
| table_names | 各组表格标题列表 |
八、交易日历接口
8.1 获取交易日列表 get_trading_dates
tq.get_trading_dates(
market: str,
start_time: str,
end_time: str,
count: int = -1
) -> List
获取指定市场在时间范围内的纯交易日列表。需要先在客户端下载上证指数盘后数据。
market:如'SH'、'SZ'、'HK'等count:返回数量限制,-1返回全部
九、通达信公式接口
9.1 格式化K线数据 formula_format_data
tq.formula_format_data(data_dict: Dict = {}) -> Dict
将 get_market_data 获取的K线数据格式化为通达信公式接口可识别的格式。
输入要求: data_dict 必须包含 Amount、Volume、Close、Open、High、Low 六个字段。
返回值: Dict,键为股票代码,值为 List[Dict],每个 Dict 包含 Date、Amount、Volume、Close、Open、High、Low。
9.2 向公式设置数据 formula_set_data
tq.formula_set_data(
stock_code: str = '',
stock_period: str = '1d',
stock_data: List = [],
count: int = 1,
dividend_type: int = 0
)
在调用公式前设置公式所需的K线数据(须先用 formula_format_data 格式化)。
stock_data:formula_format_data格式化后的数据count:生效的K线条数,1 ≤ count ≤ 24000,且len(stock_data) ≥ countdividend_type:0=不复权,1=前复权,2=后复权
注意: 后设置的数据会覆盖前一次设置;与 formula_set_data_info 互相覆盖。
9.3 向公式设置数据信息 formula_set_data_info
tq.formula_set_data_info(
stock_code: str = '',
stock_period: str = '1d',
start_time: str = '',
end_time: str = '',
count: int = 0,
dividend_type: int = 0
)
count 参数:
>0:按条数(最多24000条)=0:按 start_time/end_time 区间=-1:获取全部数据=-2:使用无序列数据(count=-2时为无序列数据)
9.4 调用通达信公式(单次,需提前设置数据)
调用指标公式 formula_zb
tq.formula_zb(
formula_name: str = '',
formula_arg: str = '',
xsflag: int = -1
) -> Dict
返回: {'Data': {'DIF': [...], 'DEA': [...], ...}, 'ErrorId': '0'}
调用选股公式 formula_xg
tq.formula_xg(
formula_name: str = '',
formula_arg: str = ''
) -> Dict
返回: {'Data': {'UP3': ['0', '1', ...], ...}, 'ErrorId': '0'}
调用表达式公式 formula_exp
tq.formula_exp(
formula_name: str = '',
formula_arg: str = ''
) -> Dict
参数说明:
formula_name:公式名称(区分大小写)formula_arg:逗号分隔的数字字符串,最多16个参数,如'12,26,9'xsflag:精度控制,-1返回默认精度,最大可返回8位小数
调用前必须先设置数据(formula_set_data 或 formula_set_data_info)。
9.5 获取公式数据 formula_get_data
tq.formula_get_data() -> Dict
在调用公式后,获取当前设置的公式数据结果。
9.6 批量调用选股公式 formula_process_mul_xg ⭐推荐
tq.formula_process_mul_xg(
formula_name: str = '',
formula_arg: str = '',
return_count: int = 1,
return_date: bool = False,
stock_list: List[str] = [],
stock_period: str = '1d',
start_time: str = '',
end_time: str = '',
count: int = 0,
dividend_type: int = 0
) -> Dict
对多只股票批量调用通达信选股公式,无需提前设置数据,效率更高。
返回值格式(return_date=False 时):
{'000001.SZ': {'UP3': ['0', '1', '0']},
'600519.SH': {'UP3': ['1', '1', '0']},
'ErrorId': '0'}
返回值格式(return_date=True 时):
{'000001.SZ': {'UP3': [{'Date': '20260203', 'Value': '0'}, ...]},
'ErrorId': '0'}
重要:
- 批量调用无需
formula_set_data,且formula_set_data的设置对批量调用不生效 count太小会导致结果比客户端条件选股少(需覆盖公式最大回溯K线数)
9.7 批量调用指标公式 formula_process_mul_zb
tq.formula_process_mul_zb(
formula_name: str = '',
formula_arg: str = '',
xsflag: int = -1,
return_count: int = 1,
return_date: bool = False,
stock_list: List[str] = [],
stock_period: str = '1d',
start_time: str = '',
end_time: str = '',
count: int = 0,
dividend_type: int = 0
) -> Dict
对多只股票批量调用通达信指标公式,参数含义同 formula_process_mul_xg,额外支持 xsflag 精度控制。
返回值格式(return_date=True 时):
{'000001.SZ': {'DIF': [{'Date': '20260203', 'Value': '0.12'}, ...],
'DEA': [...]},
'ErrorId': '0'}
十、交易接口
注意: 交易接口需要先在通达信客户端登录交易账号。
10.1 获取资金账户句柄 stock_account
tq.stock_account(
account: str = '',
account_type: str = 'stock'
) -> int
account:资金账号(字符串)account_type:账号类型,如'STOCK'- 返回值 ≥ 0 为有效句柄,< 0 为无效句柄
from tqcenter import tq
tq.initialize(__file__)
account_id = tq.stock_account(account="1190008847", account_type="STOCK")
print(account_id) # 0
10.2 查询委托信息 query_stock_orders
tq.query_stock_orders(
account_id: int = -1,
stock_code: str = '',
cancelable_only: bool = False
) -> List[Dict]
account_id < 0时查询当前账户- 仅能查询当日委托
cancelable_only:是否仅查可撤委托(暂未生效)
返回字段:
| 字段 | 说明 |
|---|---|
| Wtbh | 委托编号 |
| Code | 股票代码 |
| Time | 时间(HHMMSS) |
| BSFlag | 买卖标志:0=买,1=卖,-1=撤单 |
| KPFlag | 开平标志:0=开仓,1=平仓,2=平今 |
| WTFS | 市价方式 |
| Status | 委托状态:0=无效单,1=未成交,2=部分成交,3=全部成交,4=部分成交部分撤单,5=全部撤单 |
| WtDate | 撤单标志:1=已撤,2=夜盘单 |
| WtPrice | 委托价 |
| CjPrice | 成交价 |
| CjVol | 成交数量(撤单时为负值) |
| WtVol | 委托数量(撤单时为负值) |
数据样本:
[
{'Wtbh': '48957', 'Code': '688318.SH', 'Time': '93605', 'BSFlag': -1, 'KPFlag': 0,
'WTFS': 0, 'Status': 0, 'WtPrice': '125.000', 'CjPrice': '0.000', 'CjVol': '0', 'WtVol': '1000
…(truncated)