企业微信

通达信行情API接入方式

通达信行情API是通达信软件对外提供的数据接口,支持股票、期货等金融品种的实时行情获取。该API以动态链接库(DLL)形式发布,包含TdxHqApi.dll等核心文件。量化交易者通过C++或Python调用这些接口,能够订阅Level-1和Level-2行情,获取五档盘口、逐笔成交、分时数据等。

接入步骤分为三部分:加载DLL、初始化连接、注册回调函数。以下为Python调用示例,使用ctypes库加载通达信行情API。


import ctypes

from ctypes import wintypes

# 加载通达信行情API动态库

tdx_api = ctypes.WinDLL('TdxHqApi.dll')

# 定义函数原型

tdx_api.TdxHq_Connect.argtypes = [ctypes.c_char_p, ctypes.c_ushort]

tdx_api.TdxHq_Connect.restype = ctypes.c_bool

# 连接行情服务器

host = b'119.147.212.81'

port = 7709

if tdx_api.TdxHq_Connect(host, port):

    print('行情服务器连接成功')

连接成功后,调用TdxHq_GetSecurityQuotes获取股票或期货合约的实时行情。该函数返回结构体数组,包含最新价、买卖五档、成交量等字段。期货合约代码需遵循通达信命名规则,如IF2312代表沪深300股指期货2312合约。

股票量化中的通达信行情API应用

股票量化策略依赖高频行情数据。通达信行情API提供逐笔成交和分时快照,适合构建日内回转交易、趋势跟踪、配对交易等策略。通过API获取的行情数据可直接送入因子计算模块,生成买卖信号。

通达信行情API能用来做股票期货量化交易吗

通达信行情API支持多线程订阅,单连接可同时请求多只股票行情。量化系统通常将行情数据写入内存队列,由策略线程消费。以下代码展示如何获取多只股票的五档行情并计算买卖压力差。


import numpy as np

# 假设已获取行情结构体列表 quotes_list

# 每个quote包含bid1_vol, bid2_vol, ..., ask1_vol, ask2_vol

def calculate_pressure(quote):

    bid_vols = [quote.bid1_vol, quote.bid2_vol, quote.bid3_vol, quote.bid4_vol, quote.bid5_vol]

    ask_vols = [quote.ask1_vol, quote.ask2_vol, quote.ask3_vol, quote.ask4_vol, quote.ask5_vol]

    total_bid = sum(bid_vols)

    total_ask = sum(ask_vols)

    if total_ask == 0:

        return 1.0

    return total_bid / total_ask

# 对每个行情快照计算压力比

for quote in quotes_list:

    pressure = calculate_pressure(quote)

    if pressure > 1.5:

        print(f'{quote.code} 买盘压力大,考虑做多')

期货量化中,通达信行情API同样适用。期货合约具有夜盘交易、保证金、杠杆等特点,策略需处理连续合约拼接、主力合约切换。通达信API提供各交易所期货行情,包括上期所、大商所、郑商所、中金所。通过订阅主力合约代码,量化系统可实时监控基差、展期收益。

期货量化与通达信行情API的深度结合

期货量化对行情延迟敏感。通达信行情API在局域网内延迟可控制在10毫秒以内,满足中高频策略需求。使用API获取Tick数据后,量化系统可计算盘口失衡、大单跟踪、订单流不平衡等微观结构因子。

以下代码展示如何从通达信API获取期货Tick数据并计算订单流不平衡(OFI)。OFI定义为买一量变化减去卖一量变化,用于预测短期价格方向。


class OFICalculator:

    def __init__(self):

        self.prev_bid1 = 0

        self.prev_ask1 = 0

        self.prev_bid1_vol = 0

        self.prev_ask1_vol = 0



    def update(self, quote):

        if self.prev_bid1 == 0:

            self.prev_bid1 = quote.bid1

            self.prev_ask1 = quote.ask1

            self.prev_bid1_vol = quote.bid1_vol

            self.prev_ask1_vol = quote.ask1_vol

            return 0.0



        # 计算买一量变化

delta_bid_vol = quote.bid1_vol - self.prev_bid1_vol

        # 计算卖一量变化

delta_ask_vol = quote.ask1_vol - self.prev_ask1_vol



        # 考虑价格变动方向

delta_bid = quote.bid1 - self.prev_bid1

        delta_ask = quote.ask1 - self.prev_ask1



        ofi = 0.0

        if delta_bid >= 0:

            ofi += delta_bid_vol

        else:

            ofi -= self.prev_bid1_vol

        if delta_ask >= 0:

            ofi -= delta_ask_vol

        else:

            ofi += self.prev_ask1_vol



        self.prev_bid1 = quote.bid1

        self.prev_ask1 = quote.ask1

        self.prev_bid1_vol = quote.bid1_vol

        self.prev_ask1_vol = quote.ask1_vol

        return ofi

期货策略还需处理保证金计算、强平逻辑。通达信行情API不直接提供交易接口,交易需通过券商或期货公司的交易API。量化系统可将通达信行情API作为数据源,交易执行使用CTP或飞马接口。两者结合形成完整量化交易闭环。

通达信行情API在量化系统中的性能优化

通达信行情API默认使用TCP协议,支持断线重连。量化系统应设置心跳包检测连接状态,当连接断开时自动重连并重新订阅合约。行情数据量较大时,建议使用共享内存或消息队列传递数据,避免Python GIL限制。

多品种订阅时,通达信API单连接支持最多100个合约。若需订阅更多合约,可建立多个连接,每个连接负责一组品种。期货主力合约切换时,需动态调整订阅列表,避免数据缺失。

通达信行情API提供历史数据下载功能,通过TdxHq_GetSecurityBars获取K线数据。量化回测可使用该接口获取1分钟、5分钟、日线数据。回测框架需处理复权、停牌、涨跌停等细节。股票回测注意前复权与后复权差异,期货回测注意主力合约拼接规则。

实际部署中,通达信行情API运行在Windows环境,量化策略可运行在Linux服务器。通过ZeroMQ或Redis将行情数据转发至Linux端,策略计算后发送交易指令至Windows端执行。这种架构兼顾稳定性和计算效率。

通达信行情API为股票期货量化交易提供基础数据支撑。量化交易者需深入理解API字段含义、数据更新频率、异常处理机制。结合量化策略框架,可构建从数据采集、因子计算、信号生成到交易执行的完整系统。