事后诸葛亮?——论如何辩证看待和使用指标中的“未来...
一、引言
研究、使用指标公式,无论是通达信,还是大智慧,或者是python、果仁等其他第三方策略研究载体,代码中的未来函数,一定是躲不开的内容。对于未来函数,普遍认为是“谈未色变”、唯恐避之不及。
但在最近一段时间的研究过程中,自己发现一些新的灵感和收获,所谓的未来函数是需要辩证对待的。用对了,会有意想不到的效果。
二、未来函数的内涵与外延
未来函数,是公示编写中一种特殊的函数,其输出值会随着时间的推移而发生变化。
与传统的函数不同,传统函数在给定输入值后,输出值是固定的,不会改变。而未来函数则会利用当前还未产生的数据对已产生的数据进行修正,因此其输出值会随着时间的变化而不断调整。
因此,采用未来函数的指标,一般会发生“信号”漂移的情况。
哪些函数是未来函数,通达信软件里其实已经给出了明确的答案。
以通达信公式编辑器为例,在插入函数对话框中,函数颜色为粉色的,都为未来函数。如下图所示。
通达信一共列出了16个具体的未来函数。
如下图所示:
对于这些函数,应该可以明确的是,绝对不能使用。
三、问题提出:新“未来函数”的是非对错
刚才,列举了16个通达信明确的未来函数。一旦使用这些函数,通达信的副图框里会明确提示,使用了未来函数。
细心的朋友发现了,我们一般用到的检测未来函数的网站或者小程序,里面包含的函数,远不止16个。
比如:
那究竟是通达信少标了?还是网站错标了?
这里,就涉及到了此文的核心问题。
还有什么样的函数是未来函数不能用?
除去官方认定的未来函数外,剩下的哪些函数,究竟算不算未来函数?
比如:
[*]FLATZIG - 归一化之字转向
[*]FLATZIGA - 归一化之字转向
[*]PEAKA - 前M个ZIG转向波峰值
[*]PEAKBARSA - 前M个ZIG转向波峰到当前距离
[*]TROUGHA - 前M个ZIG转向波谷值
[*]ZXNH - 直线拟合
[*]FFT - 傅立叶变换函数
[*]LWINNER - 近期获利盘比例
[*]PWINNER - 远期获利盘比例
[*]WINNER - 筹码获利盘比例
[*]COST - 成本分布情况
[*]FINANCE - 财务函数
[*]#MONTH - 跨周期引用
[*]#WEEK - 跨周期引用
[*]#YEAR - 跨周期引用
[*]BARSNEXT - 下一次条件成立到当前的周期数
[*]DRAWLINE - 绘制直线段用到日后数据
[*]CURRBARSCOUNT-求到最后交易日的周期数
[*]REFDATE-引用自1900年以来指定日期的数据.
[*]COST – 成本分布情况
[*]CAPITAL – 当前流通股本
[*]DYNAINFO – 即时行情数据
[*]FINANCE – 财务函数
[*]DRAWLINE – 绘制直线段用到日后数据
在以往测试指标公式过程中,凡是源码涉及到这些函数的,大家都会直接pass掉。
后来直到发现通达信没有把这些函数归于未来函数后,才注意到里面的蹊跷。
原来,通达信系统定义的未来函数,是指引用未来数据来修正当前指标信号的函数。
而一些网站上的未来函数工具,则是把所有有可能引用实时数据,而导致指标可能发生改变的函数,一并归为未来函数。
注意,我这里特别写出,是“可能”。
这就涉及到,分辨一个函数究竟是否发生信号漂移,根本上在于指标公式中是如何使用这一函数的。
我们可以把这些新未来函数单拉出来,逐一分析。
第一种,未来函数的变异形式。
比如,
FLATZIG - 归一化之字转向FLATZIGA - 归一化之字转向PEAKA - 前M个ZIG转向波峰值PEAKBARSA - 前M个ZIG转向波峰到当前距离TROUGHA - 前M个ZIG转向波谷值ZXNH - 直线拟合FFT - 傅立叶变换函数
这一类函数,是通达信指标未来函数的变换形式,经常发生指标漂移,是必须规避的一类。
第二种,筹码相关函数。
比如,
LWINNER - 近期获利盘比例PWINNER - 远期获利盘比例WINNER - 筹码获利盘比例COST - 成本分布情况
指示的是股票的成本分布、筹码相关的函数。这些数据大都是根据历史交易数据计算得来的,所用到的都是历史成交价和成交量,并不会引用未来数据。因此,严格来说,并不能算是未来函数。
但是,为什么网站要把它列为未来函数呢?这是因为,这类函数,只能在日线级别上生效。如果在其他周期里使用,比如周线、月线、60分钟K线,只会返回日线上的数据,这样就会导致信号漂移的情况。
一般来说,谨慎使用或者干脆不用。
第三种,即时行情函数
比如,
CAPITAL – 当前流通股本DYNAINFO – 即时行情数据FINANCE – 财务函数
这一类比较特殊,是即时行情函数,获取全推数据,也就是在每一根K线上都永远返回最新的数据。
以CAPITAL函数为例,如果在历史周期引用CAPITAL函数,得到的也是最新的流通股本。这其实就是使用了未来数据,在这种情况下CAPITAL函数就可以算作是未来函数。但是,如果仅在当前周期使用CAPITAL函数,得到的就是全推数据。因此CAPITAL函数是否属于未来函数要视情况而定。
通俗点说,就像是FINANCE (财务函数),是公司过去的经营活动和财务状况的记录,本身不属于未来函数。但如果指标策略中用到了尚未公布的未来财务数据时(如下季度财报),就等同于使用了未来函数。
同样,对于FINANCE或者是DYNAINFO函数,也要看返回值是序列数据还是全推数据。
如果返回序列数据,则不能算未来函数;如果返回全推数据,则判断具体情况,不能简单地断定这个就是未来函数。
举个例子
以CAPITAL和FINANCE(1)为例,我们写一个代码:
当前流通股本:CAPITAL;总股本:FINANCE(1);
生成的副图如下:
可以很直观的看出,CAPITAL返回数据是当前流通股本,这个数据就是当下实时的全推数据,呈现出一条直线。而FINANCE(1)返回的是历史上各个时期对应的总股本数据,线条也是变化着的。因此,FINANCE(1)严格意义上说,就不能算是未来函数。
同样的,这种情况在即时行情函数中出现也很多。只是需要注意,即时行情数据是实时更新的,因此,对于前一段时间来看,现在的即时行情数据相当于是未来函数。
这里,梳理了一个清单,运用时自行比较。
第四种,跨周期引用函数
比如,MONTH/WEEK/YEAR等函数,是跨周期引用数据。
还是要具体问题具体分析。比如,在日线引用
CLOSE#WEEK,
那么在本周一就会返回本周五的收盘价,这就是引用未来数据了。
但是,如果在日线引用
OPEN#WEEK
那么这周的每根K线都返回周一的开盘价,显然没有使用未来数据。
小结
总的来看,对于未来函数的总体认识,我是偏向谨慎乐观。不是一定不能用,但是一定要谨慎用。对于小白,建议绝对不碰。这里引申一点,就是如何判别有无未来函数,特别是有无隐形的未来函数。
近些年本人检测了大概上千个指标。从结果来看,大部分指标的胜率都集中在45-55%附近,极少数指标会超过70%以上(使用特定日期以及过拟合除外)。这些极少数指标,不乏有些是很多人求而不得的终极交易圣杯。但更多的是,这些指标准确率达到了90%以上,几乎没有任何亏损失误,可以很肯定的说,其中一定隐藏了很多难以发现的未来函数。另外,还有一个小技巧。
在通达信软件页面中,按“46”,进入沙盘推演模式。
然后观察,指标信号有没有随着行情变化而产生漂移。特别是在大熊市的行情中,一看就能分辨出来。
页:
[1]