backtrader本身在回测结束前是不会把持仓全部平仓,所以,就需要我们自己判断什么时候是最后一个K线,在最后一个K线前发出全部平仓命令,以使程序在最后的一条K线执行平仓,从而完成一个完美的回测过程。 目的是在回测结束前把所有仓位都平仓掉。 网络上有的使用调用未来数据data[2]来引发错误来实现。实际测试中,此方案无效。 经过一番研究与测试,得出以下结果: 1、可以使用buflen()来取得总共有多少条K线bar。 2、在每次next中,datas中都包括从一开始到当前的所有数据,这样就可以通过len()来获取当前执行到第几个(K线)bar了。 3、可以通过1、2两项的数据进行对比,就可以

在使用backtrader进行回测外汇数据时,烧脑的是在保证金与杠杆的设置。 例如:如何EURUSD下单1手时,100倍杠杆的情况下, buy: 1.12888,close: 1.13162 占用保证金:1128.88 其中赚取0.00274即274个点,按17的点差,单边收取8.5个点。 毛利:274 净利 = 毛利 – 点差 = 274 – 17 = 257 如以下运行结果: 经过测试,可以使用多种方式实现,这里介绍两种简单的方式,我个人觉得在特定的情况下行数越少运行越高效。 核心:设置参数使保证金 = automargin * margin * size * pr