通达信软件API如何获取实时行情数据
摘要:
通达信软件提供DLL和TCP两种数据接口API,支持实时行情获取、历史数据下载、交易指令执行等功能,Python开发者可通过ctypes库调用DLL接口实现自动化交易。量化交易者需申请机构权...

一、通达信数据接口架构
通达信软件提供两种主流数据接口方案:
- DLL动态链接库接口
通过TdxHq_API.dll文件暴露核心函数,支持C++/C#/Python等语言调用。主要功能包括:
登录认证(
TdxHq_Connect)实时行情订阅(
TdxHq_Subscribe)K线数据获取(
TdxHq_GetKLineData)分时图数据拉取(
TdxHq_GetMinuteTimeData)TCP协议接口
采用二进制协议通信,默认端口7708。机构用户可通过该协议实现:
多股并发行情推送
委托订单实时推送
Level-2深度行情订阅
# Python调用DLL示例
import ctypes
api = ctypes.WinDLL("TdxHq_API.dll")
# 建立连接
conn = api.TdxHq_Connect("119.147.212.81", 7709, b"", b"", 1, 0)
二、核心数据获取功能
2.1 实时行情订阅
通过TdxHq_Subscribe函数订阅指定证券代码,回调函数接收实时tick数据:

typedef void(*OnTick)(const TickData* data);
struct TickData {
char symbol[16]; // 证券代码
double last_price; // 最新价
int volume; // 成交量
int timestamp; // 时间戳
};
2.2 历史数据下载
获取K线数据需构造请求参数:
class KLineRequest(ctypes.Structure):
_fields_ = [
("market", ctypes.c_uint8), # 市场代码
("code", ctypes.c_char * 8), # 证券代码
("start", ctypes.c_uint32), # 开始时间戳
("end", ctypes.c_uint32), # 结束时间戳
("ktype", ctypes.c_uint8) # K线类型
]
req = KLineRequest(1, b"600000", 20230101, 20231231, 5)
data = api.TdxHq_GetKLineData(conn, req)
2.3 交易指令接口
机构版支持交易功能,需使用加密认证:
// 委托下单示例
OrderRequest req;
strcpy(req.account, "机构账号");
req.price = 10.25;
req.quantity = 100;
req.direction = 0; // 0买入 1卖出
int result = TdxHq_PlaceOrder(conn, &req);
三、Python量化对接实践
3.1 封装SDK组件
建议构建Python封装类提高可用性:
class TdxAPI:
def __init__(self):
self.dll = ctypes.WinDLL("TdxHq_API.dll")
self.conn = None
def connect(self, ip, port):
self.conn = self.dll.TdxHq_Connect(ip, port, b"", b"", 1, 0)
return self.conn != -1
def get_kline(self, code, ktype):
req = KLineRequest(1, code.encode(), 0, 0, ktype)
buf = (ctypes.c_char * 1024)()
size = self.dll.TdxHq_GetKLineData(self.conn, req, buf)
return parse_kline_data(buf.raw[:size])
3.2 实时数据流处理
结合ZeroMQ实现分布式处理:
import zmq
ctx = zmq.Context()
pub_socket = ctx.socket(zmq.PUB)
pub_socket.bind("tcp://*:5556")
def on_tick(data):
pub_socket.send_json({
"symbol": data.symbol,
"price": data.last_price,
"time": data.timestamp
})
# 注册回调函数
CALLBACK = ctypes.CFUNCTYPE(None, ctypes.POINTER(TickData))
api.TdxHq_SetCallback(CALLBACK(on_tick))
四、机构权限与风控要求
使用完整API需满足特定条件:
- 机构账户资质
需与券商签订Level-2行情协议,年费约5-20万元
- 硬件部署规范
行情服务器需部署在券商指定机房,延迟要求<5ms
- 流量限制策略
单账户最大订阅5000只证券,每秒请求上限100次
graph LR
A[机构申请] --> B[签署协议]
B --> C[开通端口]
C --> D[部署服务器]
D --> E[API鉴权]
E --> F[正式接入]
五、替代方案分析
若无法获取官方API权限,可考虑以下方案:
- 逆向工程方案
通过Hook技术截获通达信网络数据包(法律风险较高)
- 第三方封装接口
使用开源项目如Tushare或MitradeAPI(数据延迟约3-15秒)
- 券商独立行情网关
华泰/国泰君安等提供官方量化API(需签署风险协议)
性能对比表:
| 方案类型 | 延迟 | 稳定性 | 合规性 |
|-------------------|------|--------|--------|
| 官方API | 0.5s | ★★★★★ | 完全合规 |
| 第三方封装 | 3s | ★★★☆☆ | 存在风险 |
| 逆向工程 | 0.8s | ★★☆☆☆ | 违法 |
建议合规机构用户通过正规渠道申请,个人开发者可使用模拟交易接口进行策略验证。
声明
转载声明:欢迎分享本文,转载请注明出处!
点击复制: