1. 所有行情数据都需要下载才行,这里使用xtdata.download_history_data下载数据
  2. 下载后通过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)
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐