全功能 QMT(Python API)核心接口:get_market_data_ex(推荐,支持多周期、历史分钟线)
重要提醒:
QMT 数据权限取决于券商,部分券商对历史分钟线长度有限制 分钟线周期: 1m一分钟、5m五分钟、15m/30m/60m必须先登录 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(
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
)
返回字段说明
timeopenhigh / low / close:开高低收volumeamount获取不到长久历史分钟线?券商 miniQMT 普遍限制历史分钟线区间,一般只能获取最近几十天;如需数年分钟线需要确认券商开放权限。
报错无法连接?必须先打开 QMT 客户端登录账号,再运行 python 脚本。
想要 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")
代码执行后会生成两张文件:
minute_line_chart.pngminute_data.csvkline.png# 旧接口,优先使用get_market_data_ex
bars = xtdata.get_bar(stock_code, period, start_time, end_time)
官方文档优先推荐
get_market_data_ex,支持批量多股票,稳定性更好。
如果你需要,我可以直接给你封装成函数工具类,支持一键切换标的、周期、自动保存 K 线图片,或者适配策略初始化 initialize 中回测读取历史数据
