3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 ptrade 量化交易平台中,获取分钟级别的历史行情数据是编写日内高频策略或波段策略的基础。get_history 函数提供了强大的历史数据获取能力,支持从1分钟到多分钟(如5分钟、15分钟等)的周期线数据获取。
get_history 函数基础语法get_history(count, frequency='1d', field='close', security_list=None, fq=None, include=False, fill='nan', is_dict=False)
要获取分钟级别的数据,核心在于设置 frequency 参数。ptrade 支持以下分钟级别的频率:
frequency='1m'frequency='5m'frequency='15m'frequency='30m'frequency='60m'frequency='120m'count=10 表示获取最近的10根K线。include=False(默认),则只返回已经走完的K线;如果 include=True,则会包含当前正在运行的这一根K线的数据(数据会随行情变动)。'pre' 表示用上一分钟数据填充,'nan' 表示用 NaN 填充(仅交易模块有效)。def initialize(context):
g.security = '600570.SS'
set_universe(g.security)
def handle_data(context, data):
# 获取过去10分钟的1分钟线收盘价,不包含当前分钟
history_1m = get_history(10, frequency='1m', field='close', security_list=g.security, include=False)
log.info("过去10分钟的1分钟线收盘价:\n%s" % history_1m)
def initialize(context):
g.security = ['600570.SS', '000001.SZ']
set_universe(g.security)
def handle_data(context, data):
# 获取过去5根5分钟线的开盘价和收盘价
history_5m = get_history(5, frequency='5m', field=['open', 'close'], security_list=g.security)
# 提取特定股票的数据 (Python 3.11 环境下返回 DataFrame)
if history_5m is not None:
df_600570 = history_5m.query('code in ["600570.SS"]')
log.info("恒生电子的5分钟线数据:\n%s" % df_600570)
get_history 只能获取2005年以后的数据。run_daily 或 run_interval 等定时函数中,不要与 handle_data 等框架模块在同一时刻调用 get_history 或 get_price 接口,否则可能会偶现获取数据为空的现象。is_dict 参数设置为 True,返回字典格式的数据,解析速度会更快。