- BackTrader量化交易案例图解
- 何海群
- 616字
- 2025-02-23 19:51:17
2.6 案例:数据预处理
大家都知道,Python的原生运算速度相对比较慢。BackTrader量化软件,以及常用的金融软件,交易数据的预处理主要都是通过Pandas模块库当中的矢量化运算完成的,它可以大幅度提高数据运算速度。
下面通过具体案例来介绍数据预处理。
案例文件名是btr_e002dat.py。本案例在量化版“Hello”案例的基础上增加了一组简单的测试数据和部分简单参数。
案例主要代码如下:



通过以上代码大家可以看到,基本上每一组代码都有中文注解,非常适合初学者学习。
下面运行程序。回测时间从2018年11月1日开始,到2018年12月31日结束,如图2-8所示。


图2-8 数据预处理
上面的案例代码共分为四个步骤,其中新增了plot绘图步骤:

下面将以上案例代码分组,对主体代码进行讲解。
第一组代码设置量化程序的入口:

cerebro在西班牙语中是“大脑”的意思,表示量化计算引擎。
第二组代码分为两个小组进行讲解。
第2-1组代码,设置起始资金、Broker代理参数:

第2-2组代码,设置数据参数:

调用数据读取函数pools_get4fn,对数据进行预处理。然后调用adddata添加数据函数,为量化引擎cerebro设置数据源data:

数据源变量data在调用数据读取函数pools_get4fn后,已经转化为BackTrader内部格式。
图2-9所示,是adddata数据添加函数的示意图。

图2-9 adddata数据添加函数示意图
由图2-9可以看出,adddada函数位于cerebro类,其中以下画线“_”开头的函数是类内部函数,可以无须考虑,其他主要关联函数和属性有:feeds、resampledata、replaydata、datasbynam、chaindatae、rolloverdata。
第三组代码运行量化回测:

第四组代码获取量化回测分析结果:

最后,绘制量化分析图表:

本节案例的重点,其实就是第2-2组代码中的设置数据参数。