
通达信接口API盯盘的核心机制
通达信接口API允许开发者获取实时行情、历史数据与盘口信息。盯盘过程中,交易者需要关注价格跳动、成交量突增、买卖挂单变化。通达信提供DLL动态链接库与本地数据文件两种接口方式。DLL方式可实时推送行情,适合高频盯盘。本地数据文件方式通过读取通达信安装目录下的vipdoc文件夹,获取日线、分钟线数据,延迟较高,适合盘后分析。
期货与股票盯盘存在差异。股票盯盘关注分时图、逐笔成交、大单流向。期货盯盘关注主力合约切换、基差变化、持仓量增减。通达信接口API对两者均支持,但期货需要额外处理夜盘与日盘的时间段划分。
实时行情获取方法
使用通达信DLL接口,调用TdxHq_GetSecurityQuotes函数获取实时行情。该函数返回股票或期货的最新价、买卖五档、成交量、成交额。返回数据结构包含TCalcInfo数组,每个元素对应一只标的。

// 通达信DLL接口示例(C++)
#include "TdxHqApi.h"
int main() {
TdxHq_Init();
char* symbols[] = {"600519", "IF2312"};
TCalcInfo quotes[2];
int count = TdxHq_GetSecurityQuotes(symbols, 2, quotes);
for (int i = 0; i < count; i++) {
printf("代码:%s 最新价:%.2f 成交量:%d\n",
quotes[i].Code, quotes[i].Price, quotes[i].Volume);
}
TdxHq_Deinit();
return 0;
}
Python用户可使用pytdx库,该库封装了通达信协议。pytdx支持连接通达信服务器,获取实时行情与历史数据。盯盘时,循环调用get_security_quotes方法,间隔0.5秒刷新一次。
from pytdx.hq import TdxHq_API
api = TdxHq_API()
with api.connect('119.147.212.81', 7709):
while True:
data = api.get_security_quotes([(0, '600519'), (1, 'IF2312')])
for d in data:
print(f"代码:{d['code']} 最新价:{d['price']} 成交量:{d['vol']}")
time.sleep(0.5)
盯盘预警条件设置
盯盘需要定义触发条件。股票盯盘常用条件包括:价格突破前高、成交量放大至5日均量2倍、买卖盘口出现大单托单或压单。期货盯盘常用条件包括:持仓量突然增加、基差偏离均值2倍标准差、分钟K线出现长上影或长下影。
通达信接口API允许在本地编写指标公式。公式语言类似通达信自带公式系统。编写公式后,通过TdxHq_GetFormulaResult获取计算结果。结果返回布尔值或数值,用于触发预警。
# 盯盘预警条件示例(Python + pytdx)
import numpy as np
def check_alert(quotes, history_vol):
alerts = []
for q in quotes:
if q['vol'] > 2 * np.mean(history_vol[-5:]):
alerts.append(f"{q['code']} 成交量异常放大")
if q['bid1'] - q['ask1'] > 0.02 * q['price']:
alerts.append(f"{q['code']} 买卖价差过大")
return alerts
多品种盯盘架构
期货与股票混合盯盘需要处理不同交易时段。股票交易时段为9:30-11:30与13:00-15:00。期货交易时段包括日盘9:00-10:15、10:30-11:30、13:30-15:00,夜盘21:00-次日2:30。通达信接口API返回的时间戳为Unix时间,可直接比较。
架构上,使用一个主循环,每秒获取一次行情。将标的分为股票池与期货池。股票池使用get_security_quotes,期货池使用get_future_quotes(pytdx中为get_security_quotes加市场代码1)。每个池内并行计算指标,避免阻塞。
盯盘过程中,网络延迟与数据丢包会影响预警准确性。建议使用多线程:一个线程负责数据接收,一个线程负责计算,一个线程负责发送预警。通达信接口API本身非线程安全,需要加锁。
数据存储与回测
盯盘产生的实时数据可存入本地数据库。SQLite适合轻量级存储,InfluxDB适合时序数据。存储字段包括:时间戳、代码、最新价、成交量、买卖五档、持仓量(期货)。回测时,读取历史数据,模拟盯盘条件,计算胜率与盈亏比。
通达信本地数据文件包含日线数据,格式为二进制。vipdoc/sh/lday目录下为上海股票日线,vipdoc/ds/lday为期货日线。解析文件需要读取TdxFile结构。每个记录32字节,包含日期、开盘、最高、最低、收盘、成交额、成交量。
# 读取通达信日线文件(Python)
import struct
def read_tdx_day(filepath):
data = []
with open(filepath, 'rb') as f:
buf = f.read()
for i in range(0, len(buf), 32):
record = struct.unpack('IIIIIfII', buf[i:i+32])
data.append({
'date': record[0],
'open': record[1] / 100.0,
'high': record[2] / 100.0,
'low': record[3] / 100.0,
'close': record[4] / 100.0,
'amount': record[5],
'volume': record[6],
'open_interest': record[7] # 期货持仓量
})
return data
实盘注意事项
通达信接口API依赖通达信客户端运行。若客户端未启动,DLL接口无法工作。pytdx无需客户端,但需要稳定的服务器地址列表。公开服务器地址常有变动,建议从通达信官方论坛获取最新列表。
盯盘时,避免频繁请求导致IP被封。股票行情建议间隔0.5秒以上,期货行情间隔0.3秒以上。若需更高频率,可购买通达信Level-2行情接口。Level-2提供逐笔委托与逐笔成交,适合高频盯盘。
期货盯盘需注意主力合约换月。换月时,旧合约流动性下降,新合约持仓量上升。通达信接口API返回的持仓量字段可辅助判断。当新合约持仓量超过旧合约时,切换盯盘标的。
股票盯盘需注意停牌与复牌。停牌期间,行情不再更新。通达信接口API返回的昨收价与最新价相同,可据此判断。复牌后,价格可能跳空,需调整预警阈值。
性能优化技巧
使用内存缓存历史数据。每次获取行情后,将最新价追加到缓存列表。缓存长度根据指标需求设定,如计算20日均量则缓存至少20个数据点。避免每次重新拉取全部历史数据。
使用numpy进行向量化计算。将多个标的的行情数据组织成二维数组,一次性计算所有指标。减少Python循环开销。
使用异步IO。若使用pytdx,可将每个标的的行情请求放入asyncio队列。协程并发获取数据,再统一处理。注意pytdx非异步库,需用线程池包装。
盯盘脚本完整流程
初始化通达信接口,加载标的列表。
创建数据库连接,准备存储表。
进入主循环,获取实时行情。
更新缓存,计算指标。
检查预警条件,触发则记录并推送。
存储行情快照。
检查交易时段,非交易时段休眠。
重复步骤3。
该流程可同时处理股票与期货。股票代码前缀为sh或sz,期货代码前缀为IF、IC、IH或商品代码。通达信接口API返回的市场代码:0为深圳,1为上海,2为北京,期货市场代码为1(上海期货交易所)或2(大连)或3(郑州)。
盯盘脚本应具备断线重连功能。捕获网络异常,等待5秒后重新连接。记录连接日志,便于排查。
常见问题解决
获取行情返回空值:检查标的代码是否正确,市场代码是否匹配。通达信接口API对股票与期货使用不同市场代码。股票:0=深圳,1=上海。期货:1=上海期货交易所,2=大连商品交易所,3=郑州商品交易所,4=中国金融期货交易所。
DLL加载失败:确保通达信客户端已安装,且TdxHqApi.dll位于系统路径或当前目录。64位Python需使用64位DLL,32位Python使用32位DLL。
pytdx连接超时:更换服务器地址。可从pytdx的hq模块中获取内置服务器列表,或从GitHub仓库获取最新列表。
预警延迟高:减少单次请求标的数量,分批获取。每批不超过50只。使用多线程并行请求不同批次。
数据存储过大:只存储触发预警的行情快照,而非全部行情。或按分钟聚合存储。
量化交易中的盯盘扩展
盯盘数据可用于构建量化策略。将预警信号作为开仓条件,结合止损止盈规则,形成自动交易系统。通达信接口API本身不提供下单功能,需对接券商或期货公司交易接口。
股票交易接口可使用easytrader,期货交易接口可使用vnpy。将通达信行情与交易接口结合,实现半自动或全自动交易。注意合规要求,避免频繁报撤单。
盯盘过程中,记录每个预警的后续价格走势。统计预警后1分钟、5分钟、30分钟的价格变化。计算预警准确率。根据统计结果优化预警阈值。
期货盯盘可加入跨期套利监控。同时监控近月与远月合约,计算价差。当价差超过历史均值2倍标准差时,触发套利预警。
股票盯盘可加入板块联动监控。当板块龙头涨停时,监控同板块其他股票。通达信接口API可获取板块指数行情。
通达信接口API盯盘需要稳定数据源、合理预警条件、高效计算架构。期货与股票存在交易时段与合约规则差异,需分别处理。使用pytdx或DLL接口获取实时行情,结合numpy与多线程提升性能。存储数据用于回测与优化。预警触发后,可对接交易接口实现自动下单。盯盘脚本应具备容错与重连能力,确保长时间运行稳定。