QMT使用Python获取任意周期的行情数据
·
- 所有行情数据都需要下载才行,这里使用
xtdata.download_history_data下载数据 - 下载后通过
xtdata.get_market_data_ex获取行情数据
注意:
下载数据的period周期不能是随意的周期,只能是1或5,后缀可以是m 分钟,d 日,w 周。博主增加了一个函数parse_period用于解析周期函数。比如:
- 1分钟、3分钟的K线都是由1分钟K线合成的,所以使用的时候period=“3m”,但是下载的时候需要是period=“1m”。
- 大于5分钟的K线均由5分钟合成,所以使用的时候period=“10m”,下载时需period=“5m”
示例代码
from xtquant import xtdata
import re
code = "000001.SZ" # 如果是期货代码(如沪金 au2604.SF),可参考:https://dict.thinktrader.net/dictionary/future.html?id=S7b19l#%E5%B8%82%E5%9C%BA%E7%AE%80%E7%A7%B0%E4%BB%A3%E7%A0%81
period = "5m" # 可选周期: 1/3/5/10/15/30/60/120/240 后缀:m 分钟,d 日,w 周
start_time = "20260201" # 起始日期,如果是分钟频,可填如:202602011300 表示2026-02-01 13:00
end_time = "" # 可取空,表示全部数据
def parse_period(period_str):
"""解析时间周期字符串"""
match = re.match(r'(\d+)([smhdwMy])', period_str)
if not match:
raise ValueError(f"不支持的周期格式: {period_str}")
num = int(match.group(1))
unit = match.group(2)
if unit in ["m"]:
if num < 5:
return "1m"
else:
return "5m"
elif unit in ["d", "D", 'w']:
return "1d"
# 下载全部数据
xtdata.download_history_data(code, period=parse_period(period), start_time=start_time[:8], end_time="", incrementally=False)
# 获取本地数据
bar_data = xtdata.get_market_data_ex(
field_list=[], stock_list=[code],
period=period, start_time=start_time[:8], end_time="", count=-1)[code]
bar_data = bar_data[bar_data.index >= start_time]
# 这里已经获取到了相关数据
print(bar_data)
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)