
安装与连接
安装pytdx库,使用pip命令:pip install pytdx。安装完成后,创建TdxHq_API对象,并通过connect方法连接通达信行情服务器。服务器地址可选用公共服务器,如119.147.212.81:7709,或使用标准端口列表进行多服务器尝试。
from pytdx.hq import TdxHq_API
api = TdxHq_API()
api.connect('119.147.212.81', 7709)
连接后,通过api对象调用各种方法获取数据。使用完毕后,调用api.disconnect()关闭连接。
获取行情数据
获取实时行情快照
使用get_security_quotes方法,传入股票代码列表,获取实时行情快照。股票代码需以市场代码为前缀,上海市场为1,深圳市场为0。例如,获取平安银行(深市000001)和浦发银行(沪市600000)的报价:
data = api.get_security_quotes([(0, '000001'), (1, '600000')])
print(data)
返回的data是一个列表,每个元素是字典,包含字段如price(最新价)、last_close(昨收)、open(今开)、volume(成交量)、bid1至bid5(买盘五档),以及ask1至ask5(卖盘五档)等。

获取历史K线数据
使用get_security_bars方法获取K线数据。参数包括类别(K线类型,如0为5分钟K线,1为15分钟,2为30分钟,3为1小时,4为日K线,5为周K线,6为月K线),市场代码,股票代码,起始位置(0表示最新数据),数量(最大800条)。
# 获取日K线,最近100条
data = api.get_security_bars(4, 0, '000001', 0, 100)
返回数据包含open、high、low、close、vol等字段。注意:vol是成交量,但单位是股还是手需要确认,通常为股。
获取分时数据
获取分时走向数据,使用get_minute_time_data方法,传入市场代码和股票代码。
data = api.get_minute_time_data(0, '000001')
返回的分时数据包含每分钟的价格、成交量等信息。
获取财务数据
获取股票的基本财务信息,使用get_finance_info方法,传入市场代码和股票代码。
info = api.get_finance_info(0, '000001')
返回信息包括总股本、流通股、每股收益等。
数据处理与常见问题
获取到的数据往往是原始格式,需要进一步处理。例如,将列表转换为DataFrame以便分析。
import pandas as pd
df = pd.DataFrame(data)
print(df)
常见问题:连接不上服务器,可能网络问题或服务器地址无效。可尝试多个服务器地址列表循环连接。数据获取权限限制:有些服务器可能限制访问频率,需合理控制请求间隔。返回的数值类型为字符串或整数,需转换类型。
# 确保数值类型
for item in data:
item['price'] = float(item['price'])
实战示例:监控股票价格变动
通过循环定时获取股票报价,实现监控。注意异常处理。
import time
try:
while True:
data = api.get_security_quotes([(0, '000001')])
if data:
price = data[0]['price']
print(f"当前价格: {price}")
time.sleep(1)
except KeyboardInterrupt:
api.disconnect()
其他实用功能
pytdx还提供获取服务器时间、获取股票列表等函数。使用get_server_time获取服务器当前时间,get_security_list获取指定市场的所有股票代码。
# 获取深圳市场所有股票代码
stocks = api.get_security_list(0)
性能优化建议
当需要同时获取多只股票或大量数据时,可使用线程池,但注意避免请求过于频繁导致被封。推荐使用异步IO或批量请求。
通过pytdx库,你可以轻松获取通达信行情数据,为量化交易提供数据支持。掌握基本用法后,可扩展更多功能,如技术指标计算、策略回测等。