- BackTrader量化交易案例图解
- 何海群
- 752字
- 2020-11-24 13:23:55
4.2 案例:设置Buy买入价格
下面看看具体的案例,案例文件名是:btr_e004buy.py。
程序主体部分的代码和前面的案例是完全一样的。第一组和第二组源码都是设置数据及策略参数:
![](https://epubservercos.yuewen.com/80F853/18519309601631906/epubprivate/OEBPS/Images/39705_53_1.jpg?sign=1738918072-5iYHKX6RtTkuPmxavLwVH9HzvGTP3NJh-0-182a38dac775dbf139fdcda609a67fd0)
adddata类函数,作用是添加量化交易数据,设置数据源参数:
![](https://epubservercos.yuewen.com/80F853/18519309601631906/epubprivate/OEBPS/Images/39705_53_2.jpg?sign=1738918072-pd9MMWfz5CaRT74TQIPyuCBqKB1x7Zfz-0-165d444fcbc61f2cc91060eb8f8a06a9)
addstrategy类函数,作用是添加量化策略,设置策略参数:
![](https://epubservercos.yuewen.com/80F853/18519309601631906/epubprivate/OEBPS/Images/39705_53_3.jpg?sign=1738918072-jUsaopHahSRDtwOJ3PW4bZzkI4BtqOKO-0-ea675bcd7cc2e6f65b827dc34b5a3a82)
第三组代码运行量化程序;第四组代码输出回测数据,绘制相关图表,如下:
![](https://epubservercos.yuewen.com/80F853/18519309601631906/epubprivate/OEBPS/Images/39705_54_1.jpg?sign=1738918072-UZZRrfZNXILp35EvyQI2MzWI58HqGuEz-0-0ec6df9ab4c824c3be7fb4a2af4b6308)
运行案例程序,主要输出信息如下:
![](https://epubservercos.yuewen.com/80F853/18519309601631906/epubprivate/OEBPS/Images/39705_54_2.jpg?sign=1738918072-O5wFgD3zXavK36YhFZZyXCbEgRjHCRyF-0-df9676936c56b773b8a93e26666277d3)
![](https://epubservercos.yuewen.com/80F853/18519309601631906/epubprivate/OEBPS/Images/39705_55_1.jpg?sign=1738918072-7i1aQ4u2V0YJYld7MCZHCCJX8f3gNVAh-0-4e13ee93143f6baae492bd018b1c4fe9)
在以前的案例程序中,因为是空策略,所以没有买卖交易,程序的起始资金和资产总值都是10万元。
但在本节案例中,从输出信息来看,有稍许亏损:
资产总值 Final Portfolio Value:99923.51
本案例回测的时间周期是:2018年1月~2018年12月。
2018年,国内A股大盘形式不好,但本案例的亏损额很少,说明这个策略在2018年的行情中还是比较优秀的策略。
如图4-2所示是程序生成的买入策略分析图。
![](https://epubservercos.yuewen.com/80F853/18519309601631906/epubprivate/OEBPS/Images/39705_56_1.jpg?sign=1738918072-OCXily9kn6Wm5z0HuEySJwL1jbAwCznW-0-f884753d5ad4603df9a233bfda748fed)
图4-2 买入策略分析图
图4-2最上方的蓝色曲线是资产总额,包括股票和持有现金的总额。资产总额曲线,可以反映用户买卖的盈亏情况。
大家注意蓝色资产总额曲线的走势变化:起点是10万元,这是开始时的现金持有量。随着股票的买入增多,现金持有量越来越少。但当前案例不是正式交易,只是单边买入股票,没有卖出。
案例中出现的亏损数额很少,还有一个原因是量化软件默认只买入一手股票。而每只股票价格才6元多,每次交易就只是买卖一手,即使亏损也不会亏损太多。
图4-2中价格曲线附近的三角符号就是股票的实际交易买卖点。
我们在实际测试时发现,这些买卖点存在一些时间误差,前后误差大约是两天时间。
笔者分析,造成误差的原因有两个:
(1)时差和时区。例如,zipline量化软件要求要把导入数据转换为UTC世界统一时间。
(2)交易日历模块库。目前还没有统一的交易时间标准,因为各国风俗不同,所以各国的节假日也有所不同。
这些误差,对于量化程序的实际分析结果影响不大,图中的买卖点图标也只是提示参考图标。