
通达信指标API到底是什么
很多人每天看通达信的MACD、KDJ,以为这些线就是全部。实际上,通达信给了一个开放的口子,让懂编程的人自己写指标,甚至把指标信号变成真实的股票、期货买卖动作。这个口子就是通达信指标API。
通俗讲,API是一套约定好的“说话方式”。通达信告诉外部程序:你按我的格式传数据进来,我按我的格式把行情、计算结果吐出去。你想让电脑根据自定义的均线金叉自动下期货单,就得通过这套API把两边接上。
为什么期货股票交易者要学它
手动盯盘累,情绪一上来容易乱操作。把通达信指标API用起来,等于给交易装了个不知疲倦的机器人。它有三个硬好处:

信号不漂移:公式算出来什么样就是什么样,不会因为害怕错过而提前进场。
执行快:股票还好,期货行情跳动快,人眼还没反应,程序已经报单成交。
回测方便:同一套指标逻辑,历史数据一跑,胜率、盈亏比清清楚楚。
市面上很多量化平台收费贵,数据还要另外买。通达信本地就有行情,API直接调用,省钱也省事。
通达信指标公式基础
通达信自带公式系统,像MA、CROSS、REF这些函数,写起来接近自然语言。一个简单的均线金叉指标长这样:
MA5:=MA(CLOSE,5);
MA20:=MA(CLOSE,20);
金叉:CROSS(MA5,MA20);
死叉:CROSS(MA20,MA5);
这段代码在通达信里能画图,但没法自动发单。想让电脑动手,需要把“金叉”这个信号传给外部程序。通达信提供了两种主要方式:公式预警输出和DLL动态链接库。
公式预警输出最简单:在指标里加一行DRAWTEXT(金叉,LOW,'买'),再配合通达信的预警设置,信号触发时弹窗。弹窗不能直接下单,只能提醒你。
真正要自动下单,必须用DLL。
用DLL编写通达信指标API
DLL是动态链接库,通达信允许外部DLL接管指标计算。你写一个C++的DLL,导出特定函数,通达信调用它,把行情数据传进去,DLL算完把结果返回来。这个过程就是通达信指标API的核心。
一个最基础的DLL函数签名如下:
extern "C" __declspec(dllexport) void TestApi(int DataLen, float* pfOUT, float* pfINa, float* pfINb, float* pfINc)
{
for(int i=0; i<DataLen; i++)
{
// pfINa是收盘价序列,pfINb是最高价,pfINc是最低价
// pfOUT是输出指标值
pfOUT[i] = pfINa[i] - pfINb[i]; // 随便写个差值
}
}
这个函数通达信每根K线都会调一次,数据长度、输入数组、输出数组都由通达信管理。你在里面写任何逻辑,均线、布林带、甚至机器学习模型推理都可以。算出来的值返回给通达信显示,同时也能被外部程序读取。
关键一步:让DLL不光算指标,还要发交易指令。在函数内部加一个判断,当条件满足时调用期货CTP接口或者股票券商接口。这里要小心,DLL运行在通达信进程里,直接发单可能卡死界面。稳妥做法是DLL只负责把信号写入共享内存或本地文件,另一个独立的下单程序去读。
if(pfOUT[i] > 0 && pfOUT[i-1] <= 0)
{
// 写入信号文件
FILE* fp = fopen("C:\\signal\\buy.txt", "w");
fprintf(fp, "buy");
fclose(fp);
}
独立的下单程序用Python或C#监控这个文件,一旦发现buy字样,立刻调用期货公司API报单。这样通达信只管算,下单程序只管发,互不干扰。
Python对接通达信指标API
不想写C++,可以用Python。通达信有pytdx库,能直接读取本地行情数据,也能获取公式计算结果。用Python写指标逻辑,再对接期货CTP接口,灵活性更高。
from pytdx.hq import TdxHq_API
api = TdxHq_API()
with api.connect('119.147.212.81', 7709):
data = api.get_security_bars(9, 0, '600000', 0, 10)
closes = [bar['close'] for bar in data]
ma5 = sum(closes[-5:]) / 5
ma20 = sum(closes[-20:]) / 20
if ma5 > ma20:
print('金叉,准备买股票')
这段代码拉取浦发银行最近10根K线,算均线。实际交易中,把print换成期货CTP的报单函数就行。pytdx能连通达信服务器,数据免费,适合散户。
Python方案缺点是速度不如C++ DLL,做期货高频不够用。日线级别、分钟级别完全够。
期货股票自动交易实战要点
股票和期货通过通达信指标API自动交易,有几个坑必须绕开:
行情延迟:通达信免费行情有十几秒延迟,期货日内交易会吃亏。建议用期货公司提供的CTP行情,通达信只做信号计算。
仓位管理:DLL里不要写死手数,用外部配置文件控制。股票按金额算,期货按保证金算。
滑点处理:信号发出到成交有滑点,回测时加两跳滑点,实盘才接近真实。
异常断开:期货夜盘可能断网,下单程序要有重连机制,DLL信号文件要带时间戳,防止重复下单。
一个实用的架构是:通达信DLL算指标,写信号到Redis队列,Python下单程序从Redis取信号,调用CTP发单,成交后回报写入数据库。整套系统跑在本地电脑或云服务器上,股票期货都能管。
从指标到交易只差一步
通达信指标API不是神秘东西,它就是把看盘软件和交易接口连起来的桥。你会写通达信公式,就懂了一半。剩下的一半是编程,把公式翻译成DLL或Python代码,再把信号变成报单。
股票手动交易还能忍,期货波动快,不用API自动执行,早晚被市场淘汰。花几天时间把通达信指标API跑通,以后所有策略都能自动跑,睡觉也能做交易。