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/10/17 5:43:37 阅读更多 →
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/10/17 9:25:25 阅读更多 →
GRUB启动项管理:安全删除冗余条目与优化引导菜单

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

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

2026/10/17 2:06:59 阅读更多 →

最新新闻

OpenClaw 3.13实测:浏览器操作从“能点”到“流畅”的质变

OpenClaw 3.13实测:浏览器操作从“能点”到“流畅”的质变

OpenClaw 3.13的更新公告放出来那天,我所在的讨论群里直接就炸了。不是因为发布节奏,而是因为公告里那句话:"3.13版本将流畅操作浏览器。"过去大半年,这个被大家称作"小龙虾"的开源AI助手项目,一直…

2026/10/17 20:22:29 阅读更多 →
从RAG到LoopAgent:用循环检索解决复杂文档问答难题

从RAG到LoopAgent:用循环检索解决复杂文档问答难题

最近在维护某跨平台系统的文档检索模块时,我临时接手了一个问题频出的老功能:知识库里的资料不少,但问答准确率就是上不去。一开始我按照惯性想继续优化RAG管线,换更好的embedding模型、扩召回数量、调prompt,结果折腾…

2026/10/17 20:22:29 阅读更多 →
PyTorch入门实战:手写数字识别项目全流程解析

PyTorch入门实战:手写数字识别项目全流程解析

最近有朋友问我PyTorch怎么入门,我每次都推荐先做一个数字识别项目。原因很简单:数据集好找,任务直观,网络代码量不大,训练十分钟就能看到效果,而且从数据加载到模型评估,几乎覆盖了深度学习最常…

2026/10/17 20:22:29 阅读更多 →
SvalbardIdeaVault 许可与局限:CC BY 4.0、arXiv元数据条款与LLM标注注意事项,一文说清

SvalbardIdeaVault 许可与局限:CC BY 4.0、arXiv元数据条款与LLM标注注意事项,一文说清

【免费下载链接】SvalbardIdeaVault 项目地址: https://ai.gitcode.com/hf_mirrors/Jerry999/SvalbardIdeaVault 点击查看 免费下载 SvalbardIdeaVault 是一个包含 2,669,631 篇 arXiv 论文研究想法 的开源数据集,每篇论文都被提炼为「问题定义 核心直…

2026/10/17 20:21:28 阅读更多 →
基于马尔可夫链与NSGA2的水资源公平分层分配模型

基于马尔可夫链与NSGA2的水资源公平分层分配模型

简介:这份资源是2022年美国数学建模竞赛(美赛)B题M奖优秀论文的完整PDF,面向备战美赛、数学建模竞赛的高校学生与建模爱好者,聚焦美国西部千年一遇干旱危机下的水资源分配最优化问题。论文提出FHSD公平分层供需模型&am…

2026/10/17 20:21:28 阅读更多 →
具身智能进入系统工程时代:感知-决策-行动-反馈闭环构建指南

具身智能进入系统工程时代:感知-决策-行动-反馈闭环构建指南

简介:本资源是中国信息通信研究院与北京人形机器人创新中心有限公司联合发布的《具身智能发展报告(2024年)》权威研报,面向AI研究人员、智能机器人开发者、产业规划者及高校师生,系统解答具身智能“是什么、怎么建、如…

2026/10/17 20:21:28 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →