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

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

谢谢大家 🙏

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

相关推荐
To_OC3 小时前
搞懂 Token 和 Embedding 后,我终于明白大模型是怎么 "读" 文字的
人工智能·llm·agent
咖啡八杯4 小时前
GoF设计模式——策略模式
java·后端·spring·设计模式
lizhongxuan5 小时前
AI Agent 上下文压缩利器 Headroom
后端
冬奇Lab5 小时前
每日一个开源项目(第139篇):Voicebox - 本地运行的开源 ElevenLabs 替代品
人工智能·开源·资讯
冬奇Lab5 小时前
Skill 系列(03):Skill 设计范式——5 个模式让输出从混沌到可预测
人工智能·开源·agent
Csvn7 小时前
SSH 远程管理与安全加固 — 运维的守门之道
后端
IT_陈寒7 小时前
Python搞不定字符串编码?这破玩意坑我两小时!
前端·人工智能·后端
菜鸟谢9 小时前
Rust 智能指针完整详解
后端
大模型真好玩9 小时前
什么是Loop Engineering?最通俗易懂的Loop Engineering核心概念
人工智能·agent·deepseek