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

news2024/11/25 1:07:47

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.coloradmin.cn/o/461377.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

动态链接库的链接和运行

本文对动态链接库的链接和运行进行一个总结&#xff0c;为什么要分开说呢&#xff1f;因为链接通过生成可执行文件并不代表运行时能找到依赖的动态库。这与静态库是不一样的&#xff0c;因为静态库在编译完成后会库会编译到可执行程序中&#xff0c;但是动态链接库则不然&#…

最新研究:可审计的具有拜占庭鲁棒的联邦学习方案

本人新论文&#xff0c;可免费下载&#xff1a;https://download.csdn.net/download/liangyihuai/87727720 Y. Liang, Y. Li and B. -S. Shin, “Auditable Federated Learning With Byzantine Robustness,” in IEEE Transactions on Computational Social Systems, doi: 10.…

【Unity3D日常开发】Unity3D中实现UI擦除效果、刮刮卡功能

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 使用Unity3D实现UI的擦拭效果、刮刮卡功能的效果实现方式比较多…

Python基于Pytorch Transformer实现对iris鸢尾花的分类预测,分别使用CPU和GPU训练

1、鸢尾花数据iris.csv iris数据集是机器学习中一个经典的数据集&#xff0c;由英国统计学家Ronald Fisher在1936年收集整理而成。该数据集包含了3种不同品种的鸢尾花&#xff08;Iris Setosa&#xff0c;Iris Versicolour&#xff0c;Iris Virginica&#xff09;各50个样本&am…

BatchNormalization和LayerNormalization的理解、适用范围、PyTorch代码示例

文章目录 为什么要NormalizationBatchNormLayerNormtorch代码示例 学习神经网络归一化时&#xff0c;文章形形色色&#xff0c;但没找到适合小白通俗易懂且全面的。学习过后&#xff0c;特此记录。 为什么要Normalization 当输入数据量级极大或极小时&#xff0c;为保证输出数…

【算法基础】直接插入排序 + 希尔排序

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在学习c和算法 ✈️专栏&#xff1a;【C/C】算法 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章有啥瑕疵 希望大佬指点一二 如果文章对你有…

基于人类反馈的强化学习(RLHF)在LLM领域是如何运作的?

基于人类反馈的强化学习在LLM领域是如何运作的&#xff1f; 为什么需要强化学习RLHFPre-training modelReward ModelFine-tune with RL 参考 为什么需要强化学习 指标无法衡量。在过去的nlp任务中&#xff0c;词性标注、机器翻译、语义判别等任务是nlp任务的主力军&#xff0c…

Hytrix原理

这里写目录标题 Hytrix容错机制熔断资源隔离线程池隔离信号量隔离 服务降级请求缓存请求合并 Hystrix流程图 Hytrix容错机制 熔断 在一个统计时间窗口&#xff08;HYST rixCommandProperties.metricsRollingStatisticalWindowInMilliseconds()&#xff09;内&#xff0c;处理…

转化率双倍暴涨——客户自助服务门户

近年来&#xff0c;社交媒体的兴起使客户负责品牌对话。随着电子商务和在线帮助需求的扩大&#xff0c;公司必须满足并超越新的期望&#xff0c;以保持客户满意度。 通过SaleSmartly&#xff08;ss客服&#xff09;自动化流程功能建立客户自助服务是一种双赢的决策&#xff0c…

Ajax XHR响应

文章目录 AJAX 服务器 响应服务器响应responseText 属性responseXML 属性 AJAX 服务器 响应 服务器响应 如需获得来自服务器的响应&#xff0c;请使用 XMLHttpRequest 对象的 responseText 或 responseXML 属性。 属性描述responseText获得字符串形式的响应数据。responseXML…

2015年下半年软件设计师下午试题

试题一 【说明】 某慕课教育平台欲添加在线作业批改系统&#xff0c;以实现高效的作业提交与批改&#xff0c;并进行统计。学生和讲师的基本信息已经初始化为数据库中的学生表和讲师表。系统的主要功能如下&#xff1a; 提交作业。验证学生标识后&#xff0c;学生将电子作业通…

Ajax 数据库

文章目录 AJAX Database 实例AJAX 数据库实例实例解释 showCustomer() 函数AJAX 服务器页面 AJAX Database 实例 AJAX 可用来与数据库进行动态通信。 AJAX 数据库实例 下面的例子将演示网页如何通过 AJAX 从数据库读取信息&#xff1a; 请在下面的下拉列表中选择一个客户&…

【wpf】转换器 Converter

今天积攒了一个转换器的用法&#xff0c;分享给各位。 我们经常会有这种需求&#xff1a; 某些控件有时需要显示&#xff0c;有时需要隐藏&#xff0c;比如&#xff1a; 那&#xff0c;我就想通过一个bool变量和是否显示绑定。 但是我们知道&#xff0c;是否显示&#xff0c;…

nssctf web

[BJDCTF 2020]easy_md5 测试发现输入的内容会通过get传递但是没有其他内容 观察一下响应头 我们看到了 select * from admin where passwordmd5($pass,true) 这里的md5(string,raw) 这里的string应该清楚就是字符串&#xff0c;是必选参数 raw是可选参数 默认不写为FA…

08 - Linux终端与进程

---- 整理自狄泰软件唐佐林老师课程 查看所有文章链接&#xff1a;&#xff08;更新中&#xff09;Linux系统编程训练营 - 目录 文章目录 1. 详解控制台与终端1.1 问题1.2 历史回顾1.2.1 控制台(Console)1.2.2 终端&#xff08;Terminal&#xff09; 1.3 历史发展进程1.4 终端与…

【Springboot系列】项目启动时怎么给mongo表加自动过期索引

1、前言 在之前操作mongo的过程中&#xff0c;都是自动创建&#xff0c;几乎没有手动创建过表。 这次开发中有张表数据量大&#xff0c;并且不是特别重要&#xff0c;数据表维护一个常见的问题是过期数据没有被及时清理&#xff0c;导致数据量过大&#xff0c;查询变得缓慢。…

【操作系统】CPU 缓存一致性、MESI 协议

【操作系统】CPU 缓存一致性、MESI 协议 参考资料&#xff1a; CPU缓存一致性协议(MESI) 【JUC】Java并发机制的底层实现原理 CPU 缓存一致性 文章目录 【操作系统】CPU 缓存一致性、MESI 协议CPU Cache 的数据写入写直达写回 缓存一致性问题总线嗅探MESI 协议总结 CPU Cache …

电感知识大全

目录 一、电感的种类 1、共模电感 2、差模电感 3、工字电感 功率电感 4、磁珠 5、变压器 6、R棒电感、棒形电感、差模电感 二、电感符号 三、电感特性 前面在学习电容的时候&#xff0c;为了让大家更形象&#xff0c;更通俗的去理解这个元器件&#xff0c;都是拿水缸去…

IO多路复用——select函数

1.select函数原型和fd_set结构体说明 1.1 select函数原型 ​ 使用 select 这种 IO 多路转接方式需要调用一个同名函数 select&#xff0c;这个函数是跨平台的&#xff0c;Linux、Mac、Windows 都是支持的。程序员通过调用这个函数可以委托内核帮助我们检测若干个文件描述符的…

mybatisPlus·入门·贰

文章目录 1 简单CRUD接口1.1 根据id查询&#xff08;{id传参&#xff09;1.1.1 接口类直接继承IService1.1.2 controller直接调用方法 1.2 根据ids查询1.3 新增1.3.1 接口类直接继承IService1.3.2 controller直接调用方法 1.4 修改状态&#xff08;Query传参&#xff09;1.4.1 …