Mootdx - 通达信股票数据读取接口的Python封装

Mootdx是一款纯Python开发的通达信数据读取接口,支持离线数据、在线行情和财务数据读取

项目简介

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 提供了三大核心功能模块:

  1. Reader 模块:通达信离线数据读取
  2. Quotes 模块:通达信线上行情读取
  3. Affair 模块:通达信财务数据读取

环境要求

项目要求
操作系统Windows / MacOS / Linux
Python 版本3.6 及以上(不支持 Python 2.x)
依赖库pytdx >= 1.67(后续将转向 tdxpy)

安装方法

基础安装

1
pip install -U mootdx

完整安装(推荐)

新手建议使用以下命令安装,包含所有扩展依赖:

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
mootdx --help

常用命令示例

1
2
3
4
5
6
7
8
# 导出日线数据
mootdx export --symbol 600036 --frequency 9

# 导出分钟数据
mootdx export --symbol 600036 --frequency 0

# 查看服务器状态
mootdx server

数据类型说明

K线周期(frequency)

周期说明
05分钟5分钟K线
115分钟15分钟K线
230分钟30分钟K线
360分钟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

历史版本

与其他库对比

特性MootdxPytdxBaostock
开发语言PythonPythonPython
数据源通达信通达信自建服务器
离线读取✅ 支持✅ 支持❌ 不支持
在线读取✅ 支持✅ 支持✅ 支持
财务数据✅ 支持❌ 不支持✅ 支持
API友好度⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
多线程✅ 支持✅ 支持❌ 不支持
命令行工具✅ 支持❌ 不支持❌ 不支持

适用场景

  • 量化交易策略回测:获取历史K线数据进行策略测试
  • 实时行情监控:获取实时股票行情数据
  • 数据分析研究:批量下载股票数据进行分析
  • 本地数据读取:读取通达信客户端的本地数据文件
  • 财务数据分析:下载和解析上市公司财务数据

学习资源

总结

Mootdx 是一个功能强大、易于使用的通达信数据读取接口,特别适合量化投资者和 Python 开发者使用。相比直接使用 pytdx,Mootdx 提供了更加友好的 API 接口和更丰富的功能,支持离线数据读取、在线行情获取和财务数据下载,是进行量化交易数据分析的理想工具。

如果你正在寻找一个简单易用的通达信数据接口,Mootdx 绝对值得一试!