马克·米勒维尼把VCP形态比喻为湿毛巾,拧过一次后仍含水,重新拧一下,又挤出一些。继续拧紧毛巾,每次挤出的水越来越少,最后毛巾变干变轻。VCP每一次收缩,股价变得“更加紧实”,意味着供给减少,就像毛巾被拧干。经历几次收缩后,股票变得更轻,比之前有大量供给时更容易向一个方向移动。
VCP形态选股公式编写思路
编写指标描述形态一直是量化的难点,技术Pie就来挑战一下。VCP形态选股公式实在太难了,想了好多天,改了好几版,终于有所收获。
拟合曲线
最初使用布林线、振幅变小等方法描述VCP形态,效果不尽如人意。后来想到如果把高点低找出来,再进行比较,不就可以了,但是如何准确定位高点低是一个难题。考虑使用拟合曲线方法,首先想到均线,可是均线用小周期不够平滑,用大周期会严重偏离真实的高点低。最终想到了一个解决方案:用斜率对收盘价进行加权,用加权后的价格计算均线,但是得到的均线仍然不够平滑,再用指数加权移动平均计算,得到拟合曲线SL。
SL:=EMA*5+C,,;{拟合曲线SL,斜率加权,EMA二次平滑}
经过二次处理的效果如下:
拟合曲线的底和顶
经过处理之后,曲线高点低就清晰了。中间一个周期SL值比前后都大,曲线SL的顶就找到了;中间一个周期SL值比前后都小,曲线SL的底就找到了。不需要拟合曲线的高点低和实际高点低完全相同,只要偏离幅度不大就可以。
DI:=REF
最高点
用BARSLAST和SUMBARS函数定位四个底距离现在的周期数,再用FINDHIGH函数计算底1和底2之间的最高价DINGH底2和底3之间的最高价DINGH底3和底4之间的最高价DINGH
TDI1:=BARSLAST+1;TDI2:=SUMBARS;TDI3:=SUMBARS;TDI4:=SUMBARS;DINGH1:=FINDHIGH;DINGH2:=FINDHIGH;DINGH3:=FINDHIGH;
最低点
类似的,计算出顶1和顶2之间的最低价DIL顶2和顶3之间的最低价DIL再计算顶1后面的低点DL,后面用来过滤跌破DIL1的情况。
TDING1:=BARSLAST+1;TDING2:=SUMBARS;TDING3:=SUMBARS;DIL1:=FINDLOW;DIL2:=FINDLOW;DL:=FINDLOW;
条件设置
经过上面的准备,计算出了K线顶和底的价格,可以开始设置条件。
A1:计算三个顶的最大值和最小值,两者幅度限制在5%之内。幅度可以自行调整,比如完全的平顶,三个顶价格相等,幅度就是0,当然这种情况比较罕见,不太现实。
MAXH:=MAX);MINH:=MIN);A1:=/MINH*100<5;
A2:比较两个底,后面一个底DIL1在前面一个底DIL2的-2%以上,也就是可以稍微低一点,但是大部分情况应该高一些。写成-2%是稍微放宽了条件。另外限制DIL大于DIL过滤跌破DIL1的情况。
A2:=/DIL2*100>-2ANDDL>DIL1;
A3:再加上触发信号,创20日新高,阳线。
A3:=H=HHVANDC>O;
VCP形态指标公式
SL:=EMA*5+C,,;DI:=REF
VCP形态选股公式
SL:=EMA*5+C,,;DI:=REF
注意点
最后的触发条件是创20日新高H=HHV,这个条件是我技术Pie自己设置的,并没有按照《股票魔法师》书中的定义写。这样写触发的信号可以早一点,方便后续跟踪观察。一个好的VCP应该要在股价的“第二阶段”,本次编写的VCP形态选股公式没有加入这个条件,务必注意。
后续有改进再说吧,编写这个公式已经把我折磨得够呛了。
文章为作者独立观点,不代表股票配资公司观点