通达信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,学习更多通达信指标公式编写知识。
友情提醒:本文仅供学习交流技术指标公式,不构成任何投资建议。投资有风险,入市需谨慎!
相关文章:
通达信VCP形态选股公式,憋了好几天才写出来
VCP形态的英文”Volatility Contraction Pattern”的缩写,意思是“波动收缩形态”。VCP形态是全美交易冠军马克米勒维尼的核心交易模式之一,在其著作《股票魔法师》中有详细介绍。 马克米勒维尼把VCP形态比喻为湿毛巾,拧过一次后仍含水&…...
vue 知识储备
vue2 和 vue3 的区别 模块拆分:vue3采用 compnent API 更注重模块上的拆分,而vue2中则需要使用完整的vuejs,无法使用单独的模块重写API:vue2组件方法挂载到实例中未使用也会被打包,vue3通过 tree-shaking机制,实现按需引入,减少用户打包后体积数据双向绑定:vue2使用 Ob…...
MySQL表的增删查改
目录 一 插入 1 基本语法 ①全列插入 ②指定列插入 ③多条记录插入 ④冲突更新 二 查询 查询全部数据 指定列查询 显示 拼接 取别名 去重查找 where 逻辑运算符和比较运算符 结果排序 Limit group by 分组 聚合函数 对于count 对于sum 对于group by 相关的语…...
详解C语言string.h中常用的14个库函数(三)
本篇博客继续讲解C语言string.h头文件中的库函数。本篇博客计划讲解3个函数,分别是:strstr, strtok, strerror。其中strstr函数我会用一种最简单的方式模拟实现。 strstr char * strstr ( const char * str1, const char * str2 );strstr可以在str1中查…...
无人机视频与GIS融合三维实景怎么实现?
无人机视频与GIS融合三维实景怎么实现?无人机三维GIS作为一项新兴的测绘重要手段,具有续航时间长、成本低、机动灵活等优点,为城市的规划建设带来极大便利。 那么此项技术有什么样的特点呢?下面智汇云舟就带大家一起来了解一下。 三维是将采集以及经运…...
瞬间让你效率提高一倍的高效学习方法
方法不对,努力白费;方法对了,事半功倍!在学习的过程中我们会遇到各种困难与阻碍,如何发现并优化自己的学习方法就变得尤为重要。高效学习方法是指通过科学的、有效的方法来提高学习效率,实现更好的学习成果…...
442. 数组中重复的数据|||41. 缺失的第一个正数|||485. 最大连续 1 的个数
442. 数组中重复的数据 题目 给你一个长度为 n 的整数数组 nums ,其中 nums 的所有整数都在范围 [1, n] 内,且每个整数出现 一次 或 两次 。请你找出所有出现 两次 的整数,并以数组形式返回。 你必须设计并实现一个时间复杂度为 O(n) 且仅…...
中国地图标准坐标和投影参数
目录 一、地理坐标 二、投影坐标 三、ArcGIS投影变换 四、说明 一、地理坐标 GCS_Krasovsky_1940(克拉索夫斯基_1940椭球体) 具体参数如下图: 每个国家或地区都有各自的基准面,我们通常所说的北京54坐标系、西安80坐标系实际上…...
CNN中卷积层、池化的计算公式
卷积计算公式 1、卷积层输入特征图(input feature map)的尺寸为:(batch_size,Channel,H,W) H(input)表示输入特征图的高 W(input)表示输入特征图的宽 C(input)表示输入特征图的通道数(如果是第一个卷积层则是输入图像的通道数,如果是中间…...
基类派生类多态虚函数?
通常在层次关系的根部有一个基类,其他类则直接或间接的从基类继承而来,这些继承得到的类称为派生类。基类负责定义在层次关系中所有类共同拥有的成员,而每个派生类定义各自特有的成员。 成员函数与继承派生类可以继承其基类的成员, 然而有时…...
像素是什么
像素分为设备像素和设备无关像素。 下面说说来龙去脉。 一、显示器 显示图像的电子设备。 (一)显示器种类 1.LCD LCD(Liquid crystal display),是液体晶体显示,也就是液晶显示器,LCD具有功耗低…...
NAT转换
目录标题 NAT:网络地址转换(cisco篇)一对一(静态)一对多(动态)多对多(动、静均可)端口映射(静态) nat:网络地址转换(华为篇࿰…...
设计模式:创建者模式 - 单例模式
文章目录 1.介绍2.单例模式的结构3.单例模式的实现(饿汉、懒汉)饿汉式-方式1(静态变量方式)饿汉式-方式2(静态代码块方式)懒汉式-方式1(线程不安全)懒汉式-方式2(线程安全…...
C++语言亚马逊国际获取AMAZON商品详情 API接口(
跨境电子商务是一种全新的互联网电商模式,运用电子化方式促成线上跨境交易,利用跨境物流运送商品,有利于打破传统的贸易格局,成为新的经济增长点。对我国来说,跨境电商平台正用一种全新的力量改变我国产业链的结构&…...
在程序里面执行system(“cd /某个目录“),为什么路径切换不成功?
粉丝提问: 彭老师,问下,在程序里面执行system(“cd /某个目录”),这样会切换不成功,为啥呢 实例代码: 粉丝的疑惑是明明第10行执行了cd /media操作, 为什么12行执行的pwd > test2.txt 结…...
c++ 对类与对象的基础框架+完整思维导图+基本练习题+深入细节+通俗易懂建议收藏
绪论 上一章,我们将c入门的基础知识进行了学习,本章其实才算真正的跨入到c开始可能比较难,但只有我们唯有不断的前进,才能斩断荆棘越过人生的坎坷! 话不多说安全带系好,发车啦(建议电脑观看&…...
关于Open Shift(OKD) 中应用管理部署的一些笔记
写在前面 因为参加考试,会陆续分享一些 OpenShift 的笔记博文内容为介绍 openshift 不同的创建应用的方式,包括: 基于 IS 创建应用基于镜像创建应用基于源码和 image 创建应用基于源码和 IS 创建应用基于模板创建应用 学习环境为 openshift v…...
【linux】对于权限的理解
权限 Linux权限的概念用户之间的切换 Linux权限管理文件权限操作文件的人Linux文件默认权限的设置权限掩码 所属组/其他删除拥有者创建的文件文件拥有者、所属组的修改修改文件拥有者修改文件所属组一次性修改拥有者和所属组 目录的执行权限 Linux权限的概念 首先,…...
测试人必备技能:如何进行WebSocket接口测试?
目录 前言 WebSocket介绍 HTTP与WebSocket的区别 二者关系 WebSocket测试方法 使用Postman 使用Jmeter 使用Python 结语 前言 随着Web应用的日益普及,WebSocket作为一种全双工通信协议,在移动端、游戏、视频会议等方面得到广泛应用。 而对于需…...
【Android FrameWork (三)】- SystemServer
文章目录 知识回顾启动第一个流程initZygote的流程 前言源码分析1.system_server2.SystemServer.main3,startBootstrapServices4,startService 拓展知识LoadApkcontext 对于Android context 大家是怎么理解的?LocalServices.java: addServece方法中 ArrayMap和HashM…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
基于PHP的连锁酒店管理系统
有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...
TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...
Linux系统部署KES
1、安装准备 1.版本说明V008R006C009B0014 V008:是version产品的大版本。 R006:是release产品特性版本。 C009:是通用版 B0014:是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存:1GB 以上 硬盘…...
Chrome 浏览器前端与客户端双向通信实战
Chrome 前端(即页面 JS / Web UI)与客户端(C 后端)的交互机制,是 Chromium 架构中非常核心的一环。下面我将按常见场景,从通道、流程、技术栈几个角度做一套完整的分析,特别适合你这种在分析和改…...
es6+和css3新增的特性有哪些
一:ECMAScript 新特性(ES6) ES6 (2015) - 革命性更新 1,记住的方法,从一个方法里面用到了哪些技术 1,let /const块级作用域声明2,**默认参数**:函数参数可以设置默认值。3&#x…...
