01 — 考夫曼关于价格波动的计算方法 价格运行模式存在趋势性、季节性,以及相应的循环周期性。 考夫曼博士在他的《交易系统与方法》中提出利用三角函数回归分析来计算价格的循环周期。 他的方法简单粗暴,一种是用一个频率的三角函数回归方法,另一个是利用两个频率的三角函数回归方法。 在前一篇文章中《通达信用波动DLL计算价格行情的循环周期》,我实现并测试了老爷子的两种方法,结果发现,他的单频方法公式和程序都写错了,计算结果是错的;他的双频方法更是错得离谱,而且计算结果非常不稳定,实战根本没法用。 知道大家肯定不相信,考夫曼博士创造了大名鼎鼎的考夫曼自适应均线(见这里:由'考夫曼均线'来探索自适应均线的特点),他怎么会错呢? 我们看,他定义的双频三角回归模型为: 他认为,通过求解下面的方程,就可以求解两个频率: 这个一元二次方程,可以求解: 可是,我们初中就学过,这个方程要开根号,根号下面的数就必须是正数。如果是负数,这个开根号可就不能求啦! 所以,他的双频求解方法在某些情况下根本就不能用。 当然,他的单频求解方法,只要按照我的思路修复一下他的推导错误,还是可以用的。 有兴趣的,大家可以参考上一篇文章:由'考夫曼均线'来探索自适应均线的特点。 考夫曼博士是一位航天控制专家,转行过来搞股票技术分析的,毕竟不是专门搞数学的。他的计算方法有一点错误,我们也要辩证的看。 以上就是传统三角函数用来计算价格波动的思路。一般数学上可能称为三角函数回归分析。 在有的股票技术分析的书中,也可能称为谐波分析。 另外,有些人还引入了傅里叶变换、傅里叶分析等。但是这种工具适用于时间跨度很长的序列,价格波动则可能不适应。一般可能需要使用截断的傅里叶系数,这时候就有点像考夫曼的双频思路了。 02 — 利用滤波技术计算价格波动 那么,要计算价格循环的波动,还有没有别的方法呢? 我们可以认为市场上的波动是各种频率的谐波共振或者非共振非同步波组合的结果。 要完美的识别这些所有的周期是很困难的。 但是,如果我们认为,市场在绝大多数时候,都只有一个主要波动。 当我们忽略其它次要波动,只关注这一个主要波动时,就有可能类似考夫曼的单频三角回归方法那样,计算得到主要波动的全部波动特性。 对于一个波动来说,我们需要知道它的频率和相位。 可以用相位图来描述一个波动周期。 相图可以分为两个相互垂直的分量:同相分量和正交分量,就像下面的图形所示。 任何给定的相位角都可以转化为容易求得的这两个分量之比的反正切。 这时候的求解诀窍是将分析波形(我们熟悉的形式的价格循环分量)分解为同相分量和正交分量。 这可以通过希尔伯特变换配合滤波来完成。 以一组理想正弦波为例。 上边的蓝线,就是以余弦波表示的价格波动。 下边,则是采用滤波器近似计算得到的归一化波动,即主导波动。 这里采用的是三角函数来近似,忽略了波动幅值,只关注波动周期和相位角。 计算出的归一化波形在下图的红色波形所示。 黄色波形,是为了辅助红色波形,而添加的辅助判断信息。 上面的计算图,我们看到了,在滤波的初始阶段,预测质量较差,这主要是由于滤波起步造成的,但随着数据点的个数增加,计算得到的结果也越来越正确,结果也就越来越平滑了。 从上面的分析和计算可以看出,按照主导周期的思想,能够很好的计算出三角函数的波动参数。 关键是以上算法,计算量比考夫曼的方法要小得多,非常适合大数据量的实时计算。 03 — 自适应滤波+RSI指标的威力 有了主要波动的周期,我们就可以思考他的进一步应用了。 比如,我们知道,RSI指标是韦尔斯.怀尔德首创的,发表在他的《技术交易系统新思路》一书中。(1978年版) 怀尔德最初的RSI定义为 其中RS=14天向上收盘价的平均值/14天向下的收盘价的平均值。 “向上的收盘价CU”意味着,如果今天的收盘价高于昨天的收盘价,我们会将收盘价的差异添加到平均值中。同样,“下跌的收盘价CD”意味着如果今天的收盘价低于昨天的收盘价,我们会将收盘价的差的绝对值添加到平均值中。 如果我们代入 RSI = CU / CD,可以简化 RSI 方程: 为了增加普遍性,CU 可以表示任何间隔内的向上收盘价的总和,而
CD 可以表示同一时间段的下跌收盘价的总和。此外,系数 100 可以认为是提供简单的缩放。因此,RSI 只是向上收盘价之和与所有差价收盘价绝对值之和的比率。 那么问题来了,怀尔德为什么要对RSI指标采用14天这个周期呢?而通达信这一类软件为什么有采用6、12、26天这三种周期呢? 就像通达信下面这一个分析结果所示,RSI有一些锯齿状的变化,不平滑,而且还经常超调,进入到接近0或者100的极限值,这时候指标钝化,失去了参考价值。 就像下面这样子的: 综上,我们可以提出四个疑问? 第一,RSI指标的时间参数到底取多少合适? 第二,超买、超卖出现后导致的指标钝化现象容易发出错误的操作信号。 第三,RSI指标与股价的'背离'走势常常会发生滞后现象。 第四,当RSI值在50附近波动时该指标往往失去参考价值。 有没有一个关于输入天数的最佳设置呢? 能不能克服以上四个缺点呢? 根据前面的分析,当我自适应探测出主导波动的周期,然后RSI指标,才用这个主导波动的周期,不就解决了以上四个缺点? 按照前面的思路,编写了自适应探测的DLL, 现在,我们编写自适应RSI指标公式: 下面第一个副图是传统的自带的RSI指标,第二个副图是自适应RSI指标。 这两种RSI指标的对比一目了然: 从上面的结果可以看出,传统RSI指标呈现锯齿状波动,在短期应用时,很难把握。 因此大家见得比较多的应用场景都是把RSI用于周线等。 但是,自适应RSI指标,则解决了前面指出的四个缺点,现在它的变化比较有规律,而且比较平滑,与价格的波动趋势也很接近了。 同时,由前面的分析,这个DLL还可以输出主导波形的周期, 这里建立如下公式可以求得:主导周期, 下面的第一个副图,就是计算出来的主导周期; 第二个副图就是对应的自适应RSI指标。 04 — 结论 从上面的结果可以看出,RSI指标,配合上自适应滤波技术,探测得到了主导波动的周期,就成功地解决了RSI指标的前面的四个缺点,RSI指标再也没有底位和高位的钝化了,而且RSI指标变换比较平滑,不像之前的锯齿状变化了,现在这个指标用起来简单多了。 可见,我们只要了解了传统技术指标的计算原理,结合现代的数学技术,完全可以创造出一些新的好东西。 |
|