项目简介
Mootdx 是一款纯 Python 语言开发的通达信行情数据接口实现,基于 pytdx 进行二次封装,提供了更加友好和便捷的 API 接口。
项目地址:https://github.com/mootdx/mootdx
国内镜像:https://gitee.com/ibopo/mootdx
开源协议:MIT License
项目热度:GitHub 1k+ stars,347+ forks
核心特性
主要优势
| 特性 | 说明 |
|---|
| 纯 Python 开发 | 无需安装通达信客户端,直接使用 Python 调用 |
| 全平台支持 | 支持 Windows / MacOS / Linux |
| 版本兼容 | 支持 Python 3.6 及以上版本 |
| API 友好 | 提供简洁易用的接口设计 |
| 自动优化 | 自动匹配最优服务器 |
| 多线程支持 | 支持多线程数据获取,提升效率 |
| 命令行工具 | 提供命令行工具方便调试和数据导出 |
| 离线读取 | 支持读取本地通达信数据文件 |
功能模块
Mootdx 提供了三大核心功能模块:
- Reader 模块:通达信离线数据读取
- Quotes 模块:通达信线上行情读取
- Affair 模块:通达信财务数据读取
环境要求
| 项目 | 要求 |
|---|
| 操作系统 | Windows / MacOS / Linux |
| Python 版本 | 3.6 及以上(不支持 Python 2.x) |
| 依赖库 | pytdx >= 1.67(后续将转向 tdxpy) |
安装方法
基础安装
完整安装(推荐)
新手建议使用以下命令安装,包含所有扩展依赖:
1
| pip install -U 'mootdx[all]'
|
分模块安装
1
2
3
4
5
6
7
8
| # 仅安装核心依赖
pip install 'mootdx'
# 安装命令行工具依赖
pip install 'mootdx[cli]'
# 安装所有扩展依赖
pip install 'mootdx[all]'
|
升级安装
1
| pip install -U tdxpy mootdx
|
使用说明
1. 通达信离线数据读取(Reader)
适用于已安装通达信客户端,需要读取本地数据文件的情况。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| from mootdx.reader import Reader
# 创建读取器实例
# market 参数:
# - std: 标准市场(股票)
# - ext: 扩展市场(期货、黄金等)
# tdxdir: 通达信的数据目录,根据实际情况修改
reader = Reader.factory(
market='std',
tdxdir='C:/new_tdx'
)
# 读取日线数据
daily_data = reader.daily(symbol='600036')
print(daily_data)
# 读取分钟数据
minute_data = reader.minute(symbol='600036')
print(minute_data)
# 读取时间线数据
fzline_data = reader.fzline(symbol='600036')
print(fzline_data)
|
2. 通达信线上行情读取(Quotes)
适用于直接从通达信服务器获取实时行情数据。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| from mootdx.quotes import Quotes
# 创建行情客户端
# market: 标准市场
# multithread: 启用多线程
# heartbeat: 启用心跳保持连接
client = Quotes.factory(
market='std',
multithread=True,
heartbeat=True
)
# 获取K线数据
# frequency: 9=日线, 0=5分钟, 1=15分钟, 2=30分钟, 3=60分钟, 4=周线, 5=月线
# offset: 数据偏移量
kline_data = client.bars(symbol='600036', frequency=9, offset=10)
print(kline_data)
# 获取指数数据
index_data = client.index(symbol='000001', frequency=9)
print(index_data)
# 获取分钟数据
minute_data = client.minute(symbol='000001')
print(minute_data)
|
3. 通达信财务数据读取(Affair)
适用于下载和解析通达信的财务数据文件。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| from mootdx.affair import Affair
# 获取远程文件列表
files = Affair.files()
print(files)
# 下载单个文件
Affair.fetch(
downdir='tmp',
filename='gpcw19960630.zip'
)
# 下载并解析全部文件
Affair.parse(downdir='tmp')
|
命令行工具
Mootdx 提供了方便的命令行工具,用于调试和数据导出。
查看帮助
常用命令示例
1
2
3
4
5
6
7
8
| # 导出日线数据
mootdx export --symbol 600036 --frequency 9
# 导出分钟数据
mootdx export --symbol 600036 --frequency 0
# 查看服务器状态
mootdx server
|
数据类型说明
K线周期(frequency)
| 值 | 周期 | 说明 |
|---|
| 0 | 5分钟 | 5分钟K线 |
| 1 | 15分钟 | 15分钟K线 |
| 2 | 30分钟 | 30分钟K线 |
| 3 | 60分钟 | 60分钟K线 |
| 4 | 周线 | 周K线 |
| 5 | 月线 | 月K线 |
| 9 | 日线 | 日K线 |
市场类型(market)
| 值 | 市场 | 说明 |
|---|
| std | 标准市场 | A股股票 |
| ext | 扩展市场 | 期货、黄金等 |
完整示例
示例1:获取股票日线数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| from mootdx.quotes import Quotes
import pandas as pd
# 创建客户端
client = Quotes.factory(market='std', multithread=True)
# 获取贵州茅台最近100天日线数据
data = client.bars(symbol='600519', frequency=9, offset=100)
# 转换为DataFrame并显示
df = pd.DataFrame(data)
print(df.head())
# 保存到CSV
df.to_csv('600519_daily.csv', index=False)
|
示例2:批量获取多只股票数据
1
2
3
4
5
6
7
8
9
| from mootdx.quotes import Quotes
client = Quotes.factory(market='std', multithread=True)
symbols = ['600519', '000001', '000002', '600036']
for symbol in symbols:
data = client.bars(symbol=symbol, frequency=9, offset=30)
print(f"{symbol}: {len(data)} 条数据")
|
示例3:读取本地通达信数据
1
2
3
4
5
6
7
8
| from mootdx.reader import Reader
# 读取本地数据
reader = Reader.factory(market='std', tdxdir='C:/new_tdx')
# 获取招商银行日线数据
data = reader.daily(symbol='600036')
print(data)
|
常见问题
1. M1 Mac 系统问题
在 M1 Mac 系统上,PyMiniRacer 可能无法使用。
解决方案:访问 https://github.com/sqreen/PyMiniRacer/issues/143 查看解决方案。
2. 依赖问题
如果遇到依赖问题,建议使用完整安装命令:
1
| pip install -U 'mootdx[all]'
|
3. 服务器连接问题
Mootdx 会自动匹配最优服务器,如果连接失败,可以尝试:
版本更新
最新版本:v0.11.7(2024-05-05)
- 修复节假日问题
- 修复不安全的依赖,替换 py_mini_racer -> mini_racer
历史版本
与其他库对比
| 特性 | Mootdx | Pytdx | Baostock |
|---|
| 开发语言 | Python | Python | Python |
| 数据源 | 通达信 | 通达信 | 自建服务器 |
| 离线读取 | ✅ 支持 | ✅ 支持 | ❌ 不支持 |
| 在线读取 | ✅ 支持 | ✅ 支持 | ✅ 支持 |
| 财务数据 | ✅ 支持 | ❌ 不支持 | ✅ 支持 |
| API友好度 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ |
| 多线程 | ✅ 支持 | ✅ 支持 | ❌ 不支持 |
| 命令行工具 | ✅ 支持 | ❌ 不支持 | ❌ 不支持 |
适用场景
- 量化交易策略回测:获取历史K线数据进行策略测试
- 实时行情监控:获取实时股票行情数据
- 数据分析研究:批量下载股票数据进行分析
- 本地数据读取:读取通达信客户端的本地数据文件
- 财务数据分析:下载和解析上市公司财务数据
学习资源
总结
Mootdx 是一个功能强大、易于使用的通达信数据读取接口,特别适合量化投资者和 Python 开发者使用。相比直接使用 pytdx,Mootdx 提供了更加友好的 API 接口和更丰富的功能,支持离线数据读取、在线行情获取和财务数据下载,是进行量化交易数据分析的理想工具。
如果你正在寻找一个简单易用的通达信数据接口,Mootdx 绝对值得一试!