
通达信本身不开放Python交易接口
很多刚接触量化交易的股民,第一反应是找通达信的Python接口。现实情况是,通达信官方并没有提供一套完整的、面向个人用户的Python交易API。通达信的核心定位是行情展示和手动交易,它的公式系统、预警系统可以辅助决策,但真正要把信号变成委托单,需要绕开官方限制。
市面上流传的“通达信Python接口”通常分三种情况。

第一种是读取通达信本地数据。 通达信安装目录下有一堆.day文件,存的是历史K线。Python可以通过pytdx这类库直接连通达信的行情服务器,拉取实时行情和历史数据。这种方式只能看,不能下单,适合做数据分析和回测。
第二种是模拟鼠标键盘操作。 用pywinauto或者pynput控制通达信客户端,自动填入股票代码、价格、数量,再点击买入按钮。这种方案不稳定,窗口一卡就出错,而且容易被券商风控盯上。
第三种是借助第三方量化平台。 像聚宽、米筐、优矿,它们提供模拟交易和实盘接口,但对接的往往不是通达信,而是券商柜台。有些平台支持导出通达信公式信号,再用Python执行。
用pytdx拉取通达信行情数据
pytdx是一个纯Python实现的通达信协议库,不依赖通达信客户端,直接连接行情服务器。它能拿到股票列表、实时报价、历史K线、分笔成交。
from pytdx.hq import TdxHq_API
api = TdxHq_API()
with api.connect('119.147.212.81', 7709):
# 获取上证指数最近10根日K线
data = api.get_security_bars(9, 1, '000001', 0, 10)
for bar in data:
print(bar['datetime'], bar['open'], bar['close'])
这段代码连的是通达信免费行情服务器。get_security_bars第一个参数9代表日线,1代表市场(1是上海,0是深圳)。拿到数据后可以算均线、MACD,生成买卖信号。
需要留意,免费服务器有连接数限制,频繁请求会被踢。实盘环境下建议用券商提供的Level-2行情或者付费数据源。
期货交易接口和股票不一样
股票是T+1,期货是T+0,而且期货有夜盘、杠杆、保证金。Python对接期货交易接口,主流方案是CTP。
CTP是上期技术出的交易协议,几乎国内所有期货公司都支持。Python通过vnpy或者ctpbee封装CTP接口,实现自动下单、撤单、查询持仓。
from ctpbee import CtpBee
app = CtpBee("my_app", __name__)
app.config.from_object('config')
app.start()
# 订阅行情
app.subscribe('rb2310')
# 下单:螺纹钢2310,买入开仓1手,价格3800
app.action.buy('rb2310', 3800, 1, 'open')
期货接口比股票接口复杂得多。股票接口只要委托成功就行,期货还要处理平今、平昨、保证金不足、涨跌停板。程序化交易期货,风控必须放在第一位。
自动化下单的核心是信号和风控
不管用哪个接口,自动化交易的本质没变。策略生成信号,信号触发委托,委托进入交易所撮合。
信号来源可以是通达信公式。通达信里写一个条件选股公式,每天收盘后跑一遍,把股票池导出来。Python读取这个股票池,再结合实时行情判断买点。
# 读取通达信导出的股票池
with open('tdx_signals.txt', 'r') as f:
symbols = [line.strip() for line in f]
# 对每只股票检查当前价是否突破20日均线
for sym in symbols:
bars = api.get_security_bars(9, 1, sym, 0, 20)
closes = [b['close'] for b in bars]
ma20 = sum(closes) / 20
current = api.get_security_quotes([(1, sym)])[0]['price']
if current > ma20:
# 触发买入信号
pass
风控模块要独立于信号模块。单笔最大亏损、总仓位上限、日内交易次数限制,这些参数必须写死在代码里。人工交易可以拍脑袋,程序化交易拍脑袋就是灾难。
实盘前必须做的几件事
回测和实盘是两码事。回测用的是历史数据,实盘面对的是滑点、延迟、撤单失败。
用模拟盘跑至少一个月。券商和期货公司都提供模拟环境,CTP有SimNow,股票可以用券商的模拟交易。模拟盘能暴露大部分代码bug和逻辑漏洞。
小资金实盘测试。拿一两万块钱跑真实环境,感受一下成交速度和心理压力。程序化交易不是印钞机,连续亏损时能不能坚持执行策略,比策略本身更重要。
日志和监控不能少。每一笔委托、每一次成交、每一个异常都要写进日志文件。盘中程序卡死,得靠日志定位问题。
普通散户要不要折腾接口
如果你每天手动交易三五笔,看盘时间充裕,没必要上Python接口。手动交易有手动的好处,能感知盘面情绪,能临时调整。
如果你做的是日内高频、多品种套利、或者需要同时监控几百只股票,手工操作根本忙不过来。这时候Python接口的价值就出来了,它能把重复劳动自动化,把情绪干扰降到最低。
通达信本身是个好工具,但它的交易接口封闭。想用Python打通交易,要么借道第三方平台,要么用CTP对接期货,要么干脆放弃通达信,直接用券商提供的量化API。路不止一条,选适合自己的。