🚀 AI 一键生成 ptrade 策略代码

ptrade 平台 get_history 获取五分钟线时 include=True 和 False 有什么区别?

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

问题描述

get_history函数取五分钟线,include使用true和false有什么区别?

/

解决方案

在 ptrade 量化交易平台中,使用 get_history 函数获取历史 K 线数据时,include 参数用于控制是否包含当前正在进行的、尚未结束的 K 线周期。默认情况下,include=False

当您获取五分钟线(frequency='5m')时,include=Trueinclude=False 的具体区别如下:

1. include=False(默认值)

  • 含义不包含当前尚未结束的五分钟周期,只返回已经走完的、完整的历史五分钟 K 线。
  • 举例说明:假设当前时间是 10:03。五分钟的 K 线周期划分通常是 09:30-09:35, 09:35-09:40... 09:55-10:00, 10:00-10:05。
    • 此时 10:00-10:05 这个周期的 K 线还没有走完。
    • 如果设置 include=Falseget_history 返回的最新一根 K 线将是 09:55-10:00 这一根完整的 K 线。
  • 适用场景:适用于需要使用确定性、已收盘的 K 线数据计算技术指标(如均线、MACD 等)的策略,避免因为当前 K 线价格跳动导致指标不断变化(即避免“未来函数”或“信号闪烁”)。

2. include=True

  • 含义包含当前正在进行的、尚未结束的五分钟周期。这根 K 线的数据是截至调用函数那一刻的最新快照数据。
  • 举例说明:同样假设当前时间是 10:03
    • 如果设置 include=Trueget_history 返回的最新一根 K 线将是 10:00-10:05 这一根。
    • 注意:这根 K 线的 close(收盘价)实际上是 10:03 这一刻的最新价,highlowvolume 也是截至 10:03 的数据。随着时间推移到 10:04、10:05,这根 K 线的数据还会继续变化,直到 10:05 才最终定型。
  • 适用场景:适用于需要结合当前最新价格动态来判断突破、止损止盈,或者对实时性要求极高的策略。

代码示例对比

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

def handle_data(context, data):
    # 假设当前时间是 10:03
    
    # 1. include=False (默认)
    # 获取过去 5 根已经走完的 5 分钟线
    hist_false = get_history(5, '5m', 'close', g.security, include=False)
    # hist_false 的最后一条数据时间戳是 10:00
    
    # 2. include=True
    # 获取包含当前未走完周期的 5 根 5 分钟线
    hist_true = get_history(5, '5m', 'close', g.security, include=True)
    # hist_true 的最后一条数据时间戳是 10:05(代表 10:00-10:05 这个周期),其 close 值为 10:03 的最新价

总结建议

  • 如果您编写的是基于收盘价触发的经典技术指标策略,强烈建议保持默认的 include=False,这样可以保证回测和实盘信号的一致性。
  • 如果您需要盘中实时突破的逻辑,可以使用 include=True 获取包含最新价的 K 线,但需注意处理好信号可能反复闪烁的问题。