news 2026/8/18 14:41:21

5分钟上手mootdx:Python通达信数据获取实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
5分钟上手mootdx:Python通达信数据获取实战指南

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.pysample/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())

到这里,你已经完成了"安装 → 配置 → 首次运行 → 查看结果"的完整闭环。🎉


过来人的避坑锦囊

性能优化三件事

  1. 开多线程Quotes.factory(multithread=True),批量取数时速度提升明显;
  2. 开心跳heartbeat=True保持长连接,长时间轮询不会被服务端踢下线;
  3. 批量请求:尽量一次传入多个股票代码,减少往返次数。比如client.quotes(['000001', '600036', '600519'])

三个高频报错

Q:ModuleNotFoundError缺少命令行依赖?A:你装的是核心包,命令行工具需要额外依赖。执行pip install 'mootdx[cli]'即可。

Q:Reader读出来的数据是空的?A:先检查tdxdir是否指向了正确的通达信数据根目录——注意是包含shsz等子目录的那一层,而不是某个股票文件夹。

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 用三个统一入口(QuotesReaderAffair)覆盖了 A 股数据获取的核心场景,返回值直接就是 pandas 结构,配好服务器后几行代码就能跑通。它省去的不是写代码的时间,而是那些"找接口、对格式、做清洗"的无效劳动。

下一步很简单:打开终端,pip install 'mootdx[all]',把上面第 3 步的代码跑起来。当你看到第一行行情数据打印出来的那一刻,你的 A 股数据 pipeline 就已经开工了。

温馨提示:mootdx 是开源学习交流项目,请合理使用市场数据,遵守相关法律法规;本文不构成任何投资建议,市场有风险,决策需谨慎。

现在就去试试吧——你的第一个股票数据脚本,就差一行pip install。🚀

【免费下载链接】mootdx通达信数据读取的一个简便使用封装项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/18 14:38:11

LangChain 定制安全检查:工具入口和回调都要管

LangChain 定制安全检查:工具入口和回调都要管 LangChain 把模型、工具、回调和记忆串起来很方便,也因此容易让边界顺着链路悄悄滑走。尤其是工具参数来自模型输出时,不能把“模型会按说明调用”当成安全策略。 工具服务端必须自己检查 为每个…

作者头像 李华
网站建设 2026/8/18 14:34:30

临时用地占用耕地“占一补三、占二补四”

完整讲清:占一补三、占二补四,超过2亩怎么算(山西铁路/煤矿可研计价口径)一、先纠正字面误区原文 “占一补三、占二补四,以此类推”不是分段分开算,是阶梯递增规则,省内交通、煤矿铁路可研统一执…

作者头像 李华
网站建设 2026/8/18 14:31:12

python的运筹学工业场景模拟第四十七篇:读取项目工序Excel,提取工序先后关系,清洗无效工序,输出网络模型,邻接矩阵,用于关键路径计算。

工序网络解析与关键路径计算:用Python把"谁先谁后"算成数学矩阵"某大型装备制造厂,一台矿山破碎机的制造涉及47个工序——从铸件进厂、粗加工、精加工、焊接、热处理、装配、液压配管、电气接线到出厂试车。工艺员在Excel里画了一张工序表…

作者头像 李华