
通达信免费软件的数据api到底怎么用 散户也能自己抓数据吗
很多做股票和期货的朋友都遇到过这种尴尬:想自己写个策略回测,或者搞个简单的行情监控,结果发现券商提供的接口要么收费,要么限制多多。其实你电脑里装的那个通达信免费版,本身就藏着一套能用的数据通道。只是官方从来没把话说透,说明书里也写得云里雾里。今天就把这层窗户纸捅破,讲讲怎么从通达信里把数据抠出来。
通达信的数据到底存在哪
打开通达信的安装目录,你会看到一个叫vipdoc的文件夹。这里面按市场分了sh、sz、bj几个子目录,再往里是lday和minline文件夹。lday里放的是日线数据,minline里是分钟线。每个股票或者期货合约对应一个.day或者.lc1文件。这些文件是二进制格式,通达信自己加密过,但加密方式早被研究透了。
拿日线文件来说,每32个字节记录一天的数据。结构大概是日期、开盘、最高、最低、收盘、成交额、成交量、保留字段。你只要用Python或者C++写个读取程序,按这个结构解析,就能把历史K线全部导出来。这招对股票和期货都管用,期货合约在vipdoc\ds或者对应市场的文件夹里。

公式系统就是现成的数据接口
不想碰二进制文件的话,通达信自带的公式系统其实是个半公开的API。你在公式管理器里写一个指标公式,用">"运算符把数据输出到临时文件,或者用DRAWTEXT把数值画在图上,再通过屏幕抓取或者剪贴板导出,都能拿到数据。更直接的办法是用通达信的“数据导出”功能,选中一只股票或者一个期货合约,右键导出为Excel或者文本格式。日线、分钟线、甚至分笔成交都能导。
这个方法的优点是零代码,适合不会编程的散户。缺点是手动操作效率低,导几十个品种还行,要导全市场几千只股票就累死人了。
DLL扩展才是正经玩法
通达信允许用户通过DLL插件扩展功能。官方给了一个叫TCalc.dll的接口规范,你写一个C++的动态链接库,里面实现几个固定函数名,通达信就能在公式里调用你的函数。反过来,你的DLL也可以主动去读通达信的内存数据或者调用它的内部函数。
这条路子技术门槛高一些,但灵活性最强。市面上一些收费的行情软件,底层就是用类似的方法从通达信或者同花顺里扒数据。论坛上有人放出过逆向工程的结果,通达信内部有一个CDataProcess类,负责管理所有品种的实时行情。你只要能拿到这个对象的指针,就能遍历所有合约的最新价、买卖盘、成交量。
期货玩家特别注意一点:通达信的期货数据分商品期货和金融期货,主力合约的换月逻辑是软件内部处理的。你直接读文件的话,拿到的可能是非主力合约的数据。想要连续主力合约,得自己写换月规则,或者用通达信的“连续合约”代码,比如AU888、RB888这种。
实时行情怎么搞
历史数据靠文件,实时数据靠内存。通达信在运行的时候,所有报价都缓存在内存里。用Windows的API函数ReadProcessMemory,配合CE或者OllyDbg这类工具找到基址,就能把实时行情读出来。这个过程叫“读内存”,是很多量化工作室起步阶段的标准操作。
读内存的难点在于每次软件升级,内存地址都可能变。你需要写一个特征码扫描程序,根据通达信版本自动定位数据区。网上有现成的开源项目干这事,搜一下“通达信内存行情”能出来不少代码。
期货的实时行情还要注意夜盘。通达信的夜盘数据在白天收盘后不会自动合并到日线文件里,你得手动触发“盘后数据下载”,或者自己写程序把夜盘分钟线拼接到日线上。
用之前想清楚合规问题
从通达信免费版里抠数据,自己研究策略、做回测、搞个人量化,没人管你。但要是把数据打包转卖,或者做成商业软件对外提供服务,那就踩线了。通达信的用户协议里明确禁止逆向工程和商业利用。散户自己用,闷声发大财就行,别到处张扬。
期货公司一般会给客户提供CTP接口,那个是正规军通道。股票这边,券商的量化接口门槛普遍较高,资金量要求几十万到几百万不等。通达信这条路子,算是给资金量不大的散户开了一扇后窗。窗不大,但够用。
最后提醒一句:免费的数据源稳定性没保障。通达信哪天改个文件格式或者加密算法,你的程序就得跟着改。别把身家性命押在一个非官方接口上,回测赚了钱也别急着上实盘,先拿小资金跑三个月再说。