通达信api接口怎么用?散户也能学会的股票数据获取方法
摘要:
通达信api接口能帮散户直接获取行情数据,避免手工翻页的麻烦。文章讲清楚接口的两种调用方式、数据字段含义和常见坑,并给出期货主力合约监控的实用思路,让普通投资者也能用数据辅助交易决策。

通达信api接口到底是什么
不少做股票和期货的朋友都听过通达信api接口,但一问具体怎么用就卡壳了。说白了这个接口就是通达信软件留给外部程序的一扇门,你写个小脚本或者小软件,通过这扇门就能把行情数据拿出来,不用盯着屏幕一页页翻。
通达信本身是国内老牌行情软件,券商版、期货公司版很多都是基于它的内核改的。它的api接口主要分两种,一种是dll动态链接库方式,一种是本地数据文件读取方式。两种路子各有各的用法,下面掰开讲。
dll接口方式 适合实时行情
通达信官方并没有公开一份完整的api文档,市面上流通的接口说明大多数是逆向或者社区整理出来的。dll方式的核心是一个叫tdxapi.dll或者类似名字的动态库,外部程序加载这个库之后,可以调用里面的函数来订阅行情、获取实时报价。

这种方式的优点是实时性不错,能拿到逐笔或者秒级的行情推送。缺点是稳定性看版本,通达信每次升级主程序,dll的导出函数可能就变了,你的程序就得跟着改。做量化交易的朋友如果选这条路,得做好版本适配的心理准备。
调用逻辑大概是这样的:先加载dll,然后初始化连接,接着发送订阅请求,最后在回调函数里处理数据。整个过程用C++或者Python的ctypes都能实现。Python这边用ctypes.windll.LoadLibrary加载,把函数参数类型声明清楚,就能调起来。
本地数据文件读取 适合盘后分析
通达信会把日线、分钟线数据存在本地目录里,常见的是vipdoc文件夹下面的.day和.lc1文件。股票日线在vipdoc/sh/lday和vipdoc/sz/lday下面,期货数据在对应期货公司的目录里。
这些文件是二进制格式,结构相对固定。日线文件每条记录32个字节,包含日期、开盘、最高、最低、收盘、成交额、成交量等字段。分钟线文件每条记录也是32字节,字段顺序略有不同。用Python的struct模块或者numpy.fromfile就能解析。
这种方式的好处是稳定,不受软件版本影响,数据就在硬盘上,想怎么读就怎么读。缺点是没有实时性,只能做盘后分析或者历史回测。做股票选股策略、期货趋势跟踪策略的回测,用本地文件足够了。
期货数据获取的特别之处
期货和股票在通达信里的数据组织方式有区别。期货有主力合约切换的问题,通达信里一般用ZL或者888这样的代码来表示主力连续合约。通过api接口拿数据的时候,得注意合约代码的映射关系。
期货行情还有一个特点是夜盘。白天收盘后晚上还有交易,本地文件更新时间和股票不一样。如果你写程序自动读取,得把夜盘时间段考虑进去,不然读到的是半天数据。
做期货量化交易的朋友,用通达信api接口拿数据通常只是第一步。拿到数据之后还得做合约拼接、换月处理、复权计算。主力合约切换那天,价格会有跳空,不处理的话策略回测结果会失真。
代码示例 读取日线数据
import struct
import os
def read_tdx_day(file_path):
data = []
with open(file_path, 'rb') as f:
buf = f.read()
for i in range(0, len(buf), 32):
record = buf[i:i+32]
if len(record) < 32:
break
fields = struct.unpack('IIIIIfII', record)
date = fields[0]
open_price = fields[1] / 100.0
high = fields[2] / 100.0
low = fields[3] / 100.0
close = fields[4] / 100.0
amount = fields[5]
volume = fields[6]
data.append({
'date': date,
'open': open_price,
'high': high,
'low': low,
'close': close,
'amount': amount,
'volume': volume
})
return data
# 读取上证指数日线
file_path = r'C:\\new_tdx\\vipdoc\\sh\\lday\\sh000001.day'
day_data = read_tdx_day(file_path)
print(day_data[-5:])
这段代码直接读二进制文件,把最近5天的上证指数日线打出来。字段顺序是日期、开盘、最高、最低、收盘、成交额、成交量,价格字段需要除以100还原。
用接口数据做期货主力监控
拿到数据之后能干什么,举个实际场景。期货交易者关心主力合约的持仓量和成交量变化,这两个指标能反映资金流向。用通达信api接口把每天的主力合约数据拉下来,存到数据库里,跑个简单脚本监控持仓量异动。
持仓量连续几天大幅增加,价格却没怎么动,说明多空双方在加仓对峙,后面可能有大波动。持仓量减少价格下跌,说明多头在离场,趋势可能延续。这些判断不需要多复杂的模型,把数据拿全了,肉眼都能看出门道。
股票这边也一样,日线数据拿下来算个均线、算个成交量比率,比手工翻股票池效率高太多。通达信api接口的价值就在这儿,把重复劳动交给程序,人专注在决策上。
几个容易踩的坑
第一个坑是路径问题。不同券商版通达信的安装目录不一样,vipdoc文件夹位置得自己找。有的版本在C:\\new_tdx,有的在D:\\tdx,写程序的时候别把路径写死。
第二个坑是数据完整性。本地文件如果长时间没打开通达信下载数据,日线文件可能缺 recent 几天。跑策略之前先检查文件修改时间,太旧了就手动补一下数据。
第三个坑是期货合约代码。通达信的期货代码和交易所代码不是一一对应的,上海期货交易所的螺纹钢在通达信里是RB加月份,主力连续是RBL8或者RBL9,具体看版本。拿数据之前先在软件里确认代码。
通达信api接口不是什么高深的东西,本质就是数据搬运工。搞明白数据从哪来、长什么样、怎么解析,剩下的事情就是写逻辑了。股票和期货交易里,数据是地基,地基打牢了,上面的策略才有意义。
声明
转载声明:欢迎分享本文,转载请注明出处!
点击复制: