3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 PTrade 的 get_history 函数中,include 参数是一个布尔值(bool),主要用于控制获取的数据结果中是否包含当前正在进行的周期(即尚未结束的 K 线)。
以下是详细的解释:
bool (True / False)Falseinclude=False(默认情况)include=Trueopen:当前周期的开盘价。high / low:当前周期截至目前的最高/最低价。close:当前时刻的最新价格(即实时价)。volume:当前周期截至目前的成交量。include=True 可能会导致策略利用了收盘价(其实是当前价)进行决策,从而产生未来函数效应,需谨慎使用。假设当前时间是 2023年10月27日 14:00,策略频率为日线 (1d),我们要获取 count=5 条数据:
get_history(5, ..., include=False):
get_history(5, ..., include=True):
close 字段会随着 14:00 之后的股价波动而不断变化,直到 15:00 收盘固定下来。Q: 在编写回测策略时,一般推荐将 include 设置为 True 还是 False?
A: 在大多数回测场景下,推荐保持默认值 False。因为回测通常基于已完成的历史数据进行逻辑判断。如果设置为 True,策略可能会在 K 线未走完时就利用了该 K 线的信息,导致回测结果虚高(未来函数)。除非你的策略逻辑明确需要使用“当前最新价”与历史数据混合计算,否则应使用 False。
Q: 如果我想获取当前的最新价格,应该用 get_history(include=True) 还是 get_snapshot?
A: 如果仅仅是为了获取当前的最新价格(Last Price),建议使用 get_snapshot(security) 或 get_price(在某些上下文中)。get_snapshot 是专门用于获取高频切片/快照数据的,效率更高且包含买卖档口信息。get_history(include=True) 更适合需要将当前价格拼接到历史序列中进行连贯计算(如计算包含今日价格的 5 日均线)的场景。
Q: include 参数对 count(数据条数)有影响吗?
A: count 始终代表返回的数据总条数。
include=False,返回的是过去完整的 count 条。include=True,返回的是过去完整的 count-1 条 + 当前未完成的 1 条。总数依然是 count。