🚀 AI 一键生成 ptrade 策略代码

ptrade 平台 get_history 函数的 include 参数有什么作用?

ptrade | 发布时间: 2026/5/28
以下内容由 EasyQuant 生成。

问题描述

get_history函数include参数说明。

/

解决方案

在 ptrade 量化交易平台中,get_history 函数是获取历史 K 线行情数据的核心接口。其中,include 参数用于控制返回的数据中是否包含当前周期的数据。

include 参数详解

  • 参数含义:是否包含当前周期的数据。
  • 数据类型:布尔值 (bool)。
  • 可选值
    • True:包含当前周期。
    • False:不包含当前周期。
  • 默认值False(如果不显式传入该参数,系统默认不包含当前周期)。

什么是“当前周期”?

“当前周期”取决于你调用 get_history 时所处的环境(回测/实盘)以及你请求的数据频率(frequency)。

1. 日线级别 (frequency='1d')

假设今天是 2023年10月20日,你在 handle_data 中调用 get_history(count=5, frequency='1d')

  • include=False(默认):返回过去 5 个已结束的交易日数据,即 10月13日、16日、17日、18日、19日的日 K 线。
  • include=True:返回包含今天在内的 5 个交易日数据,即 10月16日、17日、18日、19日、20日的日 K 线。注意,如果是在盘中调用,10月20日的数据是截至调用时刻的未走完的 K 线数据。

2. 分钟级别 (frequency='1m')

假设当前时间是 10:05:00,你在 handle_data 中调用 get_history(count=3, frequency='1m')

  • include=False(默认):返回 10:02、10:03、10:04 这三根已经走完的分钟 K 线。
  • include=True:返回 10:03、10:04 以及当前正在运行的 10:05 这三根分钟 K 线。同样,10:05 的 K 线数据是截至调用时刻的动态数据。

代码示例

def initialize(context):
    g.security = '600570.SS'
    set_universe(g.security)

def handle_data(context, data):
    # 获取过去 5 天的收盘价(不包含今天)
    history_without_today = get_history(5, '1d', 'close', g.security, include=False)
    log.info("不包含今天的历史数据:\n%s" % history_without_today)

    # 获取过去 5 天的收盘价(包含今天当前的最新价)
    history_with_today = get_history(5, '1d', 'close', g.security, include=True)
    log.info("包含今天的历史数据:\n%s" % history_with_today)

使用建议

  1. 避免未来函数:在回测中,如果你使用日线频率并在盘中(如 14:50)进行交易决策,通常建议使用 include=False 获取昨天的收盘价作为参考,或者使用 data[security]['close'] 获取当前时刻的最新价。如果使用 include=True 获取日线数据,可能会提前获取到当天的最终收盘价(取决于回测引擎的撮合机制),从而引入未来函数。
  2. 计算技术指标:在计算 MA、MACD 等技术指标时,通常需要使用已经确定的历史数据,因此默认的 include=False 是最常用的选择。