怎么用通达信API抓实时行情数据

发布时间:2026-09-24 12:56阅读:2483评论:0

通达信没有官方API,但有个好用的“后门”

很多人以为通达信像同花顺那样开放了官方数据接口。其实通达信本身是个行情软件,它不对外提供标准HTTP API。但它的行情服务器通信协议早就被逆向出来了。市面上有个Python库叫pytdx,专门干这件事。装上它,你就能像调用函数一样拿到股票、期货、期权的实时行情。

第一步:安装pytdx

打开命令行,输入:


pip install pytdx

就这么简单。没有依赖地狱,纯Python实现。

第二步:找到可用的行情服务器

通达信在全国有很多行情服务器。你需要一个能连上的IP和端口。先获取服务器列表:

怎么用通达信API抓实时行情数据


from pytdx.hq import TdxHq_API

api = TdxHq_API()

servers = api.get_server_list()

for s in servers:

    print(s)

输出里会有一堆IP和端口。选一个延迟低的,比如119.147.212.81:7709

第三步:连接并获取实时行情

连接用with语句,自动处理断开。调用get_security_quotes函数,传入市场代码和股票代码。市场代码:0是深市,1是沪市。期货的话,中金所是2,上期所是3,大商所是4,郑商所是5。


from pytdx.hq import TdxHq_API

api = TdxHq_API()

with api.connect('119.147.212.81', 7709):

    # 获取股票行情:浦发银行(沪市,代码600000)

    data = api.get_security_quotes([(1, '600000')])

    print(data)

返回的data是一个列表,里面是字典。字段包括:code(代码)、price(最新价)、last_close(昨收)、open(今开)、high(最高)、low(最低)、vol成交量)、amount(成交额)、bid1bid5(买五档)、ask1ask5(卖五档)。

期货也类似。比如螺纹钢主力合约(上期所,代码rb2310):


data = api.get_security_quotes([(3, 'rb2310')])

注意期货代码要带交易所前缀,但pytdx里直接用合约代码就行。

一次性拿多个品种

get_security_quotes接受列表,可以混合股票和期货。比如同时看茅台(沪市600519)和沪深300股指期货(中金所IF2312):


stocks = [(1, '600519'), (2, 'IF2312')]

data = api.get_security_quotes(stocks)

for d in data:

    print(f"{d['code']} 最新价 {d['price']}")

为什么不用websocket或HTTP轮询

通达信协议基于TCP长连接,效率高。pytdx底层是socket通信,一次请求拿一批数据,延迟在毫秒级。比你自己写HTTP轮询快得多。而且完全免费,没有次数限制。

注意事项

服务器可能偶尔连不上。多准备几个IP,写个重试逻辑。行情数据是快照,不是逐笔推送。要逐笔成交,得用get_transaction_data函数。实时性上,比券商官方API慢几十毫秒,但对大多数策略够用了。

期货夜盘时段,部分服务器可能不提供数据。切换到支持夜盘的服务器就行。用get_server_list多试几个。

进阶:结合pandas做实时监控

拉回来的数据直接转成DataFrame,方便计算指标。


import pandas as pd

df = api.to_df(data)

print(df[['code', 'price', 'vol']])

to_dfpytdx自带的转换方法。想算均线、MACD,直接在上面操作。

这套方法同样适用于获取历史K线。get_security_bars函数可以拿分钟线、日线。期货和股票参数一样。有了实时行情,加上历史数据,你就能在本地跑简单的量化策略了。

上一篇三重顶形态怎么卖出股票期货才能避开暴跌股票销户的渠道有哪些?销户后资金怎么办?下一篇
联系管理员
联系管理员