通达信股票软件的api怎么用
摘要:
通达信API允许用Python等语言获取行情和交易,核心是pytdx库。安装后连接服务器,就能取K线、财务数据,但交易接口需券商支持,且有权限限制。

通达信API能帮你做什么
通达信本身不直接提供官方API给普通用户。市面上说的“通达信API”通常指第三方逆向工程库,最出名的是pytdx。它让你用Python读取通达信的行情服务器数据,包括股票、期货、期权、指数。不能直接下单交易,除非你用的是券商定制的通达信版本,并且券商开放了交易接口。
pytdx的安装与连接
pip install pytdx
连接服务器需要选一个可用的IP。pytdx内置了服务器列表,但经常失效。稳妥做法是维护自己的服务器池。

from pytdx.hq import TdxHq_API
api = TdxHq_API()
# 服务器列表可在网上找,或者用pytdx.util里的
servers = [('119.147.212.81', 7709), ('123.125.108.14', 7709)]
for ip, port in servers:
if api.connect(ip, port):
print('连接成功', ip)
break
获取股票K线数据
get_security_bars参数:类别,市场代码,股票代码,起始位置,数量。市场代码0是深市,1是沪市。
# 取平安银行日K线,最近10根
data = api.get_security_bars(9, 0, '000001', 0, 10)
# 类别9是日K线,其他:0=5分钟,1=15分钟,2=30分钟,3=1小时,4=日线,5=周线,6=月线,7=1分钟,8=1分钟,9=日线,10=季线,11=年线
for bar in data:
print(bar['datetime'], bar['open'], bar['high'], bar['low'], bar['close'], bar['vol'])
获取实时行情
get_security_quotes可以取多只股票的实时五档行情。
stocks = [(0, '000001'), (1, '600000')]
quotes = api.get_security_quotes(stocks)
for q in quotes:
print(q['code'], q['price'], q['bid1'], q['ask1'])
获取财务数据与除权信息
get_finance_info返回总股本、流通股本、每股净资产、净利润等。
get_xdxr_info返回除权除息数据,用于复权处理。
info = api.get_finance_info(0, '000001')
print(info['zongguben'], info['liutongguben'], info['meigujingzichan'])
xdxr = api.get_xdxr_info(0, '000001')
for item in xdxr:
print(item['date'], item['category'], item['fenhong'], item['songzhuangu'])
扩展行情与期货数据
pytdx还提供扩展行情接口,可以取期货、期权、港股、美股。用TdxExHq_API。
from pytdx.exhq import TdxExHq_API
ex_api = TdxExHq_API()
ex_api.connect('112.74.214.43', 7727)
# 取主力合约IF2309的日K线
bars = ex_api.get_security_bars(9, 47, 'IF2309', 0, 10) # 市场代码47是中金所
交易接口的现实限制
通达信官方没有公开交易API。想程序化交易,常见路径:用券商提供的通达信版本,配合模拟点击或内存读取。更稳妥的是用券商官方API,如华泰MATIC、国泰君安GTA、中泰XTP。这些接口申请门槛高,需要机构或高净值客户。个人散户建议先专注行情数据与策略回测。
数据频率与稳定性的坑
pytdx取历史K线每分钟有限制,一次最多800根。取大量数据需分页。服务器经常断线,需要重连机制。实时行情有延迟,通常几秒。不要用于高频交易。
用pytdx构建简易回测数据源
把日K线存入本地SQLite或CSV,后续用pandas分析。示例:
import pandas as pd
from pytdx.hq import TdxHq_API
api = TdxHq_API()
api.connect('119.147.212.81', 7709)
all_bars = []
for i in range(10): # 取8000根日线
bars = api.get_security_bars(9, 0, '000001', i*800, 800)
all_bars = bars + all_bars
df = pd.DataFrame(all_bars)
df['datetime'] = pd.to_datetime(df['datetime'])
df.set_index('datetime', inplace=True)
df.to_csv('000001_daily.csv')
pytdx是免费方案,适合个人取行情。
交易需券商支持,别指望通达信自带。
数据有延迟,不适合高频。
记得维护服务器列表,加异常重试。
期货数据用扩展行情接口,注意市场代码。
声明
转载声明:欢迎分享本文,转载请注明出处!
点击复制: