Python通达信数据获取完整指南:5分钟用mootdx搭建A股行情通道
【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx
你的量化策略回测到一半,卡在了数据上:免费接口延迟高、格式乱,付费接口价格贵、文档厚。这不是你的问题,而是大多数做A股数据分析的人都会撞上的墙。mootdx就是一个把通达信数据获取这件事压缩到几行代码的Python库,它同时支持实时行情、历史K线、财务数据三类核心数据的读取,帮你把精力留给策略本身。
一句话看懂mootdx是什么
如果把通达信软件比作一个装满了沪深京三市数据的"档案馆",那么mootdx就是配好钥匙、编好索引、能按你要求随时取件的"档案管理员"。你不用关心数据存在哪个文件夹、用什么协议传输,只需要告诉它"我要什么",剩下的它来搞定。
没有它 vs 有了它:差距有多大
| 对比维度 | 没有mootdx | 有了mootdx |
|---|---|---|
| 数据源 | 自己解析通达信二进制文件,格式说明全靠逆向 | 封装好读写逻辑,传入股票代码即可 |
| 实时行情 | 找免费API,随时可能失效、限流 | 直连通达信行情主站,自动切换服务器 |
| 历史K线 | 手动维护日线、分钟线、分时文件 | daily()、minute()、fzline() 一行一个 |
| 返回格式 | 各种自定义结构,还得自己转DataFrame | 直接返回 Pandas DataFrame,开箱即用 |
| 财务数据 | 逐页抓取财报网站,极易被反爬 | 内置批量下载和解析,一条命令拉全量 |
简单说,别人在搬砖,你在用电梯。
极速上手:最小可运行示例
先装依赖(推荐带 [all] 的完整版,省去后续各种扩展模块的烦恼):
pip install -U 'mootdx[all]'
然后创建 hello_mootdx.py,复制下面这段代码:
from mootdx.quotes import Quotes
# 1. 创建行情客户端,market='std' 表示标准市场(股票)
# heartbeat=True 开启心跳保活,避免连接被服务端断开
client = Quotes.factory(market='std', heartbeat=True)
# 2. 获取实时行情快照,symbol 支持字符串或列表
quote = client.quotes('600036')[0]
# 3. 直接打印关键字段,返回的是 DataFrame/字典,取数很直观
print(f"名称: {quote['name']} 现价: {quote['price']} 涨跌幅: {quote['change_percent']}%")
跑起来:
python hello_mootdx.py
如果看到类似 名称: 招商银行 现价: 36.xx 涨跌幅: x.xx% 的输出,说明你的mootdx行情数据获取通道已经打通了。
完整实战:从零拉取K线并计算均线
下面我们用"安装→配置→运行→查看结果"的完整流程,实现一个真实需求:拉取某只股票近一年的日K线,算好5日均线和20日均线,输出给后续策略使用。
第一步:配置数据目录与最优服务器
mootdx 支持离线、在线两种模式。离线模式需要你本机有通达信数据目录(通常是 vipdoc/sh/lday 这种结构),在线模式则直接连接行情主站。为了保证速度,先测一下最快的服务器:
python -m mootdx bestip -w
-w 会把测出的最优服务器写入配置文件 ~/.mootdx/config.json,之后所有请求自动走这条最快的线路,这是提升行情数据获取速度最直接的一招。
第二步:编写抓取与分析脚本
import pandas as pd
from mootdx.quotes import Quotes
client = Quotes.factory(market='std', bestip=True, timeout=15)
# frequency=9 表示日K线;offset 是返回条数,单次最多 800 条
df = client.bars(symbol='600036', frequency=9, offset=800)
# 结果自带 code、datetime、open/high/low/close、vol 等列
df['date'] = pd.to_datetime(df['datetime']).dt.date
df = df.set_index('date')
# 计算均线,直接叠加到同一个 DataFrame 上
df['MA5'] = df['close'].rolling(5).mean()
df['MA20'] = df['close'].rolling(20).mean()
# 最后 5 行就是最新的均线状态
print(df[['close', 'MA5', 'MA20']].tail())
第三步:运行并查看结果
python fetch_kline.py
输出会是一个带日期索引的表格,close 是收盘价,MA5、MA20 是两条均线。这一步跑通后,你完全可以把它封装成自己的数据层函数,供回测、盯盘、提醒等场景反复调用。
第四步:补全财务数据(可选)
行情只是半边天,基本面数据用 Affair 模块一样能搞定:
from mootdx.affair import Affair
files = Affair.files() # 列出所有可下载的财报文件
Affair.fetch(downdir='tmp', filename='gpcw20231231.zip') # 下载指定报告
进阶技巧:三个让效率翻倍的配置
1. 用 bestip=True 自动选路
在 Quotes.factory() 里直接传 bestip=True,每次连接前会自动测速选优,省去手动执行命令行:
client = Quotes.factory(market='std', bestip=True, heartbeat=True)
2. 通过全局配置统一管理参数
mootdx/config.py 提供了一套全局设置,适合在项目入口统一配置:
from mootdx import config
config.set('TDXDIR', '/path/to/tdx_data') # 离线数据根目录
config.set('timeout', 30) # 连接超时时间
设置一次,全局生效,后续所有实例共享。
3. 用 frequency 灵活切换K线周期
同一个 bars() 方法,通过 frequency 参数就能切换周期:0 五分钟、5 周线、6 月线、9 日线,分钟级、日级、周月级全覆盖,写策略时不用再为周期适配写一堆分支。
避坑提醒:新手最容易踩的三个坑
tdxdir目录不存在:Reader初始化时会对目录做校验,路径不存在会直接抛异常。先用python -m mootdx bestip正常联网跑通在线模式,再慢慢补离线目录。- K线单次最多 800 条:
bars()的offset超过 800 会被强制截断,需要更长历史时用start参数分页拉取,或用get_k_data(code, start_date, end_date)按日期区间取数。 - 扩展市场接口可能失效:
market='ext'(期货、黄金等扩展市场)目前状态不稳定,代码里也有明确提示。做股票相关分析请优先用market='std',不要一开始就在扩展市场上浪费时间。
下一步:把数据变成你的生产力
mootdx 适合三类人:想快速验证交易想法的量化新手、需要稳定A股数据源做研究的数据分析师、以及想给自己搭建盯盘/提醒小工具的开发者。它支持 Windows / macOS / Linux 全平台,Python 3.8 以上即可运行。
如果你想继续深入,建议按这条路径走:先跑通本文的在线行情示例,再尝试 mootdx.reader 读取本地通达信历史数据,接着用 mootdx.affair 补上财务维度,最后把所有接口包一层你自己的数据访问类。项目根目录下的 docs/quick.md 有最简明的入门说明,sample/basic_quotes.py 里有更多可直接运行的示例,源码则在 mootdx/quotes.py 和 mootdx/reader.py,想深入实现原理时可以直接读。
现在,打开终端装好 mootdx,先拉一份你关心的股票K线试试。五分钟之后,你会发现自己已经绕过了A股数据获取这道坎。
【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



