通达信数据接口指南:使用 Mootdx 进行 Python 金融数据分析
如何用 Mootdx 解析通达信.dat 文件结构?
通达信软件存储的市场数据(如板块分类、分钟线)通常以.dat 二进制文件形式存在。Mootdx 通过自定义解析器突破了这些文件的读取限制,核心原理在于对文件头标识和数据块结构的精准解析。
揭秘 block_gn.dat 板块数据格式
通达信的板块数据文件(如 block_gn.dat)采用固定长度记录格式,前 4 字节为板块数量,后续每个板块条目包含 128 字节板块名称和 4 字节股票数量。Mootdx 的 BlockReader 类通过以下代码实现解析:
from mootdx.reader import Reader
reader = Reader.factory(market="std", tdxdir="../fixtures")
df = reader.block(symbol="block_gn.dat", group=True)
print(df[["blockname", "code"]].head())
执行后将获得包含板块名称与对应股票代码的 DataFrame:
blockname code
0 航天航空 600893
1 航天航空 600038
2 航天航空 600316
解析.incon 文件的板块配置信息
通达信的 incon.dat 文件存储板块分类配置,采用"######"分隔不同板块组。Mootdx 通过字符串分割和字典推导实现数据提取:
config = reader.parse(symbol="incon.dat")
print(config["INDUSTRY"])
如何用 Mootdx 实现金融数据实战分析?
Mootdx 提供本地文件读取和在线行情接口两种数据获取方式,满足不同场景需求。以下实战案例涵盖量化分析常用的数据处理场景。
场景一:本地日线数据读取与复权处理
问题:通达信本地日线数据未包含复权信息,手动计算复杂且易错。
解决方案:使用 Mootdx 的复权工具结合财务数据自动计算复权因子:
from mootdx.quotes import Quotes
from mootdx.utils.adjust import to_qfq
client = Quotes.factory(market="std")
df = client.bars(symbol=, frequency=, offset=)
xdxr = client.xdxr(symbol=)
qfq_data = to_qfq(df, xdxr)
(qfq_data[[, ]].tail())

