- 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=1739675739-KvKpkmoKsFbTEuVbbxTmoreopmzhVYWL-0-32159a83a2581ae5c96b3b24b45cf900)
adddata类函数,作用是添加量化交易数据,设置数据源参数:
![](https://epubservercos.yuewen.com/80F853/18519309601631906/epubprivate/OEBPS/Images/39705_53_2.jpg?sign=1739675739-4XNbsNtKGV9BMAAwACRbknERj5y1OEV9-0-598d83249b05df42650370064d2ecf58)
addstrategy类函数,作用是添加量化策略,设置策略参数:
![](https://epubservercos.yuewen.com/80F853/18519309601631906/epubprivate/OEBPS/Images/39705_53_3.jpg?sign=1739675739-VXBOr9GbMhAj6HZXqWUEm3DZnM7JmNID-0-e44acc823e6dae0d7d0736bcb24c4202)
第三组代码运行量化程序;第四组代码输出回测数据,绘制相关图表,如下:
![](https://epubservercos.yuewen.com/80F853/18519309601631906/epubprivate/OEBPS/Images/39705_54_1.jpg?sign=1739675739-OXACLfvKyxwkcmpnrcCUqidpAj2RaIlH-0-ad1e82dec3eb8848116383051fde7288)
运行案例程序,主要输出信息如下:
![](https://epubservercos.yuewen.com/80F853/18519309601631906/epubprivate/OEBPS/Images/39705_54_2.jpg?sign=1739675739-Cqa88RmGMvoKJHLve01LzGCxUKhxbx19-0-2f233b9a8f50672786b2e5c4bed6fb46)
![](https://epubservercos.yuewen.com/80F853/18519309601631906/epubprivate/OEBPS/Images/39705_55_1.jpg?sign=1739675739-MkTGxozNDsFcT9Y327J80W0grM0YU8Bx-0-8d8855b456cb1dec955e3d62ac1f4692)
在以前的案例程序中,因为是空策略,所以没有买卖交易,程序的起始资金和资产总值都是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=1739675739-Qa07VOmB64FuX15lC0cPLX9skcerw39y-0-223927409add2f09a9d29b74f5cfbb2d)
图4-2 买入策略分析图
图4-2最上方的蓝色曲线是资产总额,包括股票和持有现金的总额。资产总额曲线,可以反映用户买卖的盈亏情况。
大家注意蓝色资产总额曲线的走势变化:起点是10万元,这是开始时的现金持有量。随着股票的买入增多,现金持有量越来越少。但当前案例不是正式交易,只是单边买入股票,没有卖出。
案例中出现的亏损数额很少,还有一个原因是量化软件默认只买入一手股票。而每只股票价格才6元多,每次交易就只是买卖一手,即使亏损也不会亏损太多。
图4-2中价格曲线附近的三角符号就是股票的实际交易买卖点。
我们在实际测试时发现,这些买卖点存在一些时间误差,前后误差大约是两天时间。
笔者分析,造成误差的原因有两个:
(1)时差和时区。例如,zipline量化软件要求要把导入数据转换为UTC世界统一时间。
(2)交易日历模块库。目前还没有统一的交易时间标准,因为各国风俗不同,所以各国的节假日也有所不同。
这些误差,对于量化程序的实际分析结果影响不大,图中的买卖点图标也只是提示参考图标。