AI股票小助手04-miniQMT数据采集

by 雪隐 from juejin.cn/user/143341...

欢迎分享与聚合,全文转载就不必了,尊重版权,圈子就这么大,若急用可联系授权。

前言

朋友们,今天咱们来聊第三种股票数据获取方式------miniQMT 。

它不是那种"今天能连明天就挂"的免费接口,而是最稳如老狗的实时数据方案。不光能拿数据,还能直接下场交易。如果你想搞个人量化交易,有没有 miniQMT 权限,基本等于"有驾照"和"没驾照"的区别。

不过,这玩意儿有门槛------你得跟你的券商客户经理软磨硬泡 。很多券商(比如国金)要求账户里躺着 30 万 才能开。而且不是所有券商都支持这个功能。

一句话:开不了 miniQMT,本章内容你就当看玄幻小说吧。

本文用 宁德时代(300750.SZ) 当案例,带你跑通三种数据下载:

  1. 日线数据(历史 K 线)
  2. 分钟数据(1 分钟、5 分钟等)
  3. 财务数据(资产负债表、利润表、每股指标......)

前提条件:

  • windows环境
  • QMT 已安装,xtquant 库已配好
  • miniQMT 客户端已启动(且你能登录进去)

一、什么是 miniQMT?

简单说,它是 QMT 的"极简模式"------不给你花里胡哨的界面,只留一个 Python 接口。你写代码调它,它帮你搞定数据、下单、回测。

就像把自动驾驶汽车的方向盘拆了,只留一个游戏手柄给你:功能都在,姿势更自由。


二、开通流程(社恐劝退版)

  1. 找到一家支持 miniQMT 的券商(网上搜一下,或者直接问客服:"你家支持 miniQMT 不?")
  2. 开户------如果你名下已经有 3 家券商账户,得先注销一家(证监会规定,别问我为什么)。
  3. 等几个工作日,账户开好后,主动打电话问:"我有没有专属客户经理?"
  4. 加上客户经理微信,开门见山 :"我要开通 miniQMT。"
    • 他会告诉你资金要求(比如 30 万),但这个可以谈。你表现得像个长期用户,他也不想丢单。
  5. 谈妥后,填表、走流程,再等 4-5 个工作日。
  6. 客服给你 QMT 客户端下载链接 + 账号密码,登录成功的那一刻,你就算踏入量化大门了。

整个过程考验耐心,但一旦开通,你就拥有了一个 比任何免费接口都靠谱的数据武器。


三、日线数据下载(历史 K 线,养老级数据)

python 复制代码
STOCK_CODE = '300750.SZ'   # 宁德时代
DATA_START = '20240101'    # 从 2024 年开始
DATA_END   = '20251231'    # 到 2025 年结束

① 下载历史数据

python 复制代码
xtdata.download_history_data(
    stock_code=STOCK_CODE,
    period='1d',            # 1d 表示日线
    start_time=DATA_START
)

② 获取市场数据

python 复制代码
res = xtdata.get_market_data(
    stock_list=[STOCK_CODE],
    period='1d',
    start_time=DATA_START,
    end_time='',
    count=-1,               # -1 表示取全部
    dividend_type='front',  # 前复权(不然算出来想哭)
    fill_data=True
)

返回字段:close、open、high、low、volume ------ 炒股五件套。

③ 处理时间

QMT 给的时间是 20240101 这种"直男格式",需要转成人类能看懂的日期:

python 复制代码
df['date'] = pd.to_datetime(df['date'], format='%Y%m%d', errors='coerce')

保存到 data/300750_SZ_daily_QMT.csv,搞定。


四、分钟数据下载(想玩高频?先问问你的心脏)

python 复制代码
STOCK_CODE  = '300750.SZ'
TARGET_DATE = '20260210'   # 你想看哪一天的分钟线
PERIOD      = '1m'         # 1分钟 K 线(可选:5m, 15m, 30m, 60m)

① 下载分钟数据

python 复制代码
xtdata.download_history_data(
    stock_code=STOCK_CODE,
    period=PERIOD,
    start_time=TARGET_DATE
)

② 取数据时,把 end_time 设成 下一天,这样能保证拿到全天数据

python 复制代码
res = xtdata.get_market_data(
    stock_list=[STOCK_CODE],
    period=PERIOD,
    start_time=TARGET_DATE,
    end_time='20260211',    # 下一天,老司机都懂
    count=-1,
    fill_data=False
)

③ 时间格式转换

分钟数据的时间戳长成这样:20260210143000 → 需要转成 pd.datetime:

python 复制代码
df['datetime'] = pd.to_datetime(df['datetime'].astype(str), format='%Y%m%d%H%M%S', errors='coerce')

④ 只保留目标日期的数据

python 复制代码
target_date_dt = pd.Timestamp(TARGET_DATE)
df = df[df['datetime'].dt.date == target_date_dt.date()]

保存到 data/300750_SZ_1min_QMT.csv。

忠告:分钟数据量很大,别一次性下十年,硬盘会哭。


五、财务数据下载(看公司底裤)

财务数据不像 K 线那么"实时",但它是价值投资者的圣经。我们下载以下几张表:

表名 含义
Balance 资产负债表(公司家底)
Income 利润表(赚了多少钱)
CashFlow 现金流量表(真金白银流向)
PershareIndex 每股指标(EPS、每股净资产等)
Capital 股本信息(总股本、流通股)

① 异步下载(带回调,让你知道它在干活)

python 复制代码
done_count = [0]
total_tables = len(TABLE_LIST)

def on_download_done(data):
    done_count[0] += 1
    print(f"已下载 {done_count[0]}/{total_tables} 张报表")

for table_name in TABLE_LIST:
    xtdata.download_financial_data2(
        stock_list=[STOCK_CODE],
        table_list=[table_name],
        callback=on_download_done
    )

② 获取财务数据

python 复制代码
data = xtdata.get_financial_data(
    stock_list=[STOCK_CODE],
    table_list=TABLE_LIST,
    report_type='report_time'
)

③ 从中提取关键指标(这里才是精华)

类别 指标
每股指标 EPS(每股收益)、BPS(每股净资产)、OCFPS(每股经营现金流)
盈利能力 ROE(净资产收益率)、ROA(资产报酬率)、毛利率、净利率
偿债能力 资产负债率、流动比率、速动比率
营运能力 总资产周转率
现金流 经营现金流、经营现金流/收入

④ 时间标签处理(防坑代码)

xtquant 返回的时间可能是 20250331 字符串,也可能是个时间戳数字。写个函数统一成 YYYYMMDD:

python 复制代码
def normalize_timetag(ts_val):
    s = str(ts_val).strip()
    if len(s) == 8 and s.isdigit():
        return s
    v = float(s)
    if v > 1e12:
        v = v / 1000
    return datetime.fromtimestamp(v).strftime('%Y%m%d')

保存到 data/300750_SZ_fina_QMT.csv。

有了这些数据,你就可以自己算 PE、PB、ROE,再也不用去雪球看别人脸色了。


六、输出文件一览

脚本功能 输出文件
日线数据 data/300750_SZ_daily_QMT.csv
分钟数据 data/300750_SZ_1min_QMT.csv
财务数据 data/300750_SZ_fina_QMT.csv

七、QMT 股票代码格式(老手跳过,新手必看)

交易所 格式 示例
上海 XXXXXX.SH 600519.SH(贵州茅台)
深圳 XXXXXX.SZ 300750.SZ(宁德时代)

千万别把 .SH 写成 .SZ,否则你会收到一堆莫名其妙的空数据。


完整代码

由于篇幅原因,本文只做思路讲解。

完整代码已上传 Gitee ,去仓库自取就行。


写在最后

如果这篇文章让你从"miniQMT 是什么鬼"变成了"好像我也能试试",那就给我点个赞 、留个评论 吧。

量化交易这条路,孤独且容易踩坑,有个伴儿总归好一点。

最后一句大实话:

不要指望有了 miniQMT 就能一夜暴富。

它只是给你一把更快的刀,但砍柴的功夫还得自己练。

谢谢大家 🙏

祝各位的曲线像长江电力一样平稳向上,不要像我的心情一样大起大落。

相关推荐
新知图书2 分钟前
3.1 ROS 2主题通信的工作原理
人工智能·机器人
Dawson Zhu4 分钟前
【AI编译器入门②】TVM架构拆解:Relay、Relax、TIR与Runtime四层结构
人工智能·语言模型·架构·aigc·agi
阿狸猿6 分钟前
AI Agent自动写自动化脚本
运维·人工智能·自动化
利威尔xu15 分钟前
Go IM 源码实战(7):断线三天重连,水位算错就漏消息
redis·后端·微服务·面试·golang
我的xiaodoujiao15 分钟前
Django 权限系统项目实战详细图文教程 4--系统登录功能实现 2
后端·python·django
云和数据.ChenGuang16 分钟前
项目打开后没有主类
开发语言·人工智能·langchain·1024程序员节
民乐团扒谱机16 分钟前
【读论文】音色在微分音程记忆中的作用
人工智能·深度学习·算法
推送者18 分钟前
立体桌宠定制:一张正脸照到本地九视角标定的工程链路
人工智能·立体桌宠定制
鬼手点金18 分钟前
缓存作为架构约束
开发语言·前端·人工智能·python·microsoft·缓存·架构
lucas_AI20 分钟前
24 天、4310 万行代码:AI 集群啃下了人类史上最长的数学证明
人工智能