☰
通达信数据读取,Mootdx 三步跑通
2026/10/21 2:06:13 网站建设 项目流程

通达信数据读取,Mootdx 三步跑通

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

做量化分析需要 A 股行情数据时,Mootdx 把通达信的数据读取简化成几行 Python 调用:读本地行情文件、拉线上实时行情,直接返回 pandas DataFrame。

它替你省了什么

以前你要:装通达信 → 手动导出 CSV → 写脚本清洗二进制格式 → 转换成 DataFrame → 再喂给策略代码。现在只需要一个tdxdir路径加一个symbol。

痛点就三个:

  • 通达信的.day、.lc1等文件是私有二进制格式,解析要自己逆向
  • 线上行情服务器要自己选 IP、管重连
  • 本地文件和线上接口各有各的调用方式

Mootdx 把二进制解析、服务器选择、DataFrame 转换这三步直接砍掉了,剩下的是写业务逻辑。

装好,跑通第一行

环境要求

  • Python 3.8 及以上
  • Windows / MacOS / Linux 均可
  • 读本地数据需要装有通达信(Reader读它的vipdoc数据目录);只拉线上行情不需要

安装

两种装法,按需选择:

命令适合谁
pip install 'mootdx'只用数据读取
pip install 'mootdx[all]'依赖关系不清时,一步装全

验证

import mootdx from mootdx.quotes import Quotes client = Quotes.factory(market='std') print(mootdx.__version__) # 打印版本号,如 0.11.7 print(client.bars(symbol='600036', frequency=9, offset=5)) # 你应该看到一行 open/high/low/close/vol 列的 DataFrame, # 最近 5 根日线,说明连接和解析都通了

跑通这 5 行,第一个 API 调用就成了。

能读到哪些数据

  • 日线 / 周线 / 月线 K 线:本地.day文件或线上bars()拉取
  • 分钟线:1、5、15、30、60 分钟及 5/15/30 分钟分时线
  • 实时行情:五档买卖盘、最新价
  • 指数行情:上证指数、深证成指等
  • 逐笔成交:transaction(),含历史日期回补
  • 股票列表与总数:stocks()、stock_count()
  • 财务摘要:finance(),市盈率等基础字段
  • 除权除息记录:xdxr(),复权计算的输入
  • 板块数据:行业、概念、地域及自定义板块
  • 财务报表:Affair下载解析,输出到本地

市场支持上,market='std'覆盖 A 股与指数,market='ext'走扩展市场(期货等),两边是同一套bars/minute接口,不用换写法。

核心用法

读取本地通达信日线:Reader 一个路径搞定

思路:Reader.factory拿到StdReader后按股票前缀自动定位 sh/sz 目录下的.day文件,你只负责给代码。

from mootdx.reader import Reader reader = Reader.factory(market='std', tdxdir='/path/to/your/new_tdx') daily = reader.daily(symbol='600036') print(daily[['open', 'high', 'low', 'close', 'volume']].tail()) # 注意:路径指向 vipdoc 所在目录(通达信安装根目录)

不想依赖本地文件,就换成线上接口,代码里只剩一行差异:

from mootdx.quotes import Quotes client = Quotes.factory(market='std') bars = client.bars(symbol='600036', frequency=9, offset=800) print(bars.tail()) # 市场代码不用传,内部按前缀自动识别 sh/sz # 港股等扩展市场换一下工厂参数: ext = Quotes.factory(market='ext') bars2 = ext.bars(market=47, symbol='rb2301', frequency=9)

拿到 K 线后,复权和指标都是标准 pandas 操作,这是最高频的用法:

# 在线拉日线,adjust='qfq' 自动取除权除息数据做前复权 df = client.bars(symbol='600036', frequency=9, offset=300, adjust='qfq') df['MA5'] = df['close'].rolling(5).mean() df['MA20'] = df['close'].rolling(20).mean() # 金叉信号:MA5 上穿 MA20 cross_up = (df['MA5'] > df['MA20']) & (df['MA5'].shift(1) <= df['MA20'].shift(1)) print(cross_up[cross_up].index) # 金叉发生的日期 # 不想用内置复权,也可手动:client.xdxr(symbol=...) + mootdx.tools.reversion

一个完整流程

以"拉近 1600 根日线 → 算双均线 → 输出金叉信号"为例,分四步。

第 1 步,初始化客户端并分块拉历史数据(单次请求上限 800 根):

from mootdx.quotes import Quotes from mootdx.utils import to_file client = Quotes.factory(market='std') symbol = '600036' parts = [client.bars(symbol=symbol, frequency=9, start=i * 800, offset=800) for i in range(2)]

第 2 步,合并成完整序列:

import pandas as pd df = pd.concat(parts).drop_duplicates().sort_index() print(len(df), df.index[0], df.index[-1])

第 3 步,算指标并生成信号:

df['MA5'] = df['close'].rolling(5).mean() df['MA20'] = df['close'].rolling(20).mean() signal = ((df['MA5'] > df['MA20']) & (df['MA5'].shift(1) <= df['MA20'].shift(1))) print(signal[signal].index)

第 4 步,导出结果:

df.to_csv('signal_600036.csv', index_label='date') # 或用内置封装,按扩展名选 csv/xlsx/json: # to_file(df, 'signal_600036.csv')

四步走完,数据落盘,可以直接喂给回测或分析脚本。

容易踩的坑

tdxdir 目录不存在直接抛异常

→ 原因:tdxdir要传通达信安装根目录(里面有vipdoc),不是vipdoc本身。

→ 解法:

from pathlib import Path tdxdir = 'D:/new_tdx' assert Path(tdxdir) / 'vipdoc' in list(Path(tdxdir).glob('vipdoc*'))

frequency传错字符串,数据"静默"变成 5 分钟线

→ 原因:字符串不在内置周期表里时不会报错,会回退到第一个周期。

→ 解法:直接用数字周期,日线 9、1 分钟 8、周线 5、月线 6:

client.bars(symbol='600036', frequency=9, offset=10)

复权结果出现异常值

→ 原因:adjust='qfq'依赖xdxr数据,没有除权记录的股票拿不到复权因子。

→ 解法:先检查再算:

xd = client.xdxr(symbol='600036') print(len(xd)) # 为 0 说明无除权记录,直接用不复权数据

往哪走

返回的是标准 DataFrame,接 backtrader 这类回测框架的 PandasData 直接可用;画图交给 mplfinance,不用自己处理 K 线渲染。日常巡检可以装上 CLI 版(mootdx[cli]),命令行直接查行情。更多接口细节见 docs/api/,跑不通时先看 sample/ 下的basic_reader.py和basic_quotes.py。

Mootdx 做的事就一件:把通达信的本地文件和线上行情变成现成的 DataFrame。现在pip install 'mootdx',然后照着 sample/ 跑一遍basic_quotes.py。

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

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

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

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

立即咨询