当前位置: 首页 > news >正文

通达信VCP形态选股公式,憋了好几天才写出来

VCP形态的英文”Volatility Contraction Pattern”的缩写,意思是“波动收缩形态”。VCP形态是全美交易冠军马克·米勒维尼的核心交易模式之一,在其著作《股票魔法师》中有详细介绍。

马克·米勒维尼把VCP形态比喻为湿毛巾,拧过一次后仍含水,重新拧一下,又挤出一些。继续拧紧毛巾,每次挤出的水越来越少,最后毛巾变干变轻。VCP每一次收缩,股价变得“更加紧实”,意味着供给减少,就像毛巾被拧干。经历几次收缩后,股票变得更轻,比之前有大量供给时更容易向一个方向移动。

 

一、VCP形态选股公式编写思路

编写指标描述形态一直是量化的难点,技术Pie就来挑战一下。VCP形态选股公式实在太难了,想了好多天,改了好几版,终于有所收获。

1、拟合曲线

最初使用布林线、振幅变小等方法描述VCP形态,效果不尽如人意。后来想到如果把高点低找出来,再进行比较,不就可以了,但是如何准确定位高点低是一个难题。考虑使用拟合曲线方法,首先想到均线,可是均线用小周期不够平滑,用大周期会严重偏离真实的高点低。最终想到了一个解决方案:用斜率对收盘价进行加权,用加权后的价格计算均线,但是得到的均线仍然不够平滑,再用指数加权移动平均计算,得到拟合曲线SL。

SL:=EMA(EMA(SLOPE(C,10)*5+C,10),2);{拟合曲线SL,斜率加权,EMA二次平滑}

经过二次处理的效果如下:

2、拟合曲线的底和顶

经过处理之后,曲线高点低就清晰了。中间一个周期SL值比前后都大,曲线SL的顶就找到了;中间一个周期SL值比前后都小,曲线SL的底就找到了。不需要拟合曲线的高点低和实际高点低完全相同,只要偏离幅度不大就可以。

DI:=REF(SL,1)<REF(SL,2) AND REF(SL,1)<SL;{拟合曲线底}

DING:=REF(SL,1)>REF(SL,2) AND REF(SL,1)>SL;{拟合曲线顶}

3、最高点

用BARSLAST和SUMBARS函数定位四个底距离现在的周期数,再用FINDHIGH函数计算底1和底2之间的最高价DINGH1,底2和底3之间的最高价DINGH2,底3和底4之间的最高价DINGH3。

TDI1:=BARSLAST(DI)+1;

TDI2:=SUMBARS(DI,2);

TDI3:=SUMBARS(DI,3);

TDI4:=SUMBARS(DI,4);

DINGH1:=FINDHIGH(H,TDI1,TDI2-TDI1,1);

DINGH2:=FINDHIGH(H,TDI2,TDI3-TDI2,1);

DINGH3:=FINDHIGH(H,TDI3,TDI4-TDI3,1);

 

4、最低点

类似的,计算出顶1和顶2之间的最低价DIL1,顶2和顶3之间的最低价DIL2。再计算顶1后面的低点DL,后面用来过滤跌破DIL1的情况。

TDING1:=BARSLAST(DING)+1;

TDING2:=SUMBARS(DING,2);

TDING3:=SUMBARS(DING,3);

DIL1:=FINDLOW(L,TDING1,TDING2-TDING1,1);

DIL2:=FINDLOW(L,TDING2,TDING3-TDING2,1);

DL:=FINDLOW(L,1,TDING1,1);

5、条件设置

经过上面的准备,计算出了K线顶和底的价格,可以开始设置条件。

A1:计算三个顶的最大值和最小值,两者幅度限制在5%之内。幅度可以自行调整,比如完全的平顶,三个顶价格相等,幅度就是0,当然这种情况比较罕见,不太现实。

MAXH:=MAX(DINGH1,MAX(DINGH2,DINGH3));

MINH:=MIN(DINGH1,MIN(DINGH2,DINGH3));

A1:=(MAXH-MINH)/MINH*100<5;

A2:比较两个底,后面一个底DIL1在前面一个底DIL2的-2%以上,也就是可以稍微低一点,但是大部分情况应该高一些。写成-2%是稍微放宽了条件。另外限制DIL大于DIL1,过滤跌破DIL1的情况。

A2:=(DIL1-DIL2)/DIL2*100>-2 AND DL>DIL1;

A3:再加上触发信号,创20日新高,阳线。

A3:=H=HHV(H,20) AND C>O;

二、VCP形态指标公式

SL:=EMA(EMA(SLOPE(C,10)*5+C,10),2);

DI:=REF(SL,1)<REF(SL,2) AND REF(SL,1)<SL;

DING:=REF(SL,1)>REF(SL,2) AND REF(SL,1)>SL;

TDI1:=BARSLAST(DI)+1;

TDI2:=SUMBARS(DI,2);

TDI3:=SUMBARS(DI,3);

TDI4:=SUMBARS(DI,4);

DINGH1:=FINDHIGH(H,TDI1,TDI2-TDI1,1);

DINGH2:=FINDHIGH(H,TDI2,TDI3-TDI2,1);

DINGH3:=FINDHIGH(H,TDI3,TDI4-TDI3,1);

TDING1:=BARSLAST(DING)+1;

TDING2:=SUMBARS(DING,2);

TDING3:=SUMBARS(DING,3);

DIL1:=FINDLOW(L,TDING1,TDING2-TDING1,1);

DIL2:=FINDLOW(L,TDING2,TDING3-TDING2,1);

DL:=FINDLOW(L,1,TDING1,1);

MAXH:=MAX(DINGH1,MAX(DINGH2,DINGH3));

MINH:=MIN(DINGH1,MIN(DINGH2,DINGH3));

A1:=(MAXH-MINH)/MINH*100<5;

A2:=(DIL1-DIL2)/DIL2*100>-2 AND DL>DIL1;

A3:=H=HHV(H,20) AND C>O;

AA:=A1 AND A2 AND A3;

XG:=FILTER(AA,20);

DRAWICON(XG,L,1);

STICKLINE(XG,H,L,0,0),COLORYELLOW;

STICKLINE(XG,O,C,3,0),COLORYELLOW;

 

 

三、VCP形态选股公式

SL:=EMA(EMA(SLOPE(C,10)*5+C,10),2);

DI:=REF(SL,1)<REF(SL,2) AND REF(SL,1)<SL;

DING:=REF(SL,1)>REF(SL,2) AND REF(SL,1)>SL;

TDI1:=BARSLAST(DI)+1;

TDI2:=SUMBARS(DI,2);

TDI3:=SUMBARS(DI,3);

TDI4:=SUMBARS(DI,4);

DINGH1:=FINDHIGH(H,TDI1,TDI2-TDI1,1);

DINGH2:=FINDHIGH(H,TDI2,TDI3-TDI2,1);

DINGH3:=FINDHIGH(H,TDI3,TDI4-TDI3,1);

TDING1:=BARSLAST(DING)+1;

TDING2:=SUMBARS(DING,2);

TDING3:=SUMBARS(DING,3);

DIL1:=FINDLOW(L,TDING1,TDING2-TDING1,1);

DIL2:=FINDLOW(L,TDING2,TDING3-TDING2,1);

DL:=FINDLOW(L,1,TDING1,1);

MAXH:=MAX(DINGH1,MAX(DINGH2,DINGH3));

MINH:=MIN(DINGH1,MIN(DINGH2,DINGH3));

A1:=(MAXH-MINH)/MINH*100<5;

A2:=(DIL1-DIL2)/DIL2*100>-2 AND DL>DIL1;

A3:=H=HHV(H,20) AND C>O;

AA:=A1 AND A2 AND A3;

XG:FILTER(AA,20);

 

四、注意点

最后的触发条件是创20日新高H=HHV(H,20) ,这个条件是我技术Pie自己设置的,并没有按照《股票魔法师》书中的定义写。这样写触发的信号可以早一点,方便后续跟踪观察。另外,一个好的VCP应该要在股价的“第二阶段”,本次编写的VCP形态选股公式没有加入这个条件,务必注意。

后续有改进再说吧,编写这个公式已经把我折磨得够呛了。

关注技术Pie,学习更多通达信指标公式编写知识。

友情提醒:本文仅供学习交流技术指标公式,不构成任何投资建议。投资有风险,入市需谨慎!

http://www.lryc.cn/news/61924.html

相关文章:

  • vue 知识储备
  • MySQL表的增删查改
  • 详解C语言string.h中常用的14个库函数(三)
  • 无人机视频与GIS融合三维实景怎么实现?
  • 瞬间让你效率提高一倍的高效学习方法
  • 442. 数组中重复的数据|||41. 缺失的第一个正数|||485. 最大连续 1 的个数
  • 中国地图标准坐标和投影参数
  • CNN中卷积层、池化的计算公式
  • 基类派生类多态虚函数?
  • 像素是什么
  • NAT转换
  • 设计模式:创建者模式 - 单例模式
  • C++语言亚马逊国际获取AMAZON商品详情 API接口(
  • 在程序里面执行system(“cd /某个目录“),为什么路径切换不成功?
  • c++ 对类与对象的基础框架+完整思维导图+基本练习题+深入细节+通俗易懂建议收藏
  • 关于Open Shift(OKD) 中应用管理部署的一些笔记
  • 【linux】对于权限的理解
  • 测试人必备技能:如何进行WebSocket接口测试?
  • 【Android FrameWork (三)】- SystemServer
  • Docker容器部署及基本使用
  • 【机智云物联网低功耗转接板】+模拟MCU快速上手
  • ai免费写作在线平台-ai免费伪原创文章生成器软件
  • Web自动化测试简介及web自动化测试实战交教程
  • 基于单片机的家庭应急电源设计
  • 线程七大状态
  • Linux第一章
  • Microsoft Defender for Identity部署方案
  • 超越YOLOv8,飞桨推出精度最高的实时检测器RT-DETR!
  • 基于Docker安装Redis【保姆级教程、内含图解】
  • 电子表格软件与一站式BI的区别