☰
用 mootdx 获取通达信 K 线与实时行情:五分钟安装与完整教程
2026/10/21 3:47:17 网站建设 项目流程

用 mootdx 获取通达信 K 线与实时行情:五分钟安装与完整教程

【免费下载链接】mootdx通达信数据读取的一个简便使用封装项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx

mootdx 是一个通达信(TDX)行情数据的简便 Python 封装:从通达信安装目录读取本地离线 K 线,也连线上获取实时行情与 K 线,直接返回 Pandas DataFrame。适合量化新手、数据分析学生和想自建股票数据管线的开发者。

mootdx 解决什么问题

做 A 股数据,通常卡在三个地方:

  • 商业数据服务贵、Web API 繁琐:要注册、申请 token、处理限频,接口文档参差不齐。
  • 通达信的数据不好读:历史 K 线以.day/.lc1/.lc5等二进制文件存放在安装目录的vipdoc子目录下,pandas 无法直接读取。
  • 底层协议库不友好:pytdx 一类库 API 偏底层,行情服务器 IP 变动频繁还要自己处理。

mootdx 填补的就是这个空缺:基于 tdxpy 二次封装的纯 Python 实现,Windows / macOS / Linux 全平台可用,任何入口返回的都是 DataFrame。本地数据零网络直接解析,线上行情直连通达信行情协议,不需要账号和 token。

五分钟安装与第一次运行:一条 pip 命令跑通 K 线

要求 Python 3.8 及以上,一条命令装好全部扩展依赖:

pip install -U 'mootdx[all]'

第一个例子:连线上获取平安银行最近 10 根日 K:

from mootdx.quotes import Quotes client = Quotes.factory(market='std', heartbeat=True, quiet=True) df = client.bars(symbol='000001', frequency=9, offset=10) print(df.tail())

frequency=9表示日 K,返回结果包含open / high / low / close / volume等列,日期直接做成了索引,可以立刻交给 pandas 计算。如果首次连接较慢,可以先在终端跑一次mootdx bestip -v测试最快行情服务器。

核心功能拆解:离线、线上、财务与命令行四个入口

用 Reader 读取本地离线历史 K 线:零网络解析通达信文件

有本地通达信安装目录时,Reader直接解析vipdoc下的二进制文件:

from mootdx.reader import Reader reader = Reader.factory(market='std', tdxdir='C:/new_tdx') print(reader.daily(symbol='600036')) # 日 K print(reader.minute(symbol='600036')) # 1 分钟 K print(reader.fzline(symbol='600036')) # 5 分钟 K

tdxdir指向通达信安装目录(即vipdoc的上一级),市场前缀按代码自动判断,分钟文件.lc1/.1后缀也能自动识别。期货、期权等扩展市场用market='ext',板块数据可用reader.block()读取。

用 Quotes 获取线上实时行情与 K 线:factory 参数与 frequency 代码

Quotes.factory()是线上行情的统一入口,常用组合参数:multithread=True多线程批量取数、heartbeat=True保活、bestip=True重新测速、timeout控制超时。主要方法:

  • client.quotes(symbol=[...]):多股票实时行情,返回 DataFrame
  • client.bars(symbol, frequency, offset):K 线,frequency0=5 分钟、3=小时、4/9=日 K、5=周 K、6=月 K
  • client.bars(symbol, adjust='qfq')/'hfq':自动做前复权 / 后复权
  • client.index()、client.minute()、client.minutes(date=):指数 K、当日分时与历史分时
  • client.xdxr()、client.finance():除权除息事件与单只股票财务信息

用 Affair 批量下载历史财务数据 📥

Affair处理的是按年发布的长期财务数据:Affair.files()返回远程文件列表(带哈希与大小,可据此判断本地是否需要增量更新);Affair.fetch(downdir='tmp')下载;Affair.parse(downdir='tmp')把本地.zip/.dat解析成 DataFrame,再to_csv()导出。字段含义见文档中的财务字段对照表。

用 mootdx CLI 快速导出数据 🖥️

安装[cli]依赖后自带命令行,不用写脚本就能落盘:

  • mootdx reader --tdxdir C:/new_tdx -s 600000 -a daily -o dt.csv:离线导出
  • mootdx bundle -s 600036,600519 -a daily -e csv:批量下载多只股票

一个完整实战案例:用 mootdx 搭最小股票监控

把实时行情和 K 线两个能力串起来,一个脚本盯住自选股并输出 5 日均线:

from mootdx.quotes import Quotes client = Quotes.factory(market='std', heartbeat=True, quiet=True) for symbol in ['000001', '600519']: bar = client.bars(symbol=symbol, frequency=9, offset=60) ma5 = bar['close'].rolling(5).mean().iloc[-1] price = client.quotes(symbol=symbol)['price'].iloc[-1] print(symbol, '现价', price, 'MA5', round(ma5, 2))

跑一次即得每只股票的最新价与 5 日均线;外面再套一层定时循环就是一个简单监控,返回的 DataFrame 也能直接扩展出 RSI、MACD 等技术指标或喂给回测框架。

新手使用 mootdx 常见问题

Q1:Reader报“tdxdir 目录不存在”?tdxdir要指向通达信安装目录,也就是vipdoc的上一级目录。默认配置是C:/new_tdx,请按自己的实际安装路径修改。

Q2:线上连接超时或时好时坏?行情服务器 IP 会变动,建议定期执行下面命令,把测速最优的服务器写入~/.mootdx/config.json:

mootdx bestip -v -w

也可以在Quotes.factory中用server=('ip', 7709)手动指定。

Q3:std和ext有什么区别?std是 A 股标准市场;ext是扩展市场(期货、期权、贵金属等),扩展市场代码带#前缀,例如29#A1801。

Q4:M1 Mac 上 PyMiniRacer 报错?只影响节假日(交易日历)判断功能,行情与 K 线读取不受影响。

进阶与避坑:连接、数据量与复权 🧭

  • 断线处理:项目基础异常是MootdxException,生产代码里捕获它,短暂等待后调用client.reconnect()再重试;长期挂着的进程建议始终开heartbeat=True。
  • 控制数据量:bars单次offset上限 800 条,要更长的历史就用start参数翻页,或直接切换到本地离线数据,一次读全量。
  • 复权依赖外部数据源:adjust='qfq'/'hfq'会从外部行情源拉复权因子,需要联网;只要不复权数据就不要传该参数。另外项目声明仅用于学习交流,不得用于商业目的。

结语与学习资源

从“读不了通达信数据”到“DataFrame 到手”,mootdx 只需要几行代码。建议按下面的路径逐步深入:

  • 快速上手:docs/quick.md
  • 线上行情 API:docs/api/quote1.md
  • 离线 Reader API:docs/api/reader.md
  • 财务数据与字段对照:docs/api/affair.md
  • 可运行示例:sample/

【免费下载链接】mootdx通达信数据读取的一个简便使用封装项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询