期客网 | 期货程序化交易专业分享网站 www.a-qike.com
前言
“布林强盗”,作者不是很理解为啥会用“强盗”来形容这个策略,难道这个策略是偷偷摸摸的搞了见不得人的事?O(∩_∩)O哈哈~,后面会给大家分享作者对这个“强盗”一词的理解。
布林强盗系统借助布林线,与过滤器和跟踪止盈组合而成,其中我个人认为该策略的核心是过滤器和止盈模块。
说到止盈,我还再强调一遍,止盈是一个非常重要的模块,好的开仓决定你浮盈大小,好的止盈决定你最终平仓收益的大小,并会跟你的交易次数、胜率和盈亏比直接挂钩。
“布林强盗”量化交易系统交易逻辑。
上面说到,布林强盗系统中含有布林线、过滤器、及跟踪止盈(动态移动平均线)。并且,过滤器和跟踪止盈是整个策略的核心。
策略交易逻辑:(空头)。
1.开仓逻辑。
- 收盘价<前N-1日收盘价(过滤器)。
- 最低价<布林线下轨。
2.平仓逻辑。
- 最高价>动态移动平均线(跟踪止盈).
策略信号:(空头)。
解析:
1.过滤器,收盘价<前n-1日收盘价。
其实就是,用当前价格与过去的价格做对比,看当前价格在过去n-1日价格的哪个位置,如果真小于了,那么说明是一个空头趋势。反之则多头趋势。
2.动态移动平均线(跟踪止盈)。
常规均线的周期参数都是固定的,但是在此策略中,这个周期参数是动态变化的,并且当持仓越久周期参数就越小。
小结。
布林强盗策略中的“强盗”,我想就是说的这个动态移动平均线。因为,移动平均线如果在未开仓时,周期参数会恢复到布林线中轨,一旦开了仓,周期参数立刻开始随k线更新而减小。这是我的理解!
“布林强盗”交易系统Python代码实现。
作者借助天勤量化平台实现该策略,在策略实现过程中需要着重注意的是“动态移动平均线”的周期参数变化过程,其他的我觉得都比较容易理解。
1.设置参数和变量。其中,flag变量用于识别k线更新状态,并控制动态移动平均线的周期参数计算机跟踪止盈线的计算。后面会详细讲解!
2.计算布林线上下轨与中轨,以及过滤器rocCalc。
其中:
self.rocCalc = self.kline.close.iloc[-2] – self.kline.close.iloc[self.vars[‘rocCalcLength’] – 1]
就是过滤器的计算,与过去第N-1根k线相比,是否下跌或上涨,以判断当前趋势。
3.策略开平仓,以及平仓时将动态移动平均线的参数设置为初始值(布林线中轨)。
其中:
self.vars[‘liqDays’] = self.vars[‘liqLength’] ,平仓后将动态移动平均线参数设置成中轨参数。
self.flag = False,设置为false意味着平仓后,如果新开仓了就必须要等动态参数和止盈线计算出后变为true,才可以开启平仓功能。
动态参数及动态移动平均线的计算:
4.启动交易策略。
如下图所示:
策略信号:
小结。
以上就是关于python如何实现“布林强盗”策略。阅读时一定要着重看动态参数及动态移动平均线的计算部分,因为这一部分是整篇文章的重点。
最后
整篇文章,唯一有价值的是策略的止盈部分。
动态参数和动态止盈线的计算,当然这个止盈方法放在之前作者介绍的2种对比的话,我觉得没有可比性。不过这种方法还是值得读者们收藏,赶快应用到你的策略中去试试吧!
文章及策略代码仅供学习参考,切勿直接实盘。
支持一个