
通达信到底有没有官方免费API
很多刚接触量化交易的散户,第一反应就是去搜“通达信官方免费API”。脑子里想的是:通达信看盘这么方便,如果能用代码直接调它的数据,不就省了买Level-2的钱吗?
答案有点扎心。通达信官方从来没有发布过面向个人投资者的免费API。它是一家做证券行情交易软件的公司,核心商业模式是给券商、基金提供定制终端,顺带卖卖Level-2和高级公式服务。官方接口只对签约机构开放,需要专门的授权文件、服务器白名单、甚至物理加密狗。普通散户拿不到,也不符合它的商业逻辑。
市面上流传的所谓“通达信API”,大概率是两种东西。一种是第三方抓包破解的dll文件,调用它的内存数据。另一种是模拟通达信客户端登录,截获它和服务器之间的通信。这两种方式都踩在合规红线上,轻则封号,重则收律师函。
不碰破解 照样白嫖通达信数据
官方API没有,不代表通达信的数据用不了。通达信在运行过程中,会把大量行情数据缓存在本地电脑上。这些文件不加密,或者只做了极简单的编码。我们完全可以从这些文件里把数据挖出来,用在股票和期货的量化策略回测上。

通达信的数据目录一般在安装盘符下的vipdoc文件夹。里面按市场分类:sh是上海,sz是深圳,ds是期货和期权。每个市场下面有lday、minline、fzline等子文件夹。lday存的是日线数据,minline存的是1分钟线,fzline存的是5分钟线。文件格式是二进制,后缀是.day。
每个.day文件里,每一天的数据固定占32个字节。前4个字节是日期,格式是YYYYMMDD的整数。接着4个字节是开盘价,单位是分。再4个字节是最高价,再4个字节是最低价,再4个字节是收盘价。接着4个字节是成交额,单位是元。最后8个字节是成交量,单位是股或者手。知道这个结构,用Python的struct库就能直接读。
用Python直读通达信本地数据
写代码之前,先确认你电脑上装的是通达信金融终端,并且已经下载了完整的盘后数据。打开vipdoc文件夹,找到你要的股票或者期货品种。比如sh600000.day就是浦发银行的日线。
import struct
def read_tdx_day(filepath):
data = []
with open(filepath, 'rb') as f:
buf = f.read()
for i in range(0, len(buf), 32):
record = buf[i:i+32]
if len(record) < 32:
break
date, open_p, high, low, close, amount, volume = struct.unpack('<IIIIIfQ', record)
data.append({
'date': date,
'open': open_p / 100.0,
'high': high / 100.0,
'low': low / 100.0,
'close': close / 100.0,
'amount': amount,
'volume': volume
})
return data
这段代码直接返回一个列表,里面每个字典就是一根K线。期货数据在ds文件夹下,文件命名规则略有不同,比如29#A2501.day。29#是品种代码,A2501是合约月份。读取方式一模一样,只需要把路径换掉。
通达信公式系统导数据更安全
如果你不想写代码解析二进制,通达信自带的公式系统也能导出数据。在公式管理器里新建一个指标,用EXTPEL或者EXTERNAL函数把数据写到文本文件。不过通达信对文件写入限制很多,每次只能追加,不能覆盖,而且只能写数值,不能写字符串。
更省事的办法是用通达信的“数据导出”功能。在K线图上右键,选择“数据导出”,可以导出当前品种的所有历史数据为Excel或文本格式。导出的数据包含日期、开盘、最高、最低、收盘、成交量、成交额。这个操作完全合规,就是手动点几下。适合做少量品种的研究,不适合全市场扫描。
免费数据用在股票期货策略上的三个坑
第一个坑是数据不全。通达信盘后数据需要你手动下载。如果你只下载了日线,没有下载分钟线,那你的日内策略就没有数据可用。期货数据更麻烦,主力合约换月的时候,通达信不会自动帮你拼接连续合约。你得自己用ds文件夹下的不同合约文件,按照持仓量或成交量规则拼接。
第二个坑是复权问题。通达信的本地.day文件默认是不复权的原始价格。股票分红送股之后,价格会跳空。你回测的时候如果不做前复权处理,收益率会算错。前复权需要你自己根据除权除息数据计算,通达信公式系统里的CONNECT函数只在图表上显示复权,不改变原始文件。
第三个坑是合规边界。读取本地文件给自己用,没问题。把数据打包卖给其他人,或者做成云服务对外提供,那就侵犯了通达信和交易所的数据版权。交易所对行情数据有明确授权规定,个人非商业用途一般没人管,商业用途必须买授权。
没有API的替代方案
如果你实在需要程序化的行情接口,又不想碰通达信本地文件,可以考虑几个免费但有限制的替代品。新浪财经和腾讯财经都有非官方的HTTP接口,可以获取实时行情和部分历史数据,但频率限制严格,期货数据不全。AkShare和Tushare这类开源库封装了多个数据源,适合做研究,但实时性差,股票数据有延迟,期货数据主要靠爬虫,稳定性一般。
真正要做严肃的股票期货量化,最终还是要花钱买数据。Wind、同花顺iFinD、聚宽、米筐都有API,年费从几千到几万不等。通达信免费API的念想,可以放下了。用本地文件做回测,用免费接口做监控,用付费数据做交易,这是散户比较务实的路径。