5分钟上手mootdx:Python通达信数据获取实战指南
【免费下载链接】mootdx通达信数据读取的一个简便使用封装项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx
本文速览:想用 Python 获取 A 股行情,却被各种付费 API、失效接口和混乱格式劝退?本文带你用开源库 mootdx 打通通达信数据获取全流程——实时行情、历史 K 线、财务数据一次讲清,零基础也能跟着跑通第一段代码。
深夜十一点的尴尬
晚上十一点,你盯着屏幕上的报错信息,第无数次复制粘贴"请使用正确的 token"。
这不是什么科幻场景,而是每一个想用 Python 分析 A 股的人几乎都踩过的坑:免费的行情接口三天两头失效、付费的动辄几千一年、网上找到的历史数据 Excel 打开一看列名全是乱码……好不容易搞定数据源,格式又和你手里的回测框架对不上。
如果你也有类似的经历,那么接下来这个项目,可能正是你要找的答案。
一句话说清 mootdx 是什么
mootdx 是一个纯 Python 实现的通达信数据读取封装库,它把通达信客户端的行情、历史和财务数据接口,包装成几行就能调用的友好 API,而且完全开源免费。它解决的问题很简单:让你用最少的代码、最快的速度,拿到干净、规范、可以直接进 pandas 的 A 股数据。
它能帮我做什么?五个问题一次问清
Q1:我不装通达信软件,能用它吗?
能。mootdx 分"在线"和"离线"两条路:
- 在线模式:直接连接通达信的行情服务器,实时报价、K 线、分时全都有,不需要安装任何客户端软件;
- 离线模式:如果你手头有通达信数据目录(或从网上同步的本地数据),它可以像本地数据库一样快速读取。
一句话总结:有网拿实时,有盘读历史,两条路都通。
Q2:历史 K 线数据怎么拿?
这是它最常用的能力之一。日线、周线、月线、分钟线,一个bars()方法搞定,返回的就是 pandas 的DataFrame,直接进rolling()、pct_change()这类计算,不用做任何格式转换。
Q3:数据是"脏"的吗?复权怎么办?
很多免费数据源拿到的都是不复权数据,直接算收益率会失真。mootdx 把复权也考虑进去了,项目里有现成的复权示例(sample/fq.py、sample/basic_adjust.py),前复权、后复权都能处理,省去你自己写除权除息逻辑的麻烦。
Q4:财务数据它管吗?
管。上市公司财报、财务指标这类数据,它提供了专门的财务数据模块,支持文件列表查询、单个下载、批量解析,做基本面分析时非常顺手。
Q5:我是新手,上手难不难?
不难。核心入口就三个:Quotes(实时行情)、Reader(历史数据)、Affair(财务数据),每个类都提供统一的factory工厂方法,记住这一个套路就能覆盖绝大多数场景。
从零到一:跑通你的第一段代码
第 1 步:安装(约 1 分钟)
推荐直接安装全量依赖,省去后面缺库的麻烦:
pip install -U 'mootdx[all]'如果你习惯从源码研究,也可以克隆仓库再本地安装:
git clone https://gitcode.com/GitHub_Trending/mo/mootdx cd mootdx pip install -e .第 2 步:挑选最快的服务器
通达信有多个行情服务器,速度参差不齐。mootdx 自带测速工具,先跑一遍,把最快的服务器存进配置:
python -m mootdx bestip -vv它会逐台测速并给出排行,之后每次连接都会优先使用最优节点。这一步是很多人忽略但非常影响体验的关键操作。
第 3 步:获取第一份实时行情
新建一个demo.py,写入以下代码:
from mootdx.quotes import Quotes # 创建行情客户端:std 是标准市场(股票) client = Quotes.factory(market='std', multithread=True, heartbeat=True, bestip=True) # 获取实时行情(平安银行) quote = client.quotes('000001') print(quote.head())运行后你会看到类似这样的输出:
market code name price ... 0 0 000001 平安银行 11.23 ...一个DataFrame,列名规范、类型正确,可以直接拿去用。
第 4 步:拉取历史 K 线
# 日线数据:frequency 传 9 或 'day' 都是日线 df = client.bars(symbol='600036', frequency=9, offset=30) print(df.tail())frequency支持数字或字符串两种写法,常用映射如下:
| 数值 | 字符串 | 含义 |
|---|---|---|
| 0 | '5m' | 5 分钟线 |
| 4 | 'day' | 日线 |
| 5 | 'week' | 周线 |
| 7 / 8 | '1m' | 1 分钟线 |
| 9 | 'day' | 日线(与 4 等价) |
如果你本地有通达信数据目录,还可以用离线读取:
from mootdx.reader import Reader reader = Reader.factory(market='std', tdxdir='C:/new_tdx') daily = reader.daily(symbol='600036') # 日线 minute = reader.minute(symbol='600036') # 分钟线 print(daily.head())到这里,你已经完成了"安装 → 配置 → 首次运行 → 查看结果"的完整闭环。🎉
过来人的避坑锦囊
性能优化三件事
- 开多线程:
Quotes.factory(multithread=True),批量取数时速度提升明显; - 开心跳:
heartbeat=True保持长连接,长时间轮询不会被服务端踢下线; - 批量请求:尽量一次传入多个股票代码,减少往返次数。比如
client.quotes(['000001', '600036', '600519'])。
三个高频报错
Q:ModuleNotFoundError缺少命令行依赖?A:你装的是核心包,命令行工具需要额外依赖。执行pip install 'mootdx[cli]'即可。
Q:Reader读出来的数据是空的?A:先检查tdxdir是否指向了正确的通达信数据根目录——注意是包含sh、sz等子目录的那一层,而不是某个股票文件夹。
Q:bestip测速时报连接失败?A:可能是网络环境限制了对行情服务器的访问,稍后重试或手动在配置文件里指定服务器 IP 与端口。
一个最容易踩的坑
frequency参数的值是从 0 开始编号的,frequency=4才是日线,不是 1。新手最容易在这里搞混,拿到一堆"奇怪周期"的数据。上面那张对照表建议收藏。
实战集锦:三个身份,三种玩法
🎓 学生党:课程作业里的历史回测
金融课作业要做一个简单回测,数据全部来自本地目录,又快又稳:
from mootdx.reader import Reader reader = Reader.factory(market='std', tdxdir='./tdx_data') df = reader.daily(symbol='000001') # 直接进 pandas 计算,作业数据瞬间就绪 df['ma5'] = df['close'].rolling(5).mean() print(df[['close', 'ma5']].tail())🛠 量化工程师:盘中自选股监控
实时盯盘,每分钟检查一次自选股的价格变化:
from mootdx.quotes import Quotes import time client = Quotes.factory(market='std', multithread=True, heartbeat=True) watch = ['000001', '600036', '600519'] while True: df = client.quotes(watch) print(df[['code', 'price']].to_string(index=False)) time.sleep(60) # 每分钟刷新一次📊 分析师:批量拉取财报数据
季报披露季,把全市场财报一次性同步到本地慢慢分析:
from mootdx.affair import Affair # 查看远程有哪些财务数据文件 files = Affair.files() print(files[:3]) # 下载全部财报文件到本地 tmp 目录 Affair.parse(downdir='tmp')文件下载到本地后,配合mootdx/financial/模块解析成表格,基本面研究的数据底座就搭好了。
想深入?这些资源按需取用
| 资源 | 适合什么时候看 |
|---|---|
| docs/quick.md | 想 30 秒回顾核心用法时 |
| sample/basic_quotes.py | 第一次写实时行情代码时对照 |
| sample/basic_reader.py | 想读本地历史数据时 |
| sample/basic_affairs.py | 处理财务数据时 |
| docs/api/ | 需要查具体 API 参数说明时 |
| docs/cli/ | 想用命令行快速导数据时 |
| tests/ | 想了解官方推荐的调用姿势时 |
| sample/fq.py 与 sample/basic_adjust.py | 需要复权数据时 |
现在,动手取你的第一份数据
回顾一下:mootdx 用三个统一入口(Quotes、Reader、Affair)覆盖了 A 股数据获取的核心场景,返回值直接就是 pandas 结构,配好服务器后几行代码就能跑通。它省去的不是写代码的时间,而是那些"找接口、对格式、做清洗"的无效劳动。
下一步很简单:打开终端,pip install 'mootdx[all]',把上面第 3 步的代码跑起来。当你看到第一行行情数据打印出来的那一刻,你的 A 股数据 pipeline 就已经开工了。
温馨提示:mootdx 是开源学习交流项目,请合理使用市场数据,遵守相关法律法规;本文不构成任何投资建议,市场有风险,决策需谨慎。
现在就去试试吧——你的第一个股票数据脚本,就差一行pip install。🚀
【免费下载链接】mootdx通达信数据读取的一个简便使用封装项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考