通达信的api接口怎么用才能自己写公式选股
摘要:
通达信的api接口是本地公式系统与DLL动态库的结合。普通用户可通过公式管理器编写选股条件,进阶用户能用C++开发DLL实现行情获取与交易信号。官方未开放Python直连,需借助pytdx等第三方库读取数据。

通达信到底有没有开放api接口
很多刚接触量化交易的朋友会问:我想用通达信的数据自己写策略,它到底有没有像券商那样开放的api接口?
实话告诉你,通达信官方没有对外提供一个标准的、文档齐全的、像期货CTP或者股票券商柜台那样的API。它不像文华财经、交易开拓者那样直接给你一套下单和行情接口。通达信的核心是行情展示和公式系统,它的“接口”概念跟程序员理解的API完全两码事。
那为什么市面上还有人说自己用通达信API做交易?他们口中的“API”其实指的是两样东西:本地公式系统和DLL动态链接库。

普通用户能用到的“接口”:公式管理器
打开通达信,按快捷键Ctrl+F,你就进入了公式管理器。这里面支持你写指标、条件选股、交易系统。这算是最基础的“接口”——通达信给你一套公式语言,你用它来访问行情数据。
公式语言里能调用的函数就是它的数据接口。比如CLOSE拿收盘价,VOL拿成交量,REF(CLOSE,1)拿昨天收盘价。你想写一个均线多头排列的选股条件,直接写:
MA5:=MA(CLOSE,5);
MA10:=MA(CLOSE,10);
MA20:=MA(CLOSE,20);
MA5>MA10 AND MA10>MA20 AND CLOSE>MA5;
这段代码就是告诉通达信:把5日、10日、20日均线算出来,然后找那些均线依次向上、股价站在5日线上的股票。
这个公式系统能做的事情很有限。它只能基于历史K线做计算,无法读取外部文件,无法发送网络请求,也无法直接下单。它的“接口”是封闭的,只能访问通达信自己整理好的行情数据。
进阶玩家的武器:DLL动态链接库
通达信公式系统里有一个函数叫DLLCALL或者EXTERNAL,允许你调用外部编译好的DLL文件。这才是通达信真正留给高阶用户的“后门”。
你可以用C++写一个DLL,里面实现任意逻辑。通达信会把当前股票的行情数据以数组形式传给你的DLL函数,你的DLL算完之后返回一个数值或条件给通达信显示。
这个DLL接口没有官方文档。市面上流传的所谓“通达信API开发文档”,都是民间高手通过逆向工程和反复测试总结出来的。函数声明大概长这样:
extern "C" __declspec(dllexport) void MyIndicator(int DataLen, float* pfOUT, float* pfINa, float* pfINb, float* pfINc);
DataLen是K线数量,pfINa、pfINb、pfINc是输入参数序列,pfOUT是输出序列。你在这个函数里想怎么算就怎么算,甚至可以连接外部数据库或者发送HTTP请求。
DLL方案的优点是你几乎可以突破通达信的所有限制。缺点也很明显:开发门槛高,调试麻烦,而且每换一个通达信版本,DLL接口可能失效。
真正做量化的人怎么绕开通达信
如果你真的想用程序化交易,用通达信做行情展示,用Python做策略计算和下单,这条路是通的。
核心工具是pytdx。这是一个开源库,它模拟了通达信的通信协议,直接从通达信服务器拉取行情数据。你不需要打开通达信软件,就能拿到历史K线和实时报价。
安装很简单:pip install pytdx。
连上服务器后,获取某只股票日线数据的代码像这样:
from pytdx.hq import TdxHq_API
api = TdxHq_API()
with api.connect('119.147.212.81', 7709):
data = api.get_security_bars(9, 0, '000001', 0, 100)
for bar in data:
print(bar['datetime'], bar['close'])
这段代码会打印平安银行最近100根日K线的日期和收盘价。9代表日线周期,0代表深圳市场,000001是股票代码。
拿到数据之后,你用pandas或者numpy算指标,用backtrader或者自己写的回测框架跑策略。交易信号出来之后,可以通过券商提供的交易接口下单。股票方面有easytrader、miniQMT,期货方面有CTP接口。
期货交易者更该关注什么
做期货的朋友,别在通达信上死磕。期货有专门的CTP接口,这是上期技术官方提供的标准API,支持行情订阅、报单、撤单、查询持仓。用Python的话,vnpy封装好了CTP,你直接写策略逻辑就行。
通达信在期货场景下只能当行情软件用,它的公式系统算算技术指标还行,真要做高频或者程序化,延迟和稳定性都跟不上。
一条务实的路线图
如果你现在只会用通达信公式,想往量化方向走,按这个顺序来:
把通达信公式系统玩熟,理解均线、MACD、布林带这些指标的计算逻辑。
学Python基础,重点学pandas处理数据。
用pytdx拉数据,自己复现一遍通达信公式的计算结果,确认数据对得上。
写简单的回测,比如双均线策略,看历史盈亏。
接模拟盘交易接口,跑通从信号到下单的全流程。
再考虑实盘,从小资金开始。
通达信的api接口不是一个现成的工具箱,而是一套需要你自己动手拼装的东西。公式系统是入门砖,DLL是进阶路,pytdx和CTP才是真正干活的工具。
声明
转载声明:欢迎分享本文,转载请注明出处!
点击复制: