🚀 AI 一键生成 qmt 策略代码

QMT Python API:获取历史 K 线数据 (get_history_data) 完全指南

qmt | 发布时间: 2025/11/24
以下内容由 EasyQuant 生成。

问题描述

如何用 Python 获取一支股票过去100天的日线收盘价数据?

解决方案

在 QMT 中,获取一支股票过去 100 天的日线收盘价数据,主要使用 ContextInfo.get_market_data 函数。

该函数支持通过设置 count 参数来指定获取的历史数据长度,通过 period 参数指定周期,通过 fields 参数指定需要的数据字段。

以下是具体的代码示例:

# -*- coding: gbk -*-

def init(ContextInfo):
    # 1. 设定要查询的股票代码,例如:平安银行
    stock_code = '000001.SZ'
    
    # 2. 调用 get_market_data 获取数据
    # fields: ['close'] 表示只获取收盘价
    # stock_code: 传入列表形式的股票代码
    # period: '1d' 表示日线周期
    # count: 100 表示获取过去 100 根 K 线
    # dividend_type: 'front' 表示前复权(常用),'none' 为不复权
    data = ContextInfo.get_market_data(
        fields=['close'], 
        stock_code=[stock_code], 
        period='1d', 
        count=100, 
        dividend_type='front'
    )
    
    # 3. 打印结果
    # 返回的数据通常是 pandas DataFrame 格式
    print("股票 {} 过去 100 天的收盘价数据:".format(stock_code))
    print(data)

def handlebar(ContextInfo):
    # 该策略主要演示数据获取,handlebar 中无需执行逻辑
    pass

代码说明:

  1. fields=['close']:指定只获取收盘价。如果需要更多数据(如开盘价、最高价等),可以修改为 ['open', 'high', 'low', 'close']
  2. stock_code=[stock_code]:注意这里将股票代码放入了列表中。虽然该函数支持单个字符串,但传入列表可以确保返回的数据结构更统一(通常为 pandas DataFrame)。
  3. period='1d':指定获取日线数据。
  4. count=100:指定获取最近的 100 条数据。
  5. dividend_type='front':设置为前复权,这在量化回测和分析中非常重要,可以消除分红配股对价格的影响。如果不希望复权,可设置为 'none'