MOOTDX:通达信数据接口全攻略,轻松获取股票行情与财务数据
MOOTDX 是一个基于 Python 的通达信(TDX)行情数据接口实现,能够帮助开发者轻松获取股票实时行情、离线数据和财务报告。本文将从基础安装到高级配置,全面介绍如何利用 MOOTDX 提升量化分析效率。
一、MOOTDX 核心功能与安装指南
1.1 为什么选择 MOOTDX?
MOOTDX 提供三大核心能力,满足量化投资全流程需求:
- 实时行情获取:对接通达信服务器,毫秒级获取股票价格、成交量等数据
- 离线数据读取:解析本地通达信数据文件,支持日线、分钟线等多种周期
- 财务数据解析:下载并解析上市公司财务报告,包含资产负债表、利润表等
1.2 快速安装步骤
💡 推荐安装方式(包含所有扩展功能):
# 克隆项目仓库
git clone https://gitcode.com/GitHub_Trending/mo/mootdx
cd mootdx
# 安装核心依赖
pip install -U 'mootdx[all]'
📌 验证安装:
import mootdx
print(f"MOOTDX 版本: {mootdx.__version__}") # 输出版本号即安装成功
二、3分钟上手:MOOTDX 基础操作
2.1 实时行情获取示例
from mootdx.quotes import Quotes
# 创建行情客户端(自动选择最快服务器)
client = Quotes.factory(market='std', bestip=True, timeout=15)
# 获取贵州茅台(600519)实时行情
quotes = client.quotes(symbol='600519')
print(quotes[['code', 'open', 'close', 'high', 'low', 'volume']])
# 获取日线数据(最近30天)
bars = client.bars(symbol='600519', frequency=9, offset=30)
print(bars[['datetime', 'open', 'close', 'volume']])
# 关闭连接
client.close()
2.2 离线数据读取示例
from mootdx.reader import Reader
# 初始化本地数据读取器(需指定通达信安装目录)
reader = Reader.factory(market='std', tdxdir='/path/to/your/tdx')
# 读取沪深300指数(000300)日线数据
daily_data = reader.daily(symbol='000300')
print(daily_data.tail()) # 显示最近5条记录
# 读取5分钟线数据
min_data = reader.minute(symbol='000300', suffix=5)
print(min_data.head()) # 显示前5条记录
三、核心模块深度解析
3.1 实时行情模块(Quotes)
功能描述:通过网络连接通达信服务器,获取实时和历史行情数据。
应用场景:实时监控股票价格、编写盘中交易策略、获取历史K线数据。
高级示例:获取分笔成交数据
# 获取最近100笔成交明细
transactions = client.transaction(symbol='600519', offset=100)
print(transactions[['time', 'price', 'volume', 'amount']])
3.2 离线数据模块(Reader)
功能描述:解析通达信本地数据文件,无需网络即可快速访问历史数据。
应用场景:回测交易策略、分析历史走势、批量导出数据到CSV。
高级示例:自定义板块管理
# 创建自定义板块
reader.block_new(name="我的自选", symbol=['600519', '000858', '000333'])
# 查看自定义板块
blocks = reader.block_new(name="我的自选")
print(blocks)
3.3 财务数据模块(Affair)
功能描述:下载并解析上市公司财务报告,支持资产负债表、利润表等。
应用场景:基本面分析、财务指标计算、筛选高成长性公司。
基础示例:
from mootdx.affair import Affair
# 获取财务文件列表
files = Affair.files()
print(files[:5]) # 显示最新5个财务文件
# 下载并解析最近一期财务数据
financial_data = Affair.parse(downdir='./financial', filename=files[0]['filename'])
print(financial_data.head())
四、高级配置与参数优化
4.1 连接参数对比表
| 参数名 | 作用 | 默认值 | 推荐配置 |
|---|---|---|---|
| bestip | 是否自动选择最快服务器 | False | True(首次运行建议开启) |
| timeout | 连接超时时间(秒) | 15 | 30(网络不稳定时增加) |
| heartbeat | 是否保持心跳连接 | False | True(长时间运行程序) |
| auto_retry | 自动重连次数 | 3 | 5(高频交易场景) |
4.2 多市场配置示例
# 扩展市场(期货、期权)配置
ext_client = Quotes.factory(market='ext', server=('112.74.214.43', 7727))
# 获取股指期货行情
if quotes := ext_client.quote(market=1, symbol='IF2309'):
print(quotes[['code', 'open', 'close', 'volume']])
4.3 数据缓存优化
from mootdx.utils.pandas_cache import pandas_cache
# 启用缓存(有效期1小时)
@pandas_cache(seconds=3600)
def get_stock_data(symbol):
client = Quotes.factory(market='std', bestip=True)
data = client.bars(symbol=symbol, frequency=9, offset=365)
client.close()
return data
# 首次调用从网络获取,后续调用从缓存读取
data1 = get_stock_data('600519')
data2 = get_stock_data('600519') # 从缓存读取,速度更快
五、功能对比:MOOTDX vs 其他数据接口
| 功能特性 | MOOTDX | Tushare | JoinQuant |
|---|---|---|---|
| 实时行情 | ✅ 支持 | 需付费 | 需会员 |
| 本地数据 | ✅ 支持 | ❌ 不支持 | ❌ 不支持 |
| 财务数据 | ✅ 基础财务 | ✅ 全面财务 | ✅ 全面财务 |
| 期货数据 | ✅ 支持 | 需付费 | 需专业版 |
| 接口稳定性 | ★★★★☆ | ★★★★★ | ★★★★★ |
| 使用成本 | 免费 | 积分制 | 会员制 |
| 技术支持 | 开源社区 | 官方支持 | 官方支持 |
六、常见问题与解决方案
6.1 安装问题
Q:ImportError: No module named 'py_mini_racer'
A:需要安装额外依赖:pip install py_mini_racer
Q:M1/M2芯片Mac安装失败
A:使用Rosetta终端运行:arch -x86_64 pip install mootdx
6.2 运行问题
Q:获取行情提示"服务器连接超时"
A:1. 检查网络连接;2. 尝试添加bestip=True参数;3. 手动指定服务器:
client = Quotes.factory(market='std', server=('110.41.147.114', 7709))
Q:本地数据读取提示"文件不存在"
A:确认通达信目录正确,且已下载对应市场数据:
reader = Reader.factory(market='std', tdxdir='/Applications/通达信.app/Contents/VIPDOC')
6.3 数据问题
Q:财务数据为空或不全
A:1. 确保使用最新版本;2. 手动更新财务数据:
from mootdx.affair import Affair
Affair.fetch(downdir='./financial', downall=True) # 下载所有财务文件
Q:K线数据不足800条
A:通达信接口限制单次最多返回800条,可通过分页获取:
def get_more_bars(symbol, count=1000):
data = []
for i in range(0, count, 800):
bars = client.bars(symbol=symbol, start=i, offset=min(800, count-i))
data.append(bars)
return pd.concat(data)
七、总结与进阶学习
MOOTDX 作为开源的通达信数据接口,为量化投资提供了灵活且低成本的解决方案。通过本文介绍的基础操作和高级配置,您可以快速搭建自己的量化分析系统。
📚 进阶学习资源:
- 项目文档:查看
docs/目录下的详细说明 - 示例代码:参考
sample/目录中的使用案例 - 测试用例:
tests/目录包含各模块功能验证代码
💡 提示:定期更新 MOOTDX 到最新版本以获取新功能和bug修复:
pip install -U mootdx
祝大家使用愉快,量化投资顺利!
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
MiniMax-M2.7MiniMax-M2.7 是我们首个深度参与自身进化过程的模型。M2.7 具备构建复杂智能体应用框架的能力,能够借助智能体团队、复杂技能以及动态工具搜索,完成高度精细的生产力任务。Python00- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
HY-Embodied-0.5这是一套专为现实世界具身智能打造的基础模型。该系列模型采用创新的混合Transformer(Mixture-of-Transformers, MoT) 架构,通过潜在令牌实现模态特异性计算,显著提升了细粒度感知能力。Jinja00
LongCat-AudioDiT-1BLongCat-AudioDiT 是一款基于扩散模型的文本转语音(TTS)模型,代表了当前该领域的最高水平(SOTA),它直接在波形潜空间中进行操作。00
ERNIE-ImageERNIE-Image 是由百度 ERNIE-Image 团队开发的开源文本到图像生成模型。它基于单流扩散 Transformer(DiT)构建,并配备了轻量级的提示增强器,可将用户的简短输入扩展为更丰富的结构化描述。凭借仅 80 亿的 DiT 参数,它在开源文本到图像模型中达到了最先进的性能。该模型的设计不仅追求强大的视觉质量,还注重实际生成场景中的可控性,在这些场景中,准确的内容呈现与美观同等重要。特别是,ERNIE-Image 在复杂指令遵循、文本渲染和结构化图像生成方面表现出色,使其非常适合商业海报、漫画、多格布局以及其他需要兼具视觉质量和精确控制的内容创作任务。它还支持广泛的视觉风格,包括写实摄影、设计导向图像以及更多风格化的美学输出。Jinja00