【答读者问54】谈一谈backtrader在多品种跨周期调用数据的时候面临的坑以及是否选择使用resample的问题

本文讨论了在backtrader中进行多品种跨周期数据调用时遇到的时间错乱问题,特别是在分钟线数据与日线数据结合时。解决方案包括为日线数据添加收盘时间,并谨慎处理数据调用,以防引用未来数据。虽然resample方法可以避免某些问题,但会引入延迟获取初始数据和降低回测效率等新问题。建议直接合成K线数据而非在backtrader内部使用resample。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在原先的教程49、【backtrader股票策略】如何实现跨周期调用技术指标的策略?中实现了在日线数据上运行,调用周线数据的指标的方案,如果要实现分钟线调用日线数据,还有一些细节问题需要注意。

  1. 分钟bar数据通常精确到秒,但是日线数据一般只有日数据
    如果同时把分钟数据和日线数据同时加载到backtrader中,就会导致时间上的错乱,有两种基本的表现:

    • 第一根K线数据有可能是最近的一个K线,并不是历史上最早的K线,还没有从backtrader代码层面发现究竟是哪里出现了问题。
    • 可以在开盘的时候用day_data[0]调用到当天的K线数据,容易引用未来数据
      解决办法:尝试给所有的日线数据增加一个收盘的具体时间,比如原先日线bar的时间为“2018-10-31”,把时间修改为“2018-10-31 15:00:00”
  2. 调用数据的时候需要注意调用到的日线数据究竟是不是当前的数据
    由于backtrader特殊的时间处理方式,在分钟线刚开始的时候调用日线数据,有可能调用到数据结束时候的值,在写代码的时候要注意避免

  3. 如果使用resample合成日线数据,是不是可以避免这些问题?
    理论上是的,当使用resample函数合成日线数据的时候,确实避免了上面的一些问题,但是同时也带来了一些新的问题

    • 数据会在每日结束的时候才合成,在最开始的一天是调用不到数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云金杞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值