backtrader是德国人写的一套非常成熟的本地量化回测平台,其内部对talib中的很多技术指标进行了二次封装,但有时候需要我们需要根据自己的交易系统做一些指标的自定义以方便回测,下面以bias指标为例进行自定义。
bias是一个超买超卖指标,其含义是收盘价与某一周期均线的乖离率,算法很简单:(close-ma)/ma,如果我们要指标结果是百分比的话,可以写成((close-ma)/ma)*100,接下来我们在backtrader中实现它并保存在myindicator模块中,代码如下:
import backtrader as bt
class Bias(bt.Indicator):
"""
均线乖离率指标BIAS,计算收盘价和指定周期均线的乖离率
默认计算与20日均线的乖离率
"""
lines = ('Bias',)
params = (('MA_period',20),)
plotinfo = dict(subplot=True)
def __init__(self):
close = self.data.close
ma = bt.indicators.SMA(self.data,period=self.p.MA_period)
self.lines.Bias = ((close - ma)/ma)*100
super(Bias,self).__init__()
接下来我们就可以在策略类中调用这个自定义指标,如果策略决策中涉及到Bias指标的计算,我们可以像操作普通的lines一样对Bias指标进行取值或计算。我们在策略类的构造函数中加入它:
import myindicator as myind
class xxx_strategy(bt.Strategy):
params=(
('bias_period',20), # Bias指标周期
)
def __init__(self):
self.bias = myind.Bias(self.datas[0], MA_period=self.p.bias_period)
最后看一下效果,下图为中证500ETF,30分钟图上Bias指标参数20,plot以后的效果:
文章评论