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