用 Python 轻松读取通达信数据mootdx 让 A 股行情获取不再折腾【免费下载链接】mootdx通达信数据读取的一个简便使用封装项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx老周在券商做量化策略研究每天最头疼的不是写模型而是喂数据。公司买的行情终端权限有限手动导出 Excel 又慢又容易出错试过几个免费数据接口要么经常断线要么返回的字段七零八落。有一回他为了补齐三只股票的分钟线硬是在两个数据源之间来回比对折腾到晚上十点。后来同事丢给他一个 Python 库说试试这个通达信的数据它都能读。老周半信半疑地装好跑了三行代码日线、分钟线、实时报价全出来了字段整齐得像是定制的。那个库就是mootdx——一个把通达信数据读取封装到极致的 Python 库专治想分析 A 股却没有顺手数据源的毛病。为什么说它解决了最后一公里的问题通达信是绝大多数股民电脑里都装过的行情软件它的数据文件其实一直在本地只是格式是二进制的普通人根本读不懂。mootdx 干的事情就是把这些加密的数据翻译成 pandas 的 DataFrame让你拿过来就能做分析。它的价值可以浓缩成一张对比表常见做法遇到的问题mootdx 的做法自己解析二进制文件需要研究通达信私有格式费时费力封装好的Reader类一行代码读取网上找免费行情接口限流、延迟、随时可能挂掉直连通达信行情服务器数据源稳定手动从软件导出格式乱、字段不全、效率低实时与离线两种模式全部返回 DataFrame不管你是想拉实时行情做监控还是想读取本地历史数据做回测mootdx 都给你留好了现成的入口。边看边动手跑通你的第一个行情程序纸上谈兵没意思我们直接上手。环境只需要 Python 3.8 以上安装一条命令搞定pip install mootdx[all]装好后先拿实时行情开刀。打开任意编辑器输入下面这段代码from mootdx.quotes import Quotes # factory 是统一入口std 代表标准股票市场 client Quotes.factory(marketstd) # 获取多只股票的实时报价 df client.quotes(symbol[600036, 000001]) print(df[[code, name, price, last_close]])运行后你就能看到招商银行和平安银行的代码、名称、现价等字段全部是规整的表格结构。这就是 mootdx 最爽的地方——不用记各种协议的参数格式一个工厂方法搞定连接。接着试试历史 K 线。mootdx 里bars()负责取 K 线frequency参数控制周期from mootdx.quotes import Quotes client Quotes.factory(marketstd) # frequency9 表示日 K 线offset 表示取多少根 df client.bars(symbol600036, frequency9, offset30) print(df.tail())想把日线换成周线、月线甚至年线把frequency改成 5、6、11 就行。需要前复权数据做回测加一个参数adjustqfq即可复权因子库自动帮你算好。从安装到拿到第一份 K 线前后用不了五分钟。拆解一Quotes实时行情的统一出口Quotes是线上数据的主力它背后的逻辑值得多说两句。它的构造函数做了一件聪明的事自动测速选最优服务器。from mootdx.quotes import Quotes # bestipTrue 会在启动时探测最快的行情服务器 client Quotes.factory(marketstd, bestipTrue, heartbeatTrue, timeout15)bestipTrue从内置服务器列表里测出延迟最低的一个避免连到慢节点干着急heartbeatTrue开启心跳保活长连接不轻易断适合跑监控程序timeout15超时兜底防止某个服务器没响应时程序卡死。这套设计本质上是在帮开发者处理网络不可靠这个现实问题。你写监控脚本时不用自己实现重连逻辑Quotes 内部有自动重试查询结果为空时会自动重连再试一次。对新手来说这些细节可能意识不到但正是它们让程序在真实环境里能稳定跑上一天一夜。配合批量接口拉一篮子股票的行情也很快from mootdx.quotes import Quotes client Quotes.factory(marketstd, bestipTrue) watch_list [600519, 000858, 601318, 600036, 000001] df client.quotes(symbolwatch_list) print(df[[code, name, price, change_percent]])一次请求返回多只股票比逐个请求快了不止一个数量级。拆解二Reader把本地数据变成分析素材如果你的电脑里已经有通达信客户端那本地数据更是个宝——它完整、稳定、不依赖网络。mootdx 的Reader就是为读取这些离线文件准备的。from mootdx.reader import Reader # tdxdir 指向通达信的数据目录例如 C:/new_tdx reader Reader.factory(marketstd, tdxdirC:/new_tdx) # 读日线 daily reader.daily(symbol600036) # 读 1 分钟线 minute reader.minute(symbol600036) # 读 5 分钟线也叫时间线 fzline reader.fzline(symbol600036)这里有个容易被忽略的贴心设计代码不需要带市场前缀。你传600036Reader 会自动判断它是上海市场然后在vipdoc/sh/lday/sh600036.day找到对应文件。如果传的是#开头的扩展市场代码它也会自动切换目录。这个自动定位文件的细节省去了大量手工拼路径的麻烦。拿到数据后做什么就随你了比如算个简单的移动平均线import pandas as pd daily reader.daily(symbol600036) df pd.DataFrame(daily) # 计算 5 日均线和 20 日均线 df[MA5] df[close].rolling(5).mean() df[MA20] df[close].rolling(20).mean() print(df[[close, MA5, MA20]].tail())离线读数据 pandas 做计算这个组合就是一套轻量回测的基本盘全程不需要联网。新手最常问的五个问题Q1我必须安装通达信软件吗不需要。Reader只要求有通达信格式的数据目录Quotes走的是网络接口连软件都不用装。如果手里没有本地数据直接用Quotes拉线上行情即可。Q2marketstd和marketext有什么区别std是标准股票市场沪深股票ext是扩展市场期货、黄金、外汇等。要玩期货数据把工厂方法的 market 换成ext就行。Q3K 线的frequency参数记不住怎么办记不住很正常常用的就几个9 是日线、5 是周线、6 是月线、7/8 是 1 分钟、0 是 5 分钟。需要复权时adjust参数支持qfq前复权和hfq后复权。Q4连不上服务器或者数据为空怎么办先用bestipTrue让它自动选最快的服务器还不行就把heartbeatTrue开起来。Quotes 内置了重试和自动重连多数情况下自己就恢复了。Q5想看看最快服务器在哪有没有命令行工具有python -m mootdx bestip -vv会跑一遍测速把延迟最低的服务器挑出来控制台里直接看结果。一个小提醒数据拿到手之后数据是分析的地基拿到手先花十秒钟验证一下完整性能省掉后面一堆排查时间def check_data(df): if df is None or len(df) 0: print(数据为空检查网络或目录配置) return False for col in [open, high, low, close, volume]: if col not in df.columns: print(f缺少字段: {col}) return False return True另外A 股除权除息很频繁做回测时优先用adjustqfq拿复权数据避免因为除权跳空把策略信号搞乱。从今天起别让数据源拖慢你的研究回顾一下mootdx 的核心价值就三句话实时行情一个工厂方法搞定离线数据一行代码读取返回结果全部是 pandas 格式。它把通达信协议、服务器选择、文件格式解析这些脏活累活全包了把时间还给你去做真正重要的事——分析、建模、验证想法。老周后来把数据获取的脚本固化成了团队的公共模块同事们都靠它省下了大把时间。你也可以这样先跑通文中的例子然后把它接进自己的监控脚本或回测流程。想亲手试试pip install mootdx[all]之后从Quotes.factory(marketstd)这行代码开始你离自己的第一份 A 股数据只差一次运行的距离。项目完整代码可以在仓库中查看动手永远比观望更有收获。【免费下载链接】mootdx通达信数据读取的一个简便使用封装项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考