
通信达 API 接口基础
通信达作为国内主流证券行情交易软件,其 API 接口为量化交易者提供了连接行情与交易通道的能力。接口分为行情数据接口和交易执行接口。行情接口支持股票、期货、期权等品种的实时与历史数据拉取,交易接口则允许程序化报单、撤单、查询持仓与资金。使用前需在通信达客户端开启 API 权限,并安装对应语言的开发包,常见为 Python、C++ 和 C#。
行情接口返回的数据结构通常包含代码、时间、最新价、买卖五档、成交量、持仓量等字段。期货行情额外包含结算价、涨停跌停价、合约乘数。股票行情则包含市盈率、换手率等基本面因子。接口调用频率受限于券商或期货公司的风控规则,一般免费版每秒 1 至 3 次,付费版可提升至每秒 10 次以上。
股票量化中的通信达 API 应用
股票量化策略依赖行情接口获取实时 tick 或分钟 K 线。通信达 API 支持订阅模式,策略可注册回调函数,当新行情到达时自动触发计算。典型应用包括均线突破、网格交易、统计套利。交易接口方面,通信达 API 封装了买入、卖出、撤单、查询委托等函数,返回订单编号与成交状态。

股票交易需注意接口的账户绑定。每个 API 调用必须携带资金账号,且同一账号在同一时间只能有一个活动连接。策略运行前应调用登录函数并验证返回码。股票卖出时需检查可用持仓,避免因 T+1 规则导致废单。
# 通信达 API 股票下单示例(伪代码)
from tdx_api import TdxTrader
trader = TdxTrader(account='123456', password='***')
trader.login()
# 查询资金
balance = trader.query_balance()
print('可用资金:', balance['available'])
# 限价买入 100 股
order_id = trader.buy('600519', price=1700.0, volume=100)
print('订单编号:', order_id)
# 查询委托状态
status = trader.query_order(order_id)
print('委托状态:', status['state'])
策略需处理接口异常,如网络断开、超时、返回错误码。常见错误码 1001 表示未登录,1002 表示资金不足,1003 表示持仓不足。建议在回调函数中加入重试机制,并记录日志。
期货程序化交易中的通信达 API
期货市场支持 T+0 与双向交易,通信达 API 在期货场景下功能更丰富。行情接口提供逐笔成交与委托队列,交易接口支持开仓、平仓、平今、锁仓等指令。期货合约有主力与次主力之分,策略需动态切换合约代码,避免流动性不足。
期货交易接口需指定交易所标志,如 SHFE、DCE、CZCE、CFFEX、INE。下单时需设置开平标志,例如开仓、平仓、平今。上期所与能源中心区分平今与平昨,其他交易所不区分。错误设置会导致报单被拒。
# 通信达 API 期货开仓示例(伪代码)
from tdx_api import TdxFuturesTrader
trader = TdxFuturesTrader(account='654321', password='***')
trader.login()
# 开多 1 手螺纹钢主力
order_id = trader.open_long('rb2310', price=3800, volume=1, exchange='SHFE')
print('开仓订单:', order_id)
# 平今 1 手
close_id = trader.close_today('rb2310', price=3810, volume=1, exchange='SHFE')
print('平今订单:', close_id)
期货行情接口的 tick 数据频率高,策略需使用环形缓冲区或队列避免内存膨胀。夜盘与日盘切换时,接口可能短暂断开,策略应自动重连。保证金监控是期货量化的关键,接口返回的可用资金与占用保证金需实时计算风险度。
接口性能与稳定性优化
通信达 API 的延迟主要来自网络传输与券商柜台处理。优化方法包括:将策略部署在离交易所较近的云服务器;使用异步 IO 减少阻塞;批量查询代替单次查询。行情订阅时仅订阅策略需要的合约,降低数据压力。
交易接口的稳定性依赖心跳机制。策略应每 30 秒发送一次心跳包,若连续 3 次无响应则触发重连。重连后需重新登录并恢复订阅。委托查询应设置超时时间,超时后调用撤单接口防止重复报单。
日志系统记录每笔委托的发出时间、成交时间、价格、数量。回测与实盘使用同一套信号生成逻辑,仅替换行情源与交易执行模块。通信达 API 支持模拟交易环境,策略可先在模拟盘验证再切换实盘。
常见问题与解决方案
接口返回“未授权”通常因为 API 权限未开通或账户未绑定。解决办法是联系券商或期货公司开通量化接口权限,并在通信达客户端登录一次。行情延迟高时检查网络带宽与订阅数量,减少不必要的字段。
股票接口不支持融资融券自动下单,期货接口不支持组合保证金优惠。策略需自行处理这些限制。通信达 API 不提供历史 tick 回放,需提前用行情接口录制数据。
跨平台使用时,Windows 与 Linux 的接口库不同。Linux 下需安装 wine 或使用官方提供的 Linux 版本。Python 用户建议使用 64 位解释器,避免内存溢出。
接口版本升级可能导致函数签名变化,策略代码需锁定版本号。定期查看通信达官方文档的更新日志,及时调整调用方式。
合规与风控要求
程序化交易需向交易所报备,股票量化单账户每秒申报不超过 300 笔,期货不超过 500 笔。通信达 API 内置流控,超出限制会返回错误。策略应设置最大持仓、最大亏损、单笔最大手数。
期货夜盘品种需注意交易时间,接口在非交易时段返回空数据。股票集合竞价阶段接口只返回参考价,不支持撤单。策略应在连续竞价阶段执行交易。
风控模块独立于信号模块,每笔委托前检查资金、持仓、价格偏离度。价格偏离度超过 2% 时拒绝报单。通信达 API 提供查询合约信息接口,可获取最小变动价位与涨跌停板。
实盘运行前进行至少 3 个月模拟盘测试,覆盖不同行情状态。通信达 API 的模拟环境与实盘环境返回字段一致,便于策略迁移。