一、环境配置(必须)
在开始之前,需要特别注意环境配置,否则可能会出现 DLL 加载失败或崩溃问题。
- 操作系统
• 必须使用 Windows 系统,因为 .dll 文件是基于 Win32 的 C++ 接口库。
- Python 版本
• 必须安装 32 位版本的 Python(x86)。
• 原因是:.dll 文件是 32 位编译的 C++ ,Python 与 DLL 的位数必须一致,否则会报错。
二、准备工作
-
打开www.tdxjk.com安装下面所需的资源
-
获取 DLL 文件:选择对应的行情接口的EXE演示版文件(例如:下载普通行情的EXE演示版文件),下载解压后获取 TdxHqApi.dll 和 TdxHQ.exe软件
-
TdxHqApi.dll: 接口包
-
TdxHQ.exe:可以获取到ip和port
三、核心代码示例
import ctypes
api_dll_path = "C:\Users\Administrator\Downloads\TdxL2HqClient202507201014\TdxHqApi.dll" # dll文件路径
# 加载 DLL
TdxHqApi = ctypes.WinDLL(api_dll_path)
# 分配缓冲区,存放返回信息
Result = ctypes.create_string_buffer(2 * 1024 * 1024) # 成功信息的数据载体,一般分配 1024 * 1024 即可
ErrInfo = ctypes.create_string_buffer(256) # 错误信息的数据载体,一般要分配256字节的空间,没有发生错误是空字符串
# 登录参数(需根据实际情况替换)
Ip = "123.123.123.123".encode("gbk") # 下载 exe软件(exe演示版) 后登录获取
Port = 1234 # 下载 exe软件(exe演示版) 后登录获取
Account = "xxx".encode("gbk") # 使用联系方式联系开通
Password = "yyy".encode("gbk") # 使用联系方式联系开通
# 调用接口进行连接
ConnectionID = TdxHqApi.TdxHq_Connect(Ip, Port, Account, Password, Result, ErrInfo) # 登录
# 输出结果
print(Result.value.decode("gbk"))
print(ErrInfo.value.decode("gbk"))
# 如果连接成功,进一步操作
if ConnectionID != -1:
Count = ctypes.c_ushort(0)
# 获取深圳市场内证券数量。参数二表示交易市场,0为深圳市场,1为上海市场
success = TdxHqApi.TdxHq_GetSecurityCount(ConnectionID, 0, ctypes.byref(Count), ErrInfo)
print(Count)
print(ErrInfo.value.decode("gbk"))
if success != -1: # 获取成功
# 获取指定市场最多 1000(开始位置-结束位置)支股票代码信息 注意: 结束位置 - 开始位置 <= 1000
# 可以使用遍历获取TdxHq_GetSecurityCount接口返回的所有股票的代码信息
success = TdxHqApi.TdxHq_GetSecurityList(
ConnectionID,
0, # 交易市场,0为深圳市场,1为上海市场
0, # 开始位置,第0支股票
ctypes.byref(ctypes.c_ushort(1000)), # 结束位置,第1000支股票
Result,
ErrInfo
)
result_decode = Result.value.decode("gbk", errors="ignore")
print(Result.value.decode("gbk"))
print(ErrInfo.value.decode("gbk"))
# 断开连接
TdxHqApi.TdxHq_Disconnect(ConnectionID)
四、代码解析
- 加载 DLL
TdxHqApi = ctypes.WinDLL(api_dll_path)
使用 ctypes.WinDLL 加载本地的行情接口 DLL。
- 创建缓冲区
Result = ctypes.create_string_buffer(2 * 1024 * 1024)
ErrInfo = ctypes.create_string_buffer(256)
Result 用于存放正常返回信息,ErrInfo 存放错误提示。
- 连接行情服务器
ConnectionID = TdxHqApi.TdxHq_Connect(Ip, Port, Account, Password, Result, ErrInfo)
如果 ConnectionID != -1,说明连接成功。
- 获取证券数量
success = TdxHqApi.TdxHq_GetSecurityCount(ConnectionID, 0, ctypes.byref(Count), ErrInfo)
参数 0 表示深圳市场,1 表示上海市场,结果存放在 Count.value。
- 获取指定市场最多 1000(开始位置-结束位置)支股票代码信息
# 获取指定市场最多 1000(开始位置-结束位置)支股票代码信息 注意: 结束位置 - 开始位置 <= 1000
# 可以使用遍历获取TdxHq_GetSecurityCount接口返回的所有股票的代码信息
success = TdxHqApi.TdxHq_GetSecurityList(
ConnectionID,
0, # 交易市场,0为深圳市场,1为上海市场
0, # 开始位置,第0支股票
ctypes.byref(ctypes.c_ushort(1000)), # 结束位置,第1000支股票
Result,
ErrInfo
)
- 断开连接
TdxHqApi.TdxHq_Disconnect(ConnectionID)
五、运行结果示例
- TdxHq_Connect接口数据演示:
服务器名称 最后交易日期
深圳双线主站1 20250825
- TdxHq_GetSecurityCount接口数据演示:
c_ushort(21221) # 获取到21221支股票信息
- TdxHq_GetSecurityList接口数据演示:
代码 一手股数 名称 保留 价格小数位数 昨收 保留 保留
000062 100 深圳华强 3805 2 32.070000 12164 9250
000063 100 中兴通讯 16517 2 45.020000 12153 9231
000065 100 北方国际 1175 2 11.900000 12154 9365
000066 100 中国长城 12457 2 18.990000 12135 9182
000068 100 华控赛格 1424 2 3.750000 11917 7049
000069 100 华侨城A 4821 2 2.400000 12127 9219
000070 100 特发信息 4152 2 11.560000 12098 9243
000078 100 海王生物 2022 2 2.760000 11924 9091
000088 100 盐 田 港 1754 2 4.630000 11971 9279
000089 100 深圳机场 1052 2 7.260000 12143 9301
000090 100 天健集团 1448 2 3.680000 12156 9317