用 mootdx 三步拉通 A 股行情数据:新手入门指南
【免费下载链接】mootdx通达信数据读取的一个简便使用封装项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx
想把通达信里的 K 线、分时和财务数据喂进自己的 Python 回测?mootdx 是通达信数据读取的 Python 封装,把在线行情和本地离线文件都变成几行调用,适合有编程基础、正在找 A 股数据源的新手和普通开发者。
下面按"装好 → 跑通 → 避坑 → 进阶"的顺序走一遍,全程以沪深标准市场为例,所有代码都可以直接复制执行。
快速上手:三分钟拉出第一组 A 股 K 线
pip install -U 'mootdx'from mootdx.quotes import Quotes client = Quotes.factory(market='std', quiet=True) print(client.bars(symbol='600036', frequency=9, offset=10))上面完成了安装和第一次取数:market='std'表示标准股票市场,bars按日 K(frequency=9)取最近 10 条。返回的是标准 pandas DataFrame,包含日期、开高低收、成交量这几列,拿到手就能直接算指标。
核心功能速览:通达信数据的四个主要入口
在线实时行情—— 场景:盘中看自选股价格和涨跌幅;能力:一次批量取多只股票,K 线支持复权;入口是 mootdx/quotes.py 的Quotes.factory:
client.quotes(symbol=['000001', '600300']) # 多只股票实时行情 client.bars(symbol='600036', adjust='qfq') # 前复权日 K离线历史数据—— 场景:回测需要本地已有数据;能力:直接解析通达信终端vipdoc目录下的.day、.lc1文件;入口是 mootdx/reader.py 的Reader.factory:
reader = Reader.factory(market='std', tdxdir='C:/new_tdx') reader.daily(symbol='600036') # 日线 reader.minute(symbol='600036') # 1 分钟线财务数据—— 场景:基本面分析要历史报表;能力:远程文件列表、下载、解析gpcw系列 zip 包并导出 CSV;入口是 mootdx/affair.py:
from mootdx.affair import Affair files = Affair.files() data = Affair.parse(downdir='output', filename='gpcw20170930.zip') data.to_csv('gpcw20170930.csv')命令行导出—— 场景:不想写代码,只想把数据落到文件;能力:reader/quotes/bestip三个子命令覆盖离线读取、在线行情和测速,详见 docs/cli/reader.md 和 docs/cli/bestip.md。
典型使用场景
用命令行把本地日线批量导出成 CSV
数据已经同步到本地(比如装过通达信终端)时,一条命令直接出文件,跑完后工作目录会生成dt.csv,可以直接丢给 pandas 或 Excel:
mootdx reader --tdxdir C:/new_tdx -s 600036 -a daily -o dt.csv-a参数支持daily(日线)、minute(一分钟线)、fzline(五分钟线)三种,换股票只改-s即可。
在 Python 里批量监控自选股异动
盘中监控不想为每只股票单独建连接,quotes支持一次传入多个代码。跑完后终端会打印出触发预警的股票名、价格和涨跌幅:
from mootdx.quotes import Quotes client = Quotes.factory(market='std', multithread=True) df = client.quotes(symbol=['000001', '600300', '600036']) for row in df.to_dict('records'): # 涨跌幅绝对值超过 3% 就预警 if abs(row['change_percent']) > 3: print(row['name'], row['price'], row['change_percent'])常见问题与踩坑记录
连接超时或找不到可用服务器
现象:首次连接报超时,或日志里一片"验证失败"。原因:服务器列表里有失效节点,本地还没测过最优 IP。解决:先跑python -m mootdx bestip -vv,加-w参数会把最快服务器写入配置文件~/.mootdx/config.json,见 docs/cli/bestip.md。
单次 K 线拉取条数有上限
现象:offset给 1000 也只返回 800 条。原因:接口单次offset上限就是 800,源码里做了截断。解决:用start参数翻页继续取更早的数据,或者直接用离线Reader读本地.day文件拿完整历史。
M1 Mac 上 PyMiniRacer 不可用
现象:在 M1 Mac 上使用相关依赖时 PyMiniRacer 报错。原因:该库尚未适配 Apple Silicon 架构。解决:README 已将其列为已知问题并指向上游 issue,M1 用户可换 x86 的 Python 环境运行。
进阶:性能与生态对接
如果你只是跑个 demo 或做一次性分析,可以跳过本节。
最优服务器 + 多线程 + 心跳:
bestip=True会先测速再连接,multithread支持批量请求,heartbeat保持长连接不掉线:client = Quotes.factory(market='std', bestip=True, multithread=True, heartbeat=True, timeout=15)pandas 结果缓存:mootdx/utils/pandas_cache.py 提供
pd_cache装饰器,把 DataFrame 落盘缓存并支持过期时间,适合反复拉取同一批股票的脚本。复权与框架对接:
bars和k都支持adjust='qfq'/'hfq'直接拿复权价,mootdx/utils/adjust.py 还封装了外部复权因子来源;所有接口返回标准 DataFrame 🚀,可以直接接 backtrader 等回测框架的数据源。
延伸资源与收束
- 快速上手:docs/quick.md
- 标准行情接口全参数:docs/api/quote1.md
- 离线数据接口:docs/api/reader.md
- 财务数据字段对照:docs/api/fields.md
- 可运行示例与测试用例:sample/、tests/
mootdx 最适合手里有通达信数据、想让 Python 脚本直接吃数据的个人量化开发者。下一步建议先从Reader把本地vipdoc目录接进自己的回测流程,跑顺之后再叠加在线行情和财务数据。
【免费下载链接】mootdx通达信数据读取的一个简便使用封装项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考