程序化交易系统之布林线算法遇上“考夫曼自适应均线”!
牛角问答,股票期货专业投机者。
前言
在程序化交易或者技术分析领域,大部分人都低滞后性的技术比较热衷,因为低滞后性可以先人一步得到交易系统的开仓信号。
很不幸的是。
股票期货市场上的趋势类技术指标,绝大多数都难逃指标值“滞后”的魔掌,就拿均线来说,滞后性最强。
当均线拐头时,价格已经涨了不少,一般都抓不到行情起始阶段。
甚至在行情震荡区间,金叉后立刻掉头下跌!
均线完全跟不上行情反转的节奏,不得不承认这就是事实,这就是均线本身的缺陷!
想要完全消除滞后是不可能的,但可以减弱技术指标的滞后性。
文章将介绍一种算法,可以将指标滞后性降到最低。那就是“考夫曼均线算法”,并与布林线算法结合,用程序化软件编写后实现自动化交易!
接下来,我们将对考夫曼均线进行深入研究。
考曼均线真实面目
考夫曼均线,也称“自适应均线”,而真正厉害的地方正是它的自适应这个优势。技术指标或程序化策略一旦有了自适应的功能,就等同于有了“灵魂”。
所谓的“灵魂”是什么?
可以理解成它可以根据当前市场的波动,“自发的”去调整算法自身的参数,不断的自我“进化”,达到自适应市场的效果。
而简单移动平均线,不能动态调节公式自身的参数,只能按照固定的参数进行计算。
请仔细对比下面两幅图。
图一,简单移动平均线。
图二考夫曼自适应均线。
对比后发现了什么现象?
① 考夫曼均线对行情反转较为灵敏,紧贴行情走势,而移动平均线反应非常迟钝、滞后。
② 考夫曼均线趋势转震荡的时候,对行情的灵敏度降低,很快就进入了平缓状态。
考夫曼算法就好比恒温动物,当周围环境温度变低时,会启动体温调节中枢,自动调节身体的温度,以适应寒冷的冬季。
这是考夫曼算法的核心。
下面剖析考夫曼均线公式,科学客观的解释为何会出现这样的现象。
下面是它的算法:
见公式万别晕,只关注1个点就ok。
(1) 参数。
- E = 10,计算EffRatio 所需的周期。
- fast = 2,快周期。
- slow = 30,慢周期。
(2) 变量。
- AMAValue ,当前考夫曼均线值,初始值=第一根k线的close。
- AMAValue[1] ,前一根k线的考夫曼均线值。
要看懂公并不难。
假设其他参数不变的情况下,在公式运行过程中唯一变动的量其实就只有EffRatio这个变量。
也就是考夫曼均线的“体温调节中枢”!
EffRato变量,是这样影响考夫曼均线值的。作者将以上涨趋势为例。
(1) 当市场上涨迅猛,那么EffRatio随之变大。
此时如果将变大的EffRatio值带入下面第三个公式的最后一个加数后,整个AMAValue的值一定会变大。
此时就会产生象①,考夫曼均线AMAValue与价格贴得更近!更灵敏!如下图所示。
这是EffRaio变大的情况下,均线值的变化情况。
接下来,揭露当市场反转或横向整理的时候,现象②是如何发生的。
(2) 当市场上涨动力衰竭,价格横向整理时,那么EffRatio随之变小。
此时如果将变小的EffRatio值带入下面第三个公式的最后一个加数后,整个AMAValue的值一定会变小。
此时,就会产生现②,灵敏度降低,很快就进入了平缓状态,如下图所示。
小结。
作者花了么大的篇幅讲解考夫曼均线算法的内在逻辑,是为了让读者在下一部分的运用中,做到知其然,还要知其所以然!
以上,就考夫曼均线的内在运行机理。下面将布林线算法和考夫曼均线相结合,形成一个最终的程序化交易策略。
俗称“自适应版”的布林线策略!
当布林线算法遇到考夫曼均。
作者在研究布林线策略时,最头疼就是布林线算法里的20周期移动平均线,导致策略信号滞后的问题,如下图所示。
可以清楚的看到,当价格破上轨时,行情已经涨了不少,大大压缩了策略利润。
(1) 简单讲解下布林线算法。
布林线有上轨、下轨、中轨。
- 中轨,20日移动平均线。
- 上轨,中轨 + N*20周期标准差。
- 下轨,中轨 - N*20周期标准差。
大概的效果可以参照上图中的布林线图。
(2) 如何用考夫曼均线算法,改善策略开仓信号滞后问题呢?
很简单的操作。
直接将布林线算法的20移动平均线替换成考夫曼均线,以此计算布林线的上下轨。
这个是非常好的思路!
原因主要有以下:
① 获得比其他程序化交易者更快的交易信号,快人一步。
② 让策略拥有考夫曼均线算法的自适应特性,策略在未来的自适应能力更加强大。
让我们对比一下改进前和改进后的效果对比。
改进前。
改进后。
同是布林线,考夫均线版本和简单移动平均线版本,他们的信号差距如此之大。
(3) 基于考夫曼算法的布林线策略开平逻辑。
整个策略的开仓会涉及跨周期过滤、跟踪止盈以及假突破的过滤三大方法。
策略开平仓逻辑:
- 最高价突破,布林线上轨+ATR,且价格在周线EMA8均线之上,开多。
- 最低价触发,跟踪止盈线时,平多。
- 开空逻辑同理。
策略的最终效果如下图。
做空信号。
做多信号。
这就整个考夫曼算版的布林线策略。
小结。
到目前为止,我们利用了考夫曼自适应算法对布林线策略进行了改进,将20日移动平均线替换成了考夫曼均线。
作者最主要的目的就是要让大家知道,考夫曼均线在布林线策略中的优势,让其更好的为策略服务。
回测分析
下面将用螺纹钢指数进行回测析。
回测参数设置:
- 回测资金10万。
- 回测时间,2009年至今。
- 品种,螺纹钢指数合约。
- 回测周期,30分钟。
- 滑点1跳。
- 费用,1%%。
- 仓位,资金20%。
回测资金曲线:
最后
作者用这篇文章,主要给大家细的剖析了考夫曼均线算法的自适应原理,以及利用其特性对布林线策略进行升级改造。
使得布林线拥有了自适应的特性,降低策略的滞后性。获得了不错的收益!
其实,一通百通。我们可以基于考夫曼均线算法原理对其他技术指标进行升级改造,最终形成自己的一套自适应算法。