Python量化交易学习笔记(量化交易学习笔记(18))——放量突破布林线中轨买入策略放量突破布林线中轨买入策略
本文将探索新的策略回测程序,主要是为了尝试不同的技术指标在backtrader平台上的应用,为后续复杂策略的实现做准备。
本文将实现的策略是,当股票放量突破布林线中轨时进行买入,当股票收盘价低于短期均线时卖出。
买入条件中,放量突破布林线中轨具体指的是,当日股票开盘价在布林线中轨下方,收盘价在布林线中轨上方,当日成交量为10日以来的最高量。卖出条件中,短期均线选取为5日
线。回测初始资金100000元,单笔操作单位1000股,佣金千分之一,回测时间自2018年1月1日至2020年3月20日。
策略核心代码还是位于策略类的init方法中:
def __init__(self):
self.inds = dict()
for i, d in enumerate(self.datas):
self.inds[d] = dict()
# 布林线中轨
boll_mid = bt.ind.BBands(d.close).mid
# 买入条件
self.inds[d]['buy_con'] = bt.And( \
# 突破中轨
d.open boll_mid, \
# 放量
d.volume == bt.ind.Highest(d.volume, period = self.p.p_period_volume, plot = False))
# 卖出条件
self.inds[d]['sell_con'] = d.close < bt.ind.SMA(d.close, period = self.p.p_sell_ma)
这里需要注意的是,技术指标在backtrader里是lines对象,而非数值,所以在使用与或操作时,不能使用python自带的and和or操作符,而只能调用backtrader的And和Or函数。对技
术指标做比较时可以使用大于号、小于号等符号,这是因为backtrader对这些符号进行了重写。
回测000001后的最终资产为101107.35元:
可以看到,该策略并非每笔交易都会盈利,但是盈利额度较大,亏损额度较小。由于我们选取的交易单位是1000股,而000001的股价只是10元左右,相当于我们只动用了不到20%
的资金,因此总盈利额显得较小,如果提高交易手数,盈利总额也会随之提升。
同时回测000001、000002后的最终资产为100082.86元:
评论0