ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

5分钟跑通通达信数据获取:mootdx 三行代码拿到A股行情

5分钟跑通通达信数据获取:mootdx 三行代码拿到A股行情

5分钟跑通通达信数据获取:mootdx 三行代码拿到A股行情

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

折腾过股票数据的人都知道那种感觉:免费的接口上午还能跑,下午就超时了;好不容易换了一个,文档看着天花乱坠,跑起来全是坑。历史数据格式更乱,日线、分钟线、复权因子各存各的,清洗一下一下午就没了。今天要聊的mootdx,就是专治这类通达信数据获取难题的开源库:一条命令装好,三行代码拿到实时行情。

三个高频吐槽,你中了几个

  • “免费 API 上午还能用,下午就超时了。”—— 数据源多为个人维护的爬虫接口,说挂就挂,定时任务根本不敢托付。mootdx 直连通达信官方行情服务器,还内置了测速选点机制。
  • “文档说得天花乱坠,跑起来全是坑。”—— 有的库要求你手动拼二进制协议、算字节偏移,光看文档就劝退。mootdx 把整套协议封成了 Python 对象,你只需要调方法。
  • “数据格式千奇百怪,清洗比分析还累。”—— 同一个字段,这个库叫vol,那个库叫volume。mootdx 统一返回 pandas DataFrame,列名固定,直接进分析流程。

这三个坑踩得越多,越该换个思路——别自己对接协议了,让封装好的库来干。

一句话定位:mootdx 是什么

mootdx 是通达信数据的"统一出口":实时行情、本地历史文件、上市公司财务数据,三块能力装在一个包里。它不生产数据,只负责把通达信的行情服务器、.day文件、财报压缩包翻译成你熟悉的 DataFrame。你要做的只有一件事:调用方法,拿数据。

5分钟拿到第一笔实时行情

克隆仓库并安装依赖(新手建议直接装全量扩展):

git clone https://gitcode.com/GitHub_Trending/mo/mootdx cd mootdx pip install 'mootdx[all]' # 测速选出最快的行情服务器,并写入配置文件 mootdx bestip -v -w

然后新建一个hello.py:

from mootdx.quotes import Quotes # factory 是统一入口: std 标准股票市场, ext 扩展市场(期货、黄金等) client = Quotes.factory(market='std') # quotes 获取实时盘口: 传股票代码, 返回 DataFrame df = client.quotes('000001') print(df[['code', 'name', 'price']])

预期输出(价格随行情波动,以下为示意格式):

code name price 0 000001 平安银行 10.25

对,就这么短。没有协议、没有字节对齐、没有手动拼包,你刚完成了从安装到拿数据的全流程。换股票?把000001换成任何沪深代码就行。

一张能力地图,看懂 mootdx 的完整家底

能力组入口你拿到什么
实时行情mootdx/quotes.py盘口、K 线(bars)、指数(index)、分时(minutes)、分笔(transaction)、除权除息(xdxr)、F10 公司资料
本地离线数据mootdx/reader.py读通达信安装目录下.day/.lc1/.lc5文件,日线、分钟线离线可查
财务数据mootdx/affair.py上市公司财报 zip 下载与解析,基本面分析起步

按需求找文档,不用通读:

  • 新手入口:docs/quick.md、docs/setup.md
  • 完整 API 参考:docs/api/quote1.md(标准行情)、docs/api/reader.md(离线读取)、docs/api/affair.md(财务数据)
  • 可直接运行的示例:sample/basic_quotes.py、sample/basic_reader.py、sample/basic_affairs.py
  • 命令行用法:docs/cli/bestip.md、docs/cli/reader.md

场景演练:不同的人,同一套库

做毕设的研究生小陈:离线拿全历史日线

回测第一关就是搞到干净的日线数据。在线接口只给最近一段,那就读本地通达信文件——数据在软件里存了多少年,你就能拿多少年:

from mootdx.reader import Reader # tdxdir 指向通达信的数据目录(放 vipdoc 的那个文件夹) reader = Reader.factory(market='std', tdxdir='C:/new_tdx') # daily 返回完整历史日线 df = reader.daily(symbol='600036') print(f"共 {len(df)} 条日线") print(df.tail(3))
open high low close vol datetime ...

这个场景里你只用了 Reader 的离线读取能力,全程不碰网络。

上班族小张:分钟级轮询的价格提醒

白天没法盯盘,写个每分钟轮询的小脚本,到价就提醒:

from mootdx.quotes import Quotes import time client = Quotes.factory(market='std') # 循环外建一次连接 watch = {'600519': 1800, '300750': 200} # 代码: 目标价 while True: for code, target in watch.items(): q = client.quotes(code) if q['price'].iloc[0] >= target: print(f"触发! {code} 现价 {q['price'].iloc[0]} 已达 {target}") watch.pop(code) # 触发后移除, 不重复提醒 time.sleep(60)

这个场景里你用的是同一个 client 反复调quotes——连接只建一次,这比轮询逻辑本身更重要。

量化分析师李老师:财报文件批量解析

给学生演示"财报营收和股价的关系",先拉一份年报:

from mootdx.affair import Affair files = Affair.files() # 远程财报文件清单 name = files[0]['filename'] # 取一份, 如 gpcw20231231.zip df = Affair.parse(downdir='tmp', filename=name) # 自动下载并解析 print(df.shape) print(df.head(3))

解析出的 DataFrame 列名就是中文财务科目(report_date、其中:营业收入、净利润等,对照表见 docs/api/fields.md),营收、净利润直接可用。这个场景覆盖了"下载 + 解析"的组合用法,文件已存在时会自动跳过重复下载(按 md5 校验)。

实战加固:让脚本稳定跑完整个交易日

技巧一:连接复用 + 心跳,别反复建连。每次Quotes.factory都是一次完整握手,高频轮询时开销不小。client 建在循环外面,开启心跳保活和断线自动重试:

client = Quotes.factory( market='std', heartbeat=True, # 心跳保活, 防服务器踢连接 auto_retry=True, # 断线自动重连 timeout=15, )

技巧二:用 bestip 选最快服务器,延迟肉眼可见地降。官方行情服务器不止一台,mootdx bestip会逐一测速并列出榜单(见 docs/cli/bestip.md):

mootdx bestip -v -w

加上-w参数,测出的最优节点写入~/.mootdx/config.json,之后Quotes.factory自动使用,等于给你的数据通道换了个"隔壁机房"。

避坑问答:三个最常见的疑问

没有装通达信软件,能用 mootdx 吗?实时行情和财务数据完全能用——它们走的是公开行情服务器,跟本机装没装软件无关。只有用 Reader 读离线文件时才需要一个通达信数据目录(tdxdir),之前装过软件留下的就行,或者从别处拷一份vipdoc目录过来。

返回的数据要自己清洗半天?不用。所有接口统一返回 pandas DataFrame:to_data已经把通达信原始结构转成标准列(open/high/low/close/vol等),并顺手补了volume列;有date/datetime列时自动转成时间索引。直接进分析流程。

M1 Mac 上装了[all]却报 PyMiniRacer 错误?这是已知问题:PyMiniRacer 在 Apple Silicon 的 M1 系统上无法使用(详见 docs/faq/py_mini_racer.md 与上游 issue)。解决办法:只装你需要的依赖组,pip install 'mootdx'(核心)或pip install 'mootdx[cli]'(命令行),避开这个依赖即可,核心行情功能不受影响。

现在,去跑你的第一行代码

带走四样东西就够:

  1. 一个统一入口Quotes.factory:std 标准市场、ext 扩展市场,行情/历史/财务三合一。
  2. 一段最小示例:三行代码拿实时行情,跑通就是正反馈。
  3. 一张能力地图:在线找 quotes、离线找 reader、财报找 affair,各回各家。
  4. 两条保命技巧:连接复用心跳 + bestip 测速,脚本才能稳过整个交易日。

打开终端,把上面那段hello.py跑一遍。看到那行输出,你的个人数据管道就开工了——接下来把000001换成你真正关心的代码。有问题可以扫码进交流群,一起把数据管道打磨得更顺。

本项目遵循 MIT 协议,仅供学习与研究,不得用于任何商业用途;行情数据请遵守交易所数据使用规范。

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

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

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进