【答读者问51】谈一谈策略(strategy)使用多数据的时候prenext和next的区别

本文解答了读者关于backtrader策略中prenext和next函数在处理多个数据时的区别。在多数据场景下,当数据日期不一致时,策略会先运行prenext,直到所有数据都有可用日期才会进入next。若在prenext中手动调用self.next(),需注意过滤掉尚未开始的数据,否则可能导致策略错误。

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

这个是前段有一个读者咨询过的问题,记录下来了,一直没有写成文章,主要是感觉太简单了,没有必要写成一个单独的文章。想了想,还是写出来吧,避免大家碰到同样的问题。

在原先的讲解策略的文章中:7、backtrader的一些基本概念—Strategy讲解对策略的一些关键函数做了讲解,重新copy到这里,可以看到,在策略初始化的时候,会运行__init__中的一些代码,接下来会运行start,一般情况下,是只运行一次,接下来就是比较关键的prenext了,如果多数据的时候,这些数据的日期并不一致,将会导致不会进入到next中,会一直在prenext中运行,直到所有的数据日期都有了之后,才会进入到next中。

现实情况是,存在很多数据开始日期不一致的情况,这个时候就需要在prenext中人为调用self.next()这样进入next中做一些策略的数据,这个时候进入到next中,有些数据还没有开始,日期并不是当前的,需要做过滤,这个很关键,当时这位读者就是因为没有做过滤,剔除那些还没有上市的股票,出现了问题。


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

云金杞

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

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

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

打赏作者

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

抵扣说明:

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

余额充值