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
)

返回字段:closeopenhighlowvolume ------ 炒股五件套。

③ 处理时间

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 就能一夜暴富。

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

谢谢大家 🙏

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

相关推荐
诸葛务农1 小时前
共沸脱水技术及其在光刻胶用PGMEA纯化中的应用(下)
人工智能
苏三说技术1 小时前
MybatisPlus Pro 来了,CURD开发效率直接拉满!
后端
sugar__salt1 小时前
从零落地 Generative AI 接口调用:Node.js 工程化最佳实践
人工智能·node.js
不要额外加糖1 小时前
给 Codex 戴上紧箍, 治一治 AI 的过度发挥
前端·人工智能·代码规范
weixin_468466851 小时前
空洞卷积与膨胀卷积新手入门指南
图像处理·人工智能·深度学习·ai·机器视觉·卷积·空洞卷积
小江的记录本1 小时前
【JVM虚拟机】类加载机制:类加载器、双亲委派模型、好处、破坏双亲委派的场景(附《思维导图》+《面试高频考点清单》)
java·jvm·spring boot·后端·python·spring·面试
李少兄1 小时前
Spring 对象创建范式:依赖注入与直接实例化的边界抉择
java·后端·spring
AI创界者1 小时前
ComfyUI v8 极致整合包发布!Win/Mac 双平台完美适配 + 多卡并行加速,开启 AI 绘画新时代
人工智能·macos
zhangfeng11331 小时前
本账号 自媒体 csdn 账号诊断和改进建议,记录一下
人工智能·机器学习·媒体