3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
您好!关于 context.portfolio.positions[code].price 的获取机制,以下是详细的解答:
context.portfolio.positions[code].price 代表的是该持仓标的的最新行情价格。
在开盘前(如 before_trading_start,通常在 9:00 运行):
此时当天的交易尚未开始,也没有产生当天的开盘价,因此该属性获取到的是昨天的收盘价。它不会取到当天的开盘价,所以不存在未来函数的问题。
如何获取集合竞价数据?
如果您想获取 9:25 集合竞价产生的数据,可以使用专门的 API:get_call_auction()。该函数可以获取指定时间区间内交易日 09:25 的集合竞价数据(当日的集合竞价数据最晚于 9:28 分返回)。
如何获取当天的开盘价?
如果您在 9:30 开盘后(如 handle_data 或 run_daily 设定的盘中时间)运行,可以通过 get_current_data()[code].day_open 获取当天的开盘价。注意,当天的开盘价至少在 09:27 分之后才可获取。
是的,会自动调整。
在 JoinQuant 的回测和模拟交易引擎中,context 对象是与当前的逻辑时间(即 context.current_dt)严格绑定的。
context.portfolio.positions[code].price 获取的就是那个特定时间点(逻辑时间)的最新价格。引擎在底层已经处理好了时间对齐,绝不会让您在历史回测中取到未来的价格。总结:
price 得到的是昨日收盘价。context 里的数据会自动与当前运行的逻辑时间对齐,无需手动调整日期,也不会产生未来函数。