恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
Mootdx 实战指南:10 个核心入口读通透达信本地金融数据
首页
资讯中心
/
Mootdx 实战指南:10 个核心入口读通透达信本地金融数据
Mootdx 实战指南:10 个核心入口读通透达信本地金融数据
发布时间:2026/10/21 10:43:40
Mootdx 实战指南10 个核心入口读通透达信本地金融数据【免费下载链接】mootdx通达信数据读取的一个简便使用封装项目地址: https://gitcode.com/GitHub_Trending/mo/mootdxMootdx 是把通达信数据读取流程封装成 Python API 的开源库。它直接解析安装在本地磁盘上的通达信数据文件让你不必依赖付费行情接口或爬虫就能在脚本中取得 A 股历史日线、分钟线、板块与财务报表。本文面向需要离线量化数据的 Python 开发者先配置好数据目录再按接口逐层读取、加工数据最后处理批量与性能问题。项目名为 Mootdx核心功能是通达信本地数据 Python 解析与 A股历史数据 Python 获取。一、项目定位与适用场景Mootdx 的定位是通达信数据的 Python 读写层离线部分由Reader直接解析vipdoc下的二进制行情文件财务部分由Affair从通达信服务器拉取专业财务文件并解析成 DataFrame实时部分由Quotes连接行情服务器在线取数。三者入口清晰按数据类型选择即可。典型场景有三个量化回测批量取多年日线配合复权参数做策略回测基本面研究解析专业财务文件得到资产、利润、现金流与每股指标板块分析读取概念、行业、指数板块文件做轮动与成分股统计与常见数据获取方式相比Mootdx 的离线路线不依赖网络数据口径与你的通达信终端一致方案数据来源是否联网适用场景Mootdx 离线读取本地 vipdoc 文件否批量历史数据、回测在线行情 API通达信行情服务器是实时报价、最新 K 线爬虫网页是一次性抓取、无授权数据二、安装与数据目录配置先用 pip 安装。带[all]会装上实时行情等全部可选依赖只做离线读取则安装基础包即可pip install mootdx[all] # 全功能含实时行情、财务下载 pip install mootdx # 基础离线读取 财务解析tdxdir参数要指向通达信安装根目录即包含vipdoc子目录的那一层不是vipdoc本身。常见位置如下# Windows 常见路径 C:/new_tdx D:/tdx E:/zd_zsone/tdx # macOS终端资源目录 /Applications/同花顺/通达信.app/Contents/Resources # Linux /home/你的用户名/tdx初始化后跑一段验证代码确认目录有效、读取器可建import mootdx from mootdx.reader import Reader print(Mootdx 版本:, mootdx.__version__) reader Reader.factory(marketstd, tdxdirC:/new_tdx) # 替换为你的实际通达信数据目录 print(Reader 初始化成功可用方法:, hasattr(reader, daily) and hasattr(reader, minute))marketstd为股票市场ext为期货、期权等扩展市场tdxdir路径不存在时构造器会直接抛出tdxdir 目录不存在异常三、核心数据读取流程本节按初始化 → 日线 → 分钟线 → 财务数据的顺序覆盖Reader与Affair的主要读入口。3.1 初始化本地数据读取器Reader.factory是统一工厂按market返回StdReader标准市场或ExtReader扩展市场。内部的路径匹配逻辑会自动判断沪深市场并拼接vipdoc/{sh|sz}/lday/{symbol}.day这类路径调用方只需给 6 位代码。from mootdx.reader import Reader reader Reader.factory(marketstd, tdxdirC:/new_tdx) # 替换为实际目录 ext_reader Reader.factory(marketext, tdxdirC:/new_tdx) # 扩展市场期货等88开头的通达信板块指数、带#的扩展代码都会被find_path自动归入正确目录无需手动区分沪深。3.2 通达信日线数据 Python 读取daily(symbol)返回 DataFrame列为open / high / low / close / vol / amount并额外生成volume列与vol同值索引为date转换出的日期。daily reader.daily(symbol600036) # 默认不复权 qfq reader.daily(symbol600036, adjustqfq) # 前复权 hfq reader.daily(symbol600036, adjusthfq) # 后复权 print(daily.head(3))adjustqfq/hfq分别对应前复权、后复权01/02为等价缩写复权因子需联网获取文件缺失时返回空 DataFrame不会抛异常批量任务里要判空3.3 获取 1 分钟与 5 分钟线本地分钟数据分两种文件minline下的lc1/11 分钟与fzline下的lc5/55 分钟接口会自动匹配两种后缀都兼容。m1 reader.minute(symbol688001, suffix1) # 1 分钟线 m5 reader.fzline(symbol688001) # 5 分钟线等价于 minute(suffix5) print(len(m1), len(m5))注意本地分钟文件通常只保留最近 1~2 个交易日要更长历史需先让终端下载或改用Quotes在线接口取数。3.4 解析通达信专业财务数据财务数据不在vipdoc里而由Affair从通达信财务服务器下载.zip文件再解析。parse会先检查本地是否已有该文件没有则触发下载。from mootdx.affair import Affair files Affair.files() # 远程文件清单 data Affair.parse(downdirtmp, filenamegpcw20211231.zip) print(data.loc[600036, [基本每股收益, 净资产收益率, 净利润]])返回 DataFrame 以股票代码为索引首列为report_date报告期如20211231其余为数百个指标列资产、负债、利润、现金流、每股与比率类指标字段对照见 docs/api/fields.md3.5 读取板块与扩展市场板块文件位于T0002/hq_cache下扩展市场期货、期权等日线走ExtReader。gn reader.block(symbolblock_gn.dat) # 概念板块 zs reader.block(symbolblock_zs.dat, groupTrue) # 指数板块分组格式 fut ext_reader.daily(symbol29#A1801) # 扩展市场日线groupTrue时按板块名聚合返回方便统计成分股数量扩展代码用市场#代码格式。四、数据加工与分析实战以下两个示例直接基于daily()的输出列可独立运行。4.1 批量读取多只股票并计算区间收益from mootdx.reader import Reader reader Reader.factory(marketstd, tdxdirC:/new_tdx) # 替换为实际目录 codes [600036, 000001, 000858, 600519] rows [] for code in codes: df reader.daily(symbolcode) if df.empty: continue rows.append({ code: code, bars: len(df), start: df[close].iloc[0], end: df[close].iloc[-1], return: df[close].iloc[-1] / df[close].iloc[0] - 1, }) import pandas as pd print(pd.DataFrame(rows).set_index(code))输出为每只股票的 K 线条数、区间首末收盘价与累计收益率。注意本地数据未复权时跨越除权日的收益会失真可改用adjustqfq再算。4.2 在日线序列上计算 MA、MACD 与布林带import pandas as pd from mootdx.reader import Reader reader Reader.factory(marketstd, tdxdirC:/new_tdx) # 替换为实际目录 def indicators(df: pd.DataFrame) - pd.DataFrame: df df.copy() df[ma5] df[close].rolling(5).mean() df[ma20] df[close].rolling(20).mean() ema12 df[close].ewm(span12, adjustFalse).mean() ema26 df[close].ewm(span26, adjustFalse).mean() df[dif] ema12 - ema26 df[dea] df[dif].ewm(span9, adjustFalse).mean() df[macd] 2 * (df[dif] - df[dea]) mid df[close].rolling(20).mean() std df[close].rolling(20).std() df[boll_up], df[boll_low] mid 2 * std, mid - 2 * std return df data indicators(reader.daily(symbol600036)) print(data[[close, ma5, ma20, dif, dea, boll_up, boll_low]].tail(5))输出为最近 5 个交易日的价格与各项指标取值rolling窗口未满的前几行为NaN属正常现象。五、性能优化与批量处理5.1 用带过期时间的 lru_cache 缓存重复读取Mootdx 自带mootdx.cache.lru_cache比标准库版本多一个seconds过期参数适合盘中反复取同一区间数据的场景import pandas as pd from mootdx.cache import lru_cache lru_cache(seconds300, maxsize128) def fetch_daily(symbol: str) - pd.DataFrame: return reader.daily(symbolsymbol)适用条件同一进程内重复取相同参数、且能容忍最长 5 分钟的陈旧数据回测等一次性全量拉取场景无需缓存直接读盘即可5.2 线程池并行拉取多只股票当批量任务还包含复权因子网络请求时线程池可以把串行等待摊平from concurrent.futures import ThreadPoolExecutor codes [600036, 000001, 000858, 600519, 300750, 600276] with ThreadPoolExecutor(max_workers8) as pool: result dict(zip(codes, pool.map(lambda c: reader.daily(symbolc, adjustqfq), codes)))注意纯本地读盘是 I/O 轻任务GIL 下并行收益有限线程池主要在联网取复权因子或文件较大时才有明显加速max_workers不宜超过 CPU 核数太多。六、常见问题排查1. 报tdxdir 目录不存在现象Reader.factory初始化即抛异常原因把tdxdir指向了vipdoc子目录或路径拼写错误解决传通达信安装根目录其下应能看到vipdoc文件夹用绝对路径并在 Windows 下统一用/2. 日线返回空 DataFrame现象len(reader.daily(symbolcode)) 0原因本地vipdoc/{sh|sz}/lday/{code}.day不存在该股票从未在终端中下载解决在终端中打开该股票或手动下载日线再重试批量任务中需对空结果显式判空3. 分钟线返回 None现象reader.minute(symbolcode)得到None原因本地minline/fzline目录下没有该代码的lc1/1或lc5/5文件解决先让终端更新分钟数据历史分钟数据可改用Quotes在线接口见 docs/api/quote1.md4. 复权数据与终端显示不一致现象adjustqfq结果与通达信软件画出的价格有偏差原因复权因子来自外部行情源与终端本地算法存在口径差异解决回测前固定一种口径并记录版本对精确对齐要求高的场景以终端数据为准七、延伸资源仓库内可直接参考的材料快速上手docs/quick.md离线数据接口说明docs/api/reader.md财务字段对照表docs/api/fields.md可运行示例sample/行为断言参考tests/数据解析实现mootdx/parse.py、mootdx/reader.py建议的下一步从 sample/basic_reader.py 起步把tdxdir换成自己的目录跑通对照 docs/api/fields.md 熟悉财务列名再写基本面筛选遇到行为疑问时先读 tests/reader/ 里的参数化用例断言即契约离线取数看Reader财务取数看Affair实时行情看Quotes——按数据类型选对应入口本文涉及的接口与参数均与当前实现一致。【免费下载链接】mootdx通达信数据读取的一个简便使用封装项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考