一、环境配置(必须)
在开始之前,需要特别注意环境配置,否则可能会出现 DLL 加载失败或崩溃问题。
- 操作系统
• 必须使用 Windows 系统,因为 .dll 文件是基于 Win32 的 C++ 接口库。
- Python 版本
• 必须安装 32 位版本的 Python(x86)。
• 原因是:.dll 文件是 32 位编译的 C++ ,Python 与 DLL 的位数必须一致,否则会报错。
二、准备工作
-
获取 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"))
# 断开连接
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。
- 断开连接
TdxHqApi.TdxHq_Disconnect(ConnectionID)
五、运行结果示例
- TdxHq_Connect接口数据演示:
服务器名称 最后交易日期
深圳双线主站1 20250825
- TdxHq_GetSecurityCount接口数据演示:
c_ushort(21221) # 获取到21221支股票信息