怎么判断最后一条K线数据(bar)-backtrader回测中文教程

backtrader本身在回测结束前是不会把持仓全部平仓,所以,就需要我们自己判断什么时候是最后一个K线,在最后一个K线前发出全部平仓命令,以使程序在最后的一条K线执行平仓,从而完成一个完美的回测过程。

目的是在回测结束前把所有仓位都平仓掉。

网络上有的使用调用未来数据data[2]来引发错误来实现。实际测试中,此方案无效。

经过一番研究与测试,得出以下结果:

1、可以使用buflen()来取得总共有多少条K线bar。

2、在每次next中,datas中都包括从一开始到当前的所有数据,这样就可以通过len()来获取当前执行到第几个(K线)bar了。

3、可以通过1、2两条的数据进行对比,就可以知道执行到第几条K线bar了。这样我们就可以提前发出全部平仓指令。

代码如下:

def next(self): 
    # 判断bar是否结束 
    if self.is_bar_stop(self.datas[0]): 
        return 

# 判断历史数据是不是结束了.结束则平仓所有持仓 
def is_bar_stop(self, data): 
    if len(data) >= data.buflen() - 2:
        if self.getposition(data).size != 0:
            print("------bar ends ------") 
        return True 
    else: 
        return False

各位看官,如果对您有用,请帮助点赞!点赞!点赞!非常感谢,这是我分享的唯一动力!

猜你喜欢

转载自blog.csdn.net/hoddy355/article/details/124301859