A股股票行情交易接口Python实战-获取股票代码信息

140 阅读4分钟

一、环境配置(必须)

在开始之前,需要特别注意环境配置,否则可能会出现 DLL 加载失败或崩溃问题。

  1. 操作系统

• 必须使用 Windows 系统,因为 .dll 文件是基于 Win32 的 C++ 接口库。

  1. Python 版本

• 必须安装 32 位版本的 Python(x86)。

• 原因是:.dll 文件是 32 位编译的 C++ ,Python 与 DLL 的位数必须一致,否则会报错。

二、准备工作

  1. 打开www.tdxjk.com安装下面所需的资源

  2. 获取 DLL 文件:选择对应的行情接口的EXE演示版文件(例如:下载普通行情的EXE演示版文件),下载解压后获取 TdxHqApi.dll 和 TdxHQ.exe软件

  3. TdxHqApi.dll: 接口包

  4. 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)

四、代码解析

  1. 加载 DLL
TdxHqApi = ctypes.WinDLL(api_dll_path)

使用 ctypes.WinDLL 加载本地的行情接口 DLL。

  1. 创建缓冲区
Result = ctypes.create_string_buffer(2 * 1024 * 1024)
ErrInfo = ctypes.create_string_buffer(256)

Result 用于存放正常返回信息,ErrInfo 存放错误提示。

  1. 连接行情服务器
ConnectionID = TdxHqApi.TdxHq_Connect(Ip, Port, Account, Password, Result, ErrInfo)

如果 ConnectionID != -1,说明连接成功。

  1. 获取证券数量
success = TdxHqApi.TdxHq_GetSecurityCount(ConnectionID, 0, ctypes.byref(Count), ErrInfo)

参数 0 表示深圳市场,1 表示上海市场,结果存放在 Count.value。

  1. 获取指定市场最多 1000(开始位置-结束位置)支股票代码信息
# 获取指定市场最多 1000(开始位置-结束位置)支股票代码信息 注意: 结束位置 - 开始位置 <= 1000
# 可以使用遍历获取TdxHq_GetSecurityCount接口返回的所有股票的代码信息
success = TdxHqApi.TdxHq_GetSecurityList(
    ConnectionID,
    0,  # 交易市场,0为深圳市场,1为上海市场
    0,  # 开始位置,第0支股票
    ctypes.byref(ctypes.c_ushort(1000)),  # 结束位置,第1000支股票
    Result,
    ErrInfo
)
  1. 断开连接

TdxHqApi.TdxHq_Disconnect(ConnectionID)

五、运行结果示例

  1. TdxHq_Connect接口数据演示:
服务器名称	最后交易日期
深圳双线主站1	20250825
  1. TdxHq_GetSecurityCount接口数据演示:
c_ushort(21221) # 获取到21221支股票信息
  1. 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