3.4 策略编程模板
BackTrader策略的编写,对于初学者来说有一定的门槛,所以笔者特意开发了一个策略编程模板,方便大家套用。大家可以通过该模板,编写出风格一致的策略程序。
策略编程模板代码如下:
策略编程模板当中的log输出函数主要用于信息输出和编程调试。
在策略代码模板中,最常用的两个核心函数如下。
● init:初始化函数。
● next:节点策略执行函数。
如图3-4所示是BackTrader量化软件中的ma_CrossOver均线交叉策略的模块架构图。
图3-4 ma_CrossOver均线交叉策略模块架构图
这里强调一下,class属于面向对象类定义函数。初学者在使用Python进行编程时,最好采用面向过程的Basic语言编程模式,因为class函数编程的代码非常烦琐。
大家可以看一看案例中的class面向对象类的策略代码,我们只是想看看每天的收盘价格,结果出现一大堆代码,而真正有用的只有next函数中的一条代码:
虽然OOP面向对象开发模式的争议很多,但是,对于BackTrader这种大型软件项目来说,OOP面向对象开发模式还是有一定价值的。例如,方便代码复用、自行扩展,以及在使用时可以采用简单的模板调用方式等。
下面看看案例策略的具体代码。
这里不用过多关注log函数,因为它只是用于输出信息。
init初始化函数:
案例策略中的交易价格数据,采用的是收盘价。程序代码使用dataclose,作为收盘价的别名或者短名称、变量名。
在本案例中只有一只股票,如果有多只股票,则数据代码会有所不同。
本案例中策略编程的重点是next节点策略执行函数,代码如下:
本案例的策略编程使用的是空策略,所以系统只显示每天的交易价格:收盘价数据。输出的收盘价,交易数据是按日期的正序排序的,最新的日期输出在最后面。
next节点策略执行函数,主要负责对买卖点交易时间进行筛选。实际交易时间是第二天或者后续时间,所以用next作为函数名称,表示下一个交易节点需要处理的事情。