美文网首页Python数据分析
10秒钟回测50万条数据

10秒钟回测50万条数据

作者: GaryHertel | 来源:发表于2021-06-12 01:14 被阅读0次

    以前研究如何做回测的时候,专门写了一个比较简单的回测模块,其原理就是将递增的K线数据传入一个空列表中,模拟k线真实的逐根增加的情景,然后是将回测过程中的交易存储到文件中,当需要当前的持仓和资金等信息时,就从文件中去读取,这实际上就是模拟我们实盘时从交易所的数据库获取我们当前持仓、资金信息的场景。

    但是在回测比如一分钟k线时,一个币种一年的一分钟k线有1440 * 365 = 525600条数据,进行回测就会非常慢。之前也尝试进行过改进,比如考虑到我们实盘交易时,从交易所获取的数据是有限制的,交易时只会返回最近的几百条k线数据,但是之前尝试优化的时候不知道什么地方出了问题吧,加之本来对回测也并不很在意,最后就不了了之了。

    昨天闲来无事,就将之前的回测模块翻了出来。主要的优化地方有两个:

    • 原先是回测过程中将交易记录保存到文件,每次获取持仓再从文件中读取,现在改为将交易数据先存放在内存中,待回测完成后将交易记录全部保存至文件。

    • 原先的用于存放k线的列表会越来越大,每次计算指标锁需要计算的数据也越来越大,总之这是极不合理的,我们实盘交易只会用到最近的几百条k线数据。因此做了一个小小的修改,当k线的数量达到多少的时候,就将之前的旧的k线数据从列表中删除。

      img

    这样略作优化后,52万条一分钟k线数据回测,只用了10秒!

    img

    为了验证回测结果是不是有问题,特意将为做修改前的回测模块进行了一下回测,当然,由于未修改前的回测实在是太慢了,我只比对了部分数据。

    未经修改前的部分回测结果:

    img

    优化后的同一时间段的回测结果:

    img

    从两者的对比可以看出,回测结果是一致的。

    完整的回测结果是一共有20780条交易记录,我们简单看一下资金曲线图:

    img

    相关文章

      网友评论

        本文标题:10秒钟回测50万条数据

        本文链接:https://www.haomeiwen.com/subject/qauseltx.html