by 雪隐 from juejin.cn/user/143341...
欢迎分享与聚合,全文转载就不必了,尊重版权,圈子就这么大,若急用可联系授权。
前言
朋友们,今天咱们来聊第三种股票数据获取方式------miniQMT 。
它不是那种"今天能连明天就挂"的免费接口,而是最稳如老狗的实时数据方案。不光能拿数据,还能直接下场交易。如果你想搞个人量化交易,有没有 miniQMT 权限,基本等于"有驾照"和"没驾照"的区别。
不过,这玩意儿有门槛------你得跟你的券商客户经理软磨硬泡 。很多券商(比如国金)要求账户里躺着 30 万 才能开。而且不是所有券商都支持这个功能。
一句话:开不了 miniQMT,本章内容你就当看玄幻小说吧。
本文用 宁德时代(300750.SZ) 当案例,带你跑通三种数据下载:
- 日线数据(历史 K 线)
- 分钟数据(1 分钟、5 分钟等)
- 财务数据(资产负债表、利润表、每股指标......)
前提条件:
- windows环境
- QMT 已安装,
xtquant库已配好 - miniQMT 客户端已启动(且你能登录进去)
一、什么是 miniQMT?
简单说,它是 QMT 的"极简模式"------不给你花里胡哨的界面,只留一个 Python 接口。你写代码调它,它帮你搞定数据、下单、回测。
就像把自动驾驶汽车的方向盘拆了,只留一个游戏手柄给你:功能都在,姿势更自由。
二、开通流程(社恐劝退版)
- 找到一家支持 miniQMT 的券商(网上搜一下,或者直接问客服:"你家支持 miniQMT 不?")
- 开户------如果你名下已经有 3 家券商账户,得先注销一家(证监会规定,别问我为什么)。
- 等几个工作日,账户开好后,主动打电话问:"我有没有专属客户经理?"
- 加上客户经理微信,开门见山 :"我要开通 miniQMT。"
- 他会告诉你资金要求(比如 30 万),但这个可以谈。你表现得像个长期用户,他也不想丢单。
- 谈妥后,填表、走流程,再等 4-5 个工作日。
- 客服给你 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 就能一夜暴富。
它只是给你一把更快的刀,但砍柴的功夫还得自己练。
谢谢大家 🙏
祝各位的曲线像长江电力一样平稳向上,不要像我的心情一样大起大落。