4步用mootdx打通通达信数据读取:亲手搭一个行情小工具
4步用mootdx打通通达信数据读取亲手搭一个行情小工具【免费下载链接】mootdx通达信数据读取的一个简便使用封装项目地址: https://gitcode.com/GitHub_Trending/mo/mootdxmootdx 是一个把通达信数据读取包成三行代码的 Python 封装库覆盖线上行情、本地历史数据与财报下载三条数据线。这篇文章带你以做一个个人行情小工具为主线从安装、选服务器、拉数据到踩坑修复完整走一遍读完后你手上会多一个能实时盯盘、能读本地历史、能看财报的可用脚本。动手之前先看清 mootdx 的三张数据牌mootdx 的接口虽然多但底层只有三件事对应三个类一张表就能说清数据需求入口类数据来源典型用途实时行情、K线、分时Quotes通达信行情服务器在线盯盘、选股、做信号本地历史数据Reader本机通达信vipdoc目录离线复盘、回测、批量清洗财务报表Affair通达信财务服务器基本面筛选、财报对比先说结论你 90% 的需求都落在在线拉实时 本地读历史这两个入口上财报是锦上添花。记住这个分类后面每一步都对应其中一张牌思路不会乱。在线文档可随时查快速上手、API 说明、命令行工具。代码不长遇到不确定的参数直接看源码注释最准。第一步装好依赖并锁定一台最快的行情服务器安装很简单新手直接装全家桶避免后续缺命令行依赖# 推荐包含核心依赖 命令行依赖 全部扩展 pip install -U mootdx[all] # 如果你更想跟踪最新源码也可以拉仓库后本地安装 git clone https://gitcode.com/GitHub_Trending/mo/mootdx pip install -U -e mootdx装完先别急着写代码先做一件事——选服务器。通达信行情服务器有几十台响应速度天差地别mootdx 提供了一键测速命令python -m mootdx bestipbestip会并发测试所有已知服务器把最快的那台写进配置文件位于用户主目录下的.mootdx/config.json。为什么先做这步后续Quotes默认从配置里读最优 IP你手动指定的服务器如果已经失效会直接拖垮整个工具的体验。执行pip install -U mootdx[all]安装执行python -m mootdx bestip完成测速打开.mootdx/config.json确认BESTIP已写入这样做的好处工具启动即连上最快节点后续所有请求的延迟都有保障而且bestip写好的配置是持久化的不用每次启动都重测。第二步三行代码接入实时行情关键参数逐个说先验证最小可用闭环——拉一只股票的最新快照from mootdx.quotes import Quotes # marketstd 表示沪深股票想要期货/黄金等扩展市场就传 ext client Quotes.factory( marketstd, bestipTrue, # 启动时自动测速覆盖配置里的旧 IP heartbeatTrue, # 心跳保活长时间空闲不会被服务器踢下线 timeout15, # 单次请求超时上限单位秒网络差可调到 20 ) # 传入字符串或列表都可以返回 pandas DataFrame snap client.quotes(symbol600036) print(snap[[price, last_close, open, high, low, vol]])为什么这些参数这么设heartbeatTrue是盯盘工具的标配。行情连接空闲几分钟后容易被服务器断开有了心跳就不会出现下午一看数据早就停了的尴尬。timeout15是宁可慢一点、不可直接报错的折中。设太小在弱网下频繁失败设太大又会拖住批量任务。bestipTrue每次启动多花一两秒测速换来的是整个会话期间的稳定低延迟对长跑脚本尤其划算。拿到快照后K 线是更常用的数据形态# frequency9 是日线8 是一分钟线字符串写法也支持如 day bars client.bars(symbol600036, frequency9, offset20) print(bars.tail())offset是单次返回条数上限 800超出会自动截断到 800——这个限制直接决定了下一步我们要做的优化。常见坑如果quotes()返回空 DataFrame第一反应不要怀疑代码先跑一遍python -m mootdx bestip换服务器多数情况是连到了失效节点。这样做的好处用最少的参数拿到标准 DataFrame索引、列名都是约定好的后面接任何 pandas 运算都无缝。第三步把本地通达信数据变成可复盘的 DataFrame在线接口适合要什么拿什么但如果你本机装了通达信客户端里面沉淀着几年甚至十几年的历史数据离线读取才是高效玩法。from mootdx.reader import Reader # tdxdir 指向通达信安装目录注意路径里要有 vipdoc 子目录 reader Reader.factory(marketstd, tdxdirC:/new_tdx) # 日线数据对应 vipdoc/sh/lday/ 或 vipdoc/sz/lday/ daily reader.daily(symbol600036) # 1 分钟线vipdoc/*/minline/ min1 reader.minute(symbol600036) # 5 分钟线vipdoc/*/fzline/ min5 reader.fzline(symbol600036)原理拆解通达信把每只股票的行情存成二进制文件路径规律是vipdoc/市场/类型/代码.扩展名。Reader做的事就是按市场自动判断路径sh/sz/bj/扩展市场ds再调用二进制解析器转成 DataFrame。你完全不用关心字节怎么排传个代码就行。如果你要批量读一堆股票可以这样写import pandas as pd from mootdx.reader import Reader reader Reader.factory(marketstd, tdxdirC:/new_tdx) # 遍历代码批量读日线单只失败不影响整体 def load_pool(symbols): rows [] for code in symbols: df reader.daily(symbolcode) if df is not None and not df.empty: df[code] code rows.append(df) return pd.concat(rows) pool load_pool([600036, 000001, 000858]) print(pool.groupby(code).size())这样做的好处历史数据本地读秒级返回、零网络开销回测和批量清洗跑起来又快又稳。第四步用财报数据给股票做一次基本面体检盯盘看的是价格但基本面数据能帮你过滤掉财报暴雷的标的。mootdx 的Affair负责财报文件的全流程列清单、下载、解析。from mootdx.affair import Affair # 1) 查看服务器上有哪些财报文件文件名带季度日期 md5 校验 files Affair.files() print(files[:3]) # [{filename: gpcw20231231.zip, hash: ..., filesize: ...}] # 2) 下载指定季度断点续传靠 md5 判断文件是否已存在 Affair.fetch(downdirfin, filenamegpcw20231231.zip) # 3) 解析成 DataFrame列名是中文索引是股票代码 df Affair.parse(downdirfin, filenamegpcw20231231.zip) print(df.columns[:8])解析出的表结构是一行一只股票、一列一个财务指标。比如你想看一只股票的每股收益排名df Affair.parse(downdirfin, filenamegpcw20231231.zip) # 选几个关键列做体检 keys [每股收益, 每股净资产, 净资产收益率] row df.loc[600036, keys] print(row)常见坑Affair.parse如果本地没有对应文件会自动先下载但文件名必须和files()返回的完全一致别自己脑补日期比如服务器只有gpcw20231231.zip你却写gpcw2023.zip会查不到文件。这样做的好处财报拉取、校验、解析三件事一次封装完你拿到的直接是带中文表头的 DataFrame可以立刻丢进筛选逻辑。提速一步分段翻页 复权把历史数据一次拉全到这里最小可用闭环已经通了。现在做关键优化——拉全历史 K 线。前面说过offset单次上限 800 根约等于 3 年日线。想拿 10 年数据就得分段翻页import pandas as pd from mootdx.quotes import Quotes client Quotes.factory(marketstd, heartbeatTrue) def pull_full_history(symbol, total2400): 分段翻页拉取日线total 为期望的总根数约等于 10 年 frames [] # start 是偏移量第一次取 0-800第二次 800-1600依此类推 for start in range(0, total, 800): part client.bars(symbolsymbol, frequency9, startstart, offset800) if part is None or part.empty: break frames.append(part) return pd.concat(frames).drop_duplicates().sort_index() full pull_full_history(600036) print(full.shape)为什么这样翻页而不是一次要 10000协议层面单次最大 800硬要更多会被静默截断用start分段既能拿全又方便中途断掉重试。另一个高频需求是复权。股票除权除息后价格会跳空直接用原始价算收益率会失真。mootdx 在bars()里内置了复权开关# 前复权以最新价为基准回溯修正历史价 qfq client.bars(symbol600036, frequency9, adjustqfq) # 后复权以最早价为基准适合长期收益测算 hfq client.bars(symbol600036, frequency9, adjusthfq)复权因子来自新浪的除权除息数据xdxr接口 因子修正具体实现可参考仓库里的复权示例和基础复权脚本。这样做的好处一个start循环 一个adjust参数就把历史数据全不全和价格准不准两个经典问题一次解决后续算 MACD、回测收益时不用再返工。踩坑实录三个真实会炸的问题及解法工具写完后实际运行中你会遇到三类问题逐个给解法1. 连上就报错 / 返回空数据多半是默认服务器失效。解法分两步重新执行python -m mootdx bestip更新配置在Quotes.factory()里保持bestipTrue让每次启动自动兜底2. 长时间运行后行情静默停止连接被服务器回收了。解法是heartbeatTrue保活如果还是断可以在主循环里捕获异常后重建client。具体参数细节见 报价 API 文档。3. M1 芯片 Mac 装不上依赖mootdx 的财报解析依赖mini-racer而它在 M1 上有兼容问题安装会失败。解法是改用扩展安装或跳过该依赖详见官方 FAQdocs/faq/py_mini_racer.md。常见坑不要图省事把timeout设成 100长任务遇到故障节点时会卡到怀疑人生保持 15~20 秒配合重试逻辑才是正解。收尾把四步合成一个一键更新看板脚本所有零件都齐了现在合成一个可运行的脚本。它会更新服务器、拉实时快照、补本地历史并把结果落盘为 CSVfrom mootdx.quotes import Quotes from mootdx.reader import Reader from mootdx.utils import to_file import pandas as pd WATCH [600036, 000001, 000858] # 你的自选池 TDXDIR C:/new_tdx # 换成你的通达信安装目录 def update_board(): # 1) 在线拉自选池实时快照 client Quotes.factory(marketstd, bestipTrue, heartbeatTrue) snap client.quotes(symbolWATCH) to_file(snap, board/live.csv) # to_file 支持 csv/xlsx/json/h5 # 2) 离线补一份本地日线 reader Reader.factory(marketstd, tdxdirTDXDIR) rows [reader.daily(symbols) for s in WATCH] to_file(pd.concat(rows), board/history.csv) print(看板更新完成: board/live.csv, board/history.csv) if __name__ __main__: update_board()to_file会根据扩展名自动选导出格式出自 mootdx/utils比手写to_csv省几行。下一步行动把TDXDIR换成你自己的通达信目录、把WATCH换成你真正在盯的代码跑一遍这个脚本然后用 pandas 对history.csv算一次 20 日均线——跑通这一步你就正式上手 mootdx 了。之后再想加功能按在线/离线/财报三张牌对号入座即可。【免费下载链接】mootdx通达信数据读取的一个简便使用封装项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

小红书下载工具XHS-Downloader完整上手教程:30秒批量保存无水印高清作品

小红书下载工具XHS-Downloader完整上手教程:30秒批量保存无水印高清作品

小红书下载工具XHS-Downloader完整上手教程:30秒批量保存无水印高清作品 【免费下载链接】XHS-Downloader 小红书(XiaoHongShu、RedNote)链接提取/作品采集工具:提取账号发布、收藏、点赞、专辑作品链接;提取搜索结果作…

2026/9/25 2:48:21 阅读更多 →
10分钟搞定Windows区域模拟:Locale Emulator完整上手与右键菜单消失修复指南

10分钟搞定Windows区域模拟:Locale Emulator完整上手与右键菜单消失修复指南

10分钟搞定Windows区域模拟:Locale Emulator完整上手与右键菜单消失修复指南 【免费下载链接】Locale-Emulator Yet Another System Region and Language Simulator 项目地址: https://gitcode.com/gh_mirrors/lo/Locale-Emulator “双击一个日文游戏&#x…

2026/9/23 3:24:25 阅读更多 →
GRUB启动项管理:安全删除冗余条目与优化引导菜单

GRUB启动项管理:安全删除冗余条目与优化引导菜单

1. 问题缘起:当GRUB启动菜单变得臃肿时如果你和我一样,是个喜欢折腾Linux和Windows双系统,或者经常重装、测试不同发行版的老玩家,那你一定对GRUB(GRand Unified Bootloader)这个老朋友又爱又恨。爱它&…

2026/9/23 4:15:33 阅读更多 →

最新新闻

Java工业物联网IOT驱动包:统一Modbus-TCP、Bacnet与OPC-UA协议接入

Java工业物联网IOT驱动包:统一Modbus-TCP、Bacnet与OPC-UA协议接入

简介:这份基于Java的物联网IOT通用驱动包设计源码,面向中高级Java开发者与系统集成商,解决Modbus-TCP、Bacnet、OPC-UA等多协议设备接入问题,封装为SDK形式,可直接嵌入业务系统。压缩包共76个文件,约1.73MB…

2026/9/25 3:30:49 阅读更多 →
CRM云端部署与Excel迁移避坑指南

CRM云端部署与Excel迁移避坑指南

1. DeskcommCRM不是“另一个Excel插件”,而是客户数据主权的重建起点你有没有过这样的经历:销售同事发来一份标着“最新客户清单_V12_终版_真的终版.xlsx”的文件,里面混着三张工作表——一张是去年的线索池,一张是今年Q1跟进记录…

2026/9/25 3:30:49 阅读更多 →
RisingWave 开发者文档体系:构建 rustdoc 索引页与核心 crate 导航指南

RisingWave 开发者文档体系:构建 rustdoc 索引页与核心 crate 导航指南

数据库流处理后端数据工程 【免费下载链接】risingwave Event streaming platform for agentic AI. Continuously ingest, transform, and serve event streams in real time, at scale. 项目地址: https://gitcode.com/gh_mirrors/ri/risingwave 点击查看 免费下载…

2026/9/25 3:30:49 阅读更多 →
苹果CMS+油条视频模板视频站搭建全攻略:从宝塔部署到上线备份

苹果CMS+油条视频模板视频站搭建全攻略:从宝塔部署到上线备份

简介:油条视频是一套基于苹果CMS系统的视频建站完整解决方案,面向需要快速搭建影视资源站的站长、运营者及PHP二次开发学习者。系统后台内置自定义参数,可灵活对应会员升级与积分充值页面;视频、演员、专题、收藏、会员等模块齐全…

2026/9/25 3:30:49 阅读更多 →
OpenTTD 编译实战:依赖库、CMake 构建流程与 Windows/多平台调试选项

OpenTTD 编译实战:依赖库、CMake 构建流程与 Windows/多平台调试选项

游戏开发 【免费下载链接】OpenTTD OpenTTD is an open source simulation game based upon Transport Tycoon Deluxe 项目地址: https://gitcode.com/gh_mirrors/op/OpenTTD 点击查看 免费下载 OpenTTD(基于 Transport Tycoon Deluxe 的开源运输模拟游…

2026/9/25 3:30:49 阅读更多 →
robot-dog-swarm-control 使用教程:服务端与客户端如何分工,让多只机器狗听令而同步

robot-dog-swarm-control 使用教程:服务端与客户端如何分工,让多只机器狗听令而同步

robot-dog-swarm-control 使用教程:服务端与客户端如何分工,让多只机器狗听令而同步 【免费下载链接】CupCode_robot-dog-swarm-control模块 源师兄扩展项目: 机器狗群控 | 由源师兄组织创建 项目地址: https://gitcode.com/yuanshixiong/robot-dog-sw…

2026/9/25 3:29:49 阅读更多 →

日新闻

AI元人文:从工具使用到思维重构的深度探索

AI元人文:从工具使用到思维重构的深度探索

最近半年我一直在琢磨一件事:AI元人文到底是什么?说白了,就是“用元视角重新审视人与AI的关系”,也在“探索AI如何反向逼着我们发现自己的思考边界”。标题里的“元探索”,在我看就是一层套一层的追问——当你用AI解决…

2026/9/25 0:00:41 阅读更多 →
Python+CNN车牌识别实战:从数据预处理到模型训练与部署

Python+CNN车牌识别实战:从数据预处理到模型训练与部署

简介:基于Python与卷积神经网络的车牌识别项目,面向计算机视觉初学者及智能交通开发者,目标是帮助用户掌握从数据预处理、模型构建到实际部署的完整流程。压缩包共25个文件,包含jpg/png图像样本、py训练脚本、md说明文档、dat数据…

2026/9/25 0:00:41 阅读更多 →
Vim基础操作全攻略:保存退出、模式切换与高频命令实战

Vim基础操作全攻略:保存退出、模式切换与高频命令实战

1. 项目概述1.1 核心需求解析今天聊聊Vim。写这个题目的原因是:几乎每个后端开发者、运维人员、数据工程师某天都会遇到一个场景——深夜加班,服务器登录界面只有黑底白字,编辑器只有vi/vim,你必须在五分钟内完成一次配置修改并保…

2026/9/25 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →