
通达信数据接口API能做什么
很多做股票、期货的朋友都想知道,通达信的数据接口API到底怎么用。说白了,它就是一个让你用程序去读通达信行情数据的通道。你不用手动打开软件看盘,代码直接拿到最新价、成交量、历史K线这些数据。做量化策略、自动盯盘、数据回测,都离不开这个。
通达信本身没有公开的官方REST API,但它提供了DLL形式的接口,还有第三方封装好的Python库。下面我按实际操作的顺序,把怎么调、怎么避坑讲清楚。
三种常见的调用方式
1. 官方DLL接口(最原始也最稳定)
通达信安装目录下有个TdxHqApi.dll,这是行情接口的核心。你需要用C++或Python的ctypes去调用它。函数不多,主要就几个:连接服务器、获取实时行情、获取历史K线、断开连接。

用Python调用的大致流程是这样:
import ctypes
# 加载DLL
tdx = ctypes.windll.LoadLibrary(r'C:\new_tdx\TdxHqApi.dll')
# 连接行情服务器(IP和端口从通达信配置里找)
# 一般用官方主站或者券商提供的服务器
调用之前你得知道服务器的IP和端口。打开通达信软件,在“通讯设置”里能看到。这个接口的优点是稳定、数据全,缺点是需要自己处理内存和错误码,对新手不太友好。
2. 第三方Python库(最省事)
社区里有人把DLL封装成了Python包,比如pytdx。装好之后几行代码就能拉数据。
from pytdx.hq import TdxHq_API
api = TdxHq_API()
with api.connect('119.147.212.81', 7709):
# 获取平安银行日K线,最多800条
data = api.get_security_bars(9, 0, '000001', 0, 800)
print(data)
get_security_bars的第一个参数9代表日线,0代表深圳市场,0是起始位置,800是数量。实时行情用get_security_quotes,传市场代码和股票代码就行。这个库把底层细节都藏起来了,适合快速上手。
3. 券商提供的行情接口
如果你有券商的程序化交易权限,他们通常会提供自己的行情API,底层也是通达信的数据源。这种方式合规性最好,但需要开户和申请权限。
股票和期货行情的数据差异
股票行情主要看Level-1和Level-2。Level-1只有最优买卖一档,Level-2有十档行情和逐笔成交。通达信DLL默认给的是Level-1数据。期货行情多了几个字段:持仓量、结算价、买卖量差。用get_security_quotes拉期货数据时,返回结构里会多出这些字段。
历史K线的频率要特别注意。股票日线、分钟线都能拿到,但期货的夜盘数据在部分服务器上可能缺失。拉数据的时候最好先小批量测试,确认时间戳和成交量对得上再批量跑。
性能优化的几个实招
连接复用:不要每次拉数据都重新连接服务器。一个TdxHq_API实例连上之后,循环调用获取函数就行。频繁连接会被服务器限流。
批量获取:get_security_quotes支持一次传多个股票代码,最多80个。把要监控的股票列表分批传进去,比一个一个拉快得多。
本地缓存:历史K线数据不会变,拉一次存本地数据库(SQLite或CSV都行),下次直接读本地。只对当天实时行情走网络请求。
异步处理:如果同时监控股票和期货,开两个线程分别连不同的服务器,避免互相阻塞。期货夜盘时段股票服务器空闲,但别混用连接。
避坑指南
服务器IP会变:通达信的行情服务器地址不是固定的,软件更新后可能换IP。代码里别写死一个IP,准备三五个备用地址,连接失败自动切换。
数据频率限制:免费服务器对请求频率有限制,一秒钟几十次就可能被断开。拉大量历史数据时在循环里加time.sleep(0.01),稳一点。
复权问题:DLL返回的K线是不复权的原始价格。做回测必须自己处理复权,不然除权日的价格跳空会让你策略失真。前复权用get_security_bars拉完数据后按除权因子手动算。
期货主力合约切换:期货主力合约会换月,代码不是固定的。需要定期检查持仓量最大的合约,用get_security_quotes对比不同月份合约的持仓量,自动切换。
编码问题:股票名称返回的是GBK编码,Python里记得.decode('gbk'),不然中文全是乱码。
什么场景适合用通达信API
做日内高频交易不太合适,DLL的延迟在几十毫秒级别,比不上券商柜台直连。做日线级别的策略回测、盘后选股、自动生成交易信号,完全够用。期货跨期套利监控持仓量变化,这个接口也能胜任。
数据准确性上,通达信和交易所数据基本一致,但极小概率出现丢包。关键策略建议用券商API做交叉验证。
把上面这些搞明白,你就能用通达信的数据接口把股票和期货行情接进自己的程序里了。先跑通一个股票的日K线拉取,再扩展到多品种实时监控,一步步来最稳。