Python通达信数据获取完整指南:5分钟用mootdx搭建A股行情通道

Python通达信数据获取完整指南:5分钟用mootdx搭建A股行情通道

【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 【免费下载链接】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 是收盘价,MA5MA20 是两条均线。这一步跑通后,你完全可以把它封装成自己的数据层函数,供回测、盯盘、提醒等场景反复调用。

第四步:补全财务数据(可选)

行情只是半边天,基本面数据用 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 日线,分钟级、日级、周月级全覆盖,写策略时不用再为周期适配写一堆分支。

避坑提醒:新手最容易踩的三个坑

  1. tdxdir 目录不存在Reader 初始化时会对目录做校验,路径不存在会直接抛异常。先用 python -m mootdx bestip 正常联网跑通在线模式,再慢慢补离线目录。
  2. K线单次最多 800 条bars()offset 超过 800 会被强制截断,需要更长历史时用 start 参数分页拉取,或用 get_k_data(code, start_date, end_date) 按日期区间取数。
  3. 扩展市场接口可能失效market='ext'(期货、黄金等扩展市场)目前状态不稳定,代码里也有明确提示。做股票相关分析请优先用 market='std',不要一开始就在扩展市场上浪费时间。

下一步:把数据变成你的生产力

mootdx 适合三类人:想快速验证交易想法的量化新手、需要稳定A股数据源做研究的数据分析师、以及想给自己搭建盯盘/提醒小工具的开发者。它支持 Windows / macOS / Linux 全平台,Python 3.8 以上即可运行。

mootdx通达信数据获取交流二维码

如果你想继续深入,建议按这条路径走:先跑通本文的在线行情示例,再尝试 mootdx.reader 读取本地通达信历史数据,接着用 mootdx.affair 补上财务维度,最后把所有接口包一层你自己的数据访问类。项目根目录下的 docs/quick.md 有最简明的入门说明,sample/basic_quotes.py 里有更多可直接运行的示例,源码则在 mootdx/quotes.pymootdx/reader.py,想深入实现原理时可以直接读。

现在,打开终端装好 mootdx,先拉一份你关心的股票K线试试。五分钟之后,你会发现自己已经绕过了A股数据获取这道坎。

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

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

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值