mt4 mt5的zigzag的指标算法,在度娘上面找到了不少,都是讲得云里雾里的,

有些讲得好像是很明了,但是,一对应到代码里面,就又懵了。到底这个是如何用代码实现。

经过我不懈的研读,测试,调试,终于解开了这个谜

首先是 mt4 5  的作图机制,包括这函数OnInit()  ,里面的东西就不详细讲了(主要是自己也没搞太清楚);

主要的是  OnCalculate()的循环机制~~

这里,我们主要是理解的是,通过这个函数的循环,我们可以获取的信息:

rates_total (所有k线数目),也就是bar的数目;

prev_calculated,这个是上次运行OnCalculate()留下的结果数目,这里的留的数值的就是bar数目;

后面的都好理解,open[] high[] low[] close[]   这个分别代表每个bar 的开盘价,最高价,最低价,收盘价。

其他参数都米有用到的。

开始来重点了,下面出场的是我们都是经常迷惑的三个可调参数:InpDepth  InpDeviation InpBackstep

对应就是depth  deviation  backsteps    第一个叫宽度比较合适,第二个叫偏离偏差比较合适,名字上看就知道,指细微的差别,第三个即使字面意思了,回退步数,但是我觉得叫回溯步数更合适;

代码当中,同时还定义了重要存储各个顶点的三个数组:

ZigZagBuffer[] :这个是代表需要画出来的各个顶点,就是落实下来的上下转折点,这个是结合HighMapBuffer 和LowMapBuffer的所有点,重新筛选出来的;

HighMapBuffer[]:代表所有的合乎策略的高点,这个肯定比zigzag的高点要多

LowMapBuffer[]:同理这个代表合乎策略低点

以下就详细介绍的   High  Low 的MapBuffer是策略是如何实现的:

这里就不结合枯燥的代码了,

只选Low的方向:

low点的选择是这样:在宽度范围depth,按默认值12,就是宽度范围为12跟k线寻找,只有这12根K线最后一根是这么多根线里面最低的(这里肯定最低价,不是收盘价),然后就会把这个最低值记录在LowMapBuffer里面,其它的值,全部是0

而且,误差范围在正负deviation(要乘以基点值)里面,都会去记录

按照以上话,就有可能会产生两个密集的低点,算法里面就会以后面一点的为准,然后往前回溯Backstep的步数,默认值是3步,就是回溯3个k线,把值清零。

可以这么理解,一个极值(low点或者high点)前后三步以内是不允许产生新的同方向的极值

就是low点前后三步,不会有low点 ,high点前后三步也是如此。

上图看再说明一次,以下这是一个宽12bar,就是12K线的水平线,

现在看这个两个低点不能成为极值点呢,

我们用上面那条12宽度的水平线度量一下就懂,

记住最新值跟最低点是同一个点的时候,才会更新为极值,反之亦然

这里还是附上原版代码可以对着看一下:

      val=low[Lowest(low,InpDepth,shift)];//这里Lowest函数是找出宽度InpDepth个K线的里面的最低值if(val==last_low)val=0.0;else{last_low=val;if((low[shift]-val)>InpDeviation*_Point)val=0.0;else{for(back=1; back<=InpBackstep; back++){res=LowMapBuffer[shift-back];if((res!=0) && (res>val))LowMapBuffer[shift-back]=0.0;}}}if(low[shift]==val)LowMapBuffer[shift]=val;elseLowMapBuffer[shift]=0.0;

下面讲解另外一个难懂点,就是如何结合HighMapBuffer 和LowMapBuffer  筛选出来最终的zigzag

大概思路是这样:

HighMapBuffer 和LowMapBuffer同时从0位置开始遍历,这个0位置的肯定是对应最左边,时间最早的K线,然后先找出一个zigzag高点或者低点,记录在ZigZagBuffer里面,如果第一个找出来的是zigzag高点,下一个寻找的就必定是zigzag低点,反之亦然。高就肯定找HighMapBuffer   ,低就肯定是LowMapBuffer。

这里就会遇到一个问题,上图说明更清楚

上图前面的第一个highmap高点,首先会记录zigzag高点,然后按照流程,下一步就要找zigzag低点,但是在下一个lowmap点找到之前,是要先更新zigzag前高点的值,只要找到更高的,就会自动更新,最后如图,zigzag高点就被挪到后面位置去了,直到找到lowmap低点,再把它记录到zigzag低点,然后就推出循环了。

到这里,整个算法思路就基本讲完了

MT5 MT4 zigzag指标的算法详解相关推荐

  1. 推荐系统简介+算法详解+项目介绍

    目录标题 推荐系统简介 1.推荐系统目的 2.推荐系统的应用 3.推荐系统的基本思想 4.推荐系统的数据分析 5.推荐系统的分类 6.推荐算法简介 6.1 基于人口统计学的推荐算法(基于用户数据) 6 ...

  2. YOLOv5算法详解

    目录 1.需求解读 2.YOLOv5算法简介 3.YOLOv5算法详解 3.1 YOLOv5网络架构 3.2 YOLOv5实现细节详解 3.2.1 YOLOv5基础组件 3.2.2 输入端细节详解 3 ...

  3. 新颖性搜索(Novelty Search,NS)算法详解与实现

    新颖性搜索(Novelty Search,NS)算法详解与实现 基于目标的进化算法的缺点 新颖性搜索与自然进化 新颖性指标 算法描述 新颖性搜索算法实践 基于目标的进化算法的缺点 大多数机器学习方法( ...

  4. 3. KNN最近邻算法详解与关键技术剖析(理论篇)

    一.KNN算法概述 K最近邻(K-Nearest-Neighbour,KNN)算法可以说是最简单的分类算法,易于理解,其核心思想就是距离的比较,即离谁最近,就被归类于谁(群体投票的方式). 通俗解释: ...

  5. 排序算法,最全的10大排序算法详解(Sort Algorithm)

    文章目录 排序算法,最全的10大排序算法详解(Sort Algorithm) 排序算法分类 排序算法稳定性 时间复杂度(time complexity) 1#时间复杂度的意义 2#基本操作执行次数 如 ...

  6. 【机器学习】集成学习及算法详解

    集成学习及算法详解 前言 一.随机森林算法原理 二.随机森林的优势与特征重要性指标 1.随机森林的优势 2.特征重要性指标 三.提升算法概述 四.堆叠模型简述 五.硬投票和软投票 1.概念介绍 2.硬 ...

  7. id3算法c语言实现,从ID3到C5.0的故事:算法详解及实践应用

    原标题:从ID3到C5.0的故事:算法详解及实践应用 在前面,我们分别概述性地介绍了决策树的基本知识: 1.算法概述 ID3(Iterative Dichotomiser3)算法可以说决策树算法中最著 ...

  8. KNN算法详解及实现

    KNN算法详解及实现 k近邻法(k-nearest neighbor,k-NN)是一种基本的分类和回归方法,是监督学习方法里的一种常用方法.k近邻算法假设给定一个训练数据集,其中的实例类别已定.分类时 ...

  9. 【20210922】【机器/深度学习】KNN (K近邻) 算法详解

    一.算法概念 KNN, K-near neighbor,即最近邻算法.它是一种分类算法,算法思想是:一个样本与数据集中的 k 个样本最相似,如果这 k 个样本中的大多数属于某一个类别,则该样本也属于这 ...

  10. JVM底层原理+四大垃圾回收算法详解-周阳老师

    转载自,感谢原作者:https://www.jianshu.com/p/9e6841a895b4 注意:垃圾回收算法周阳老师讲的有错误,具体在p19,四大垃圾回收算法为复制算法.标记-整理算法.标记- ...

最新文章

  1. 用MATLAB画桌子,怎样用matlab编写桌子的动态变化图
  2. Java 动态绑定 静态绑定
  3. html div背景半透,css半透明背景实现方法
  4. docker中部署springboot项目,并且外部访问
  5. LabVIEW(七):多态VI
  6. MySQL索引类型总结和使用技巧以及注意事项
  7. 深入理解 MVC 中的 M 与 C
  8. 悲痛!临近年关,一位 IT 创业者自杀,曾卖房给员工发工资
  9. 【追一科技】AAAI、ACL、EMNLP等顶会论文成果分享
  10. 数字图像处理-绪论 (上)
  11. 如何做一个简单的学生喜欢家长买单的scratch小游戏
  12. 网络传输数据基本流程 详解
  13. 我找到了村里最挣钱的生意!
  14. Imagination出席AIIA交流活动 PowerVR NNA IP入选首批《AI芯片技术选型目录》
  15. win7电脑蓝屏代码0x00000034
  16. 震惊世界的25张照片
  17. [译]Flutter缓存管理库flutter_cache_manager
  18. 华硕计算机用户名默认,华硕路由器设置方法_华硕(ASUS)路由器怎么设置?-192路由网...
  19. linux more命令用法,linux more命令详解
  20. 统计自然语言处理梳理四:篇章分析

热门文章

  1. Winform的菜单控件
  2. android游戏编程之从零开始!JVM虚拟机原理深入解析,看这一篇就够了!
  3. mysql必知必会和sql必知必会
  4. “清华同方同传”By软件:同方易教管理平台 V2.4
  5. 批量将txt转换成Excel格式
  6. java学习笔记宋红康版本-01
  7. Pisa-Proxy SQL 解析之 Lex Yacc
  8. win7下让不支持代理的程序使用代理
  9. linux镜像 百度网盘链接
  10. Inceptor简介