🚀 AI 一键生成 ptrade 策略代码
立即体验
👉 AI 生成代码 👈

PTrade量化交易:get_history 函数中的 include 参数有什么作用?

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

问题描述

PTrade中get_history函数的include参数有什么作用?

解决方案

在 PTrade 量化交易平台中,get_history 函数是获取历史 K 线行情数据最常用的接口之一。其中,include 参数扮演着非常关键的角色,它主要用于控制获取的数据结果中是否包含当前周期

include 参数详解

  • 参数类型bool(布尔值)
  • 可选值
    • True:包含当前周期的数据。
    • False:不包含当前周期的数据。
  • 默认值False(如果不填此参数,系统默认不包含当前周期)。

具体作用与场景举例

include 参数的作用取决于你策略运行的频率(frequency):

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

假设今天是 周三,你在策略中调用 get_history(count=5, frequency='1d', include=...)

  • include=False(默认)时:函数会返回上周三到本周二(昨天)的 5 根日 K 线数据。这确保了你使用的数据都是已经完全收盘、确定的历史数据。
  • include=True:函数会返回上周四到本周三(今天)的 5 根日 K 线数据。此时,今天的数据可能还在盘中变化(如果是在盘中调用),或者包含了今天的最终收盘数据。

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

假设当前时间是 10:05,你调用 get_history(count=5, frequency='1m', include=...)

  • include=False(默认)时:返回 10:00 到 10:04 这 5 分钟的完整 K 线数据。
  • include=True:返回 10:01 到 10:05 的数据,其中 10:05 的数据是当前正在生成的、尚未走完的 K 线数据。

⚠️ 重要注意事项:防范“未来函数”

官方将 include 的默认值设置为 False 是有深刻用意的,主要是为了防止在回测中引入未来函数

  • 回测陷阱:在日线回测中,handle_data 通常在每天的特定时间(如 15:00)运行。如果设置 include=True,你的策略在判断买卖条件时,实际上已经“提前”知道了当天的最高价、最低价和收盘价。这会导致回测收益曲线极其完美,但实盘中根本无法实现(因为盘中你无法预知当天的最终收盘价)。
  • 实盘建议:在实盘交易中,如果你确实需要当前周期的最新价格来辅助判断,建议保持 include=False 获取历史均线等指标,同时配合 get_snapshot(security)data[security]['close'] 来获取当前的最新切片价格,这样逻辑更加严谨且贴合实际交易场景。

总结:除非你有特殊的逻辑需求并且完全清楚自己在做什么,否则在编写 PTrade 策略时,建议保持 include 参数的默认值 False,以确保策略回测的真实性和可靠性。