当前位置:首页>python>QMT Python 获取历史分钟 K 线完整教程!

QMT Python 获取历史分钟 K 线完整教程!

  • 2026-09-12 14:29:38
QMT Python 获取历史分钟 K 线完整教程!

全功能 QMT(Python API)核心接口:get_market_data_ex(推荐,支持多周期、历史分钟线)

重要提醒:

  1. QMT 数据权限取决于券商,部分券商对历史分钟线长度有限制
  2. 分钟线周期:1m 一分钟、5m五分钟、15m/30m/60m
  3. 必须先登录 QMT 终端,保持连接行情服务器

一、完整可运行代码

# -*- coding: utf-8 -*-
import pandas as pd
import matplotlib.pyplot as plt
from xtquant.xttype import StockAccount
from xtquant import xtdata

# ===================== 1. 初始化行情 =====================
# 连接本地QMT行情(启动QMT客户端后运行)
xtdata.connect()

# ===================== 2. 参数配置 =====================
stock_code ="000001.SZ"# 标的代码
period ="1m"# 周期 1m/5m/15m/30m/60m/1d
start_time ="20260701093000"
end_time ="20260722150000"

# ===================== 3. 获取历史分钟线数据 =====================
# get_market_data_ex 标准用法
data = xtdata.get_market_data_ex(
    stock_list=[stock_code],
    period=period,
    start_time=start_time,
    end_time=end_time,
    dividend_type="none",# none不复权 / forward前复权 / backward后复权
    fill_data=False
)

# 提取DataFrame
df = data[stock_code].copy()
print("数据字段:", df.columns.tolist())
print("数据前10行:")
print(df.head(10))

# 时间转换(QMT返回time为时间戳,转为可读时间)
df["datetime"]= pd.to_datetime(df["time"], unit="ms")

# ===================== 4. 绘制分钟K线走势图(收盘价曲线) =====================
plt.rcParams["font.sans-serif"]=["SimHei"]# 中文显示
plt.rcParams["axes.unicode_minus"]=False

plt.figure(figsize=(14,6))
plt.plot(df["datetime"], df["close"], color="
#2E86AB", linewidth=1.2, label="收盘价")
plt.title(f"{stock_code}{period} 历史分钟线行情")
plt.xlabel("时间")
plt.ylabel("价格")
plt.legend()
plt.grid(alpha=0.3)
plt.xticks(rotation=45)
plt.tight_layout()

# 保存图片到本地
save_path ="./minute_line_chart.png"
plt.savefig(save_path, dpi=200)
plt.show()
print(f"走势图已保存至:{save_path}")

# 可选:导出csv
df.to_csv("./minute_data.csv", index=False, encoding="utf-8-sig")
print("分钟线数据导出完成 minute_data.csv")

二、关键接口说明

xtdata.get_market_data_ex 参数说明

xtdata.get_market_data_ex(
    stock_list:list,# 证券代码列表 ["000001.SZ","600036.SH"]
    period:str,# 周期 '1m','5m','15m','30m','60m','1d','1w','1mon'
    start_time:str,# 起始时间 "YYYYMMDDHHMMSS"
    end_time:str,# 结束时间 "YYYYMMDDHHMMSS"
    dividend_type:str,# 复权方式
    fill_data:bool# 是否补齐非交易时段数据,一般False
)

返回字段说明

  • time
    :毫秒时间戳
  • open
     / high / low / close:开高低收
  • volume
    :成交量
  • amount
    :成交额

三、常见问题

  1. 获取不到长久历史分钟线?券商 miniQMT 普遍限制历史分钟线区间,一般只能获取最近几十天;如需数年分钟线需要确认券商开放权限。

  2. 报错无法连接?必须先打开 QMT 客户端登录账号,再运行 python 脚本。

  3. 想要 K 线图(红绿 K 棒)安装 mplfinance,替换绘图代码:

pip install mplfinance

import mplfinance as mpf
df_k = df.set_index("datetime")[["open","high","low","close","volume"]]
mpf.plot(df_k,type="candle", title=f"{stock_code}{period}分钟K线", savefig="kline.png")

四、运行出图效果说明

代码执行后会生成两张文件:

  1. minute_line_chart.png
    :收盘价折线图
  2. minute_data.csv
    :完整分钟明细数据使用 mplfinance 代码可生成标准蜡烛 K 线图 kline.png

五、补充:老接口 get_bar 对比(不推荐)

# 旧接口,优先使用get_market_data_ex
bars = xtdata.get_bar(stock_code, period, start_time, end_time)

官方文档优先推荐 get_market_data_ex,支持批量多股票,稳定性更好。

如果你需要,我可以直接给你封装成函数工具类,支持一键切换标的、周期、自动保存 K 线图片,或者适配策略初始化 initialize 中回测读取历史数据

最新文章

随机文章