指标: Harmonic Pattern Finder V3 - 页 2

 

我在代码中发现,图案是通过一系列 14 个整数定义的。 我推断这 14 个数字如下:

(1)名称 0=XA

(2)名称 1=AB

(3)名称 2=BC

(4)名称 3=CD

(5)名称 4=XAB

(6)名称 5=XAD

(7)名称 6=ABC

(8)名称 7=BCD

(8)三角形 XB

(9)三角形 BD

(10) 点 X

(11) 点 A

(12) 点 B

(13) 点 C

(14) D 点


下面是基于这些加密模式的代码:

0.382, 0.618, 0, 0, 0, 0, 0, 0, 0.786, 0.786, 1.13, 1.414, 0, 0


有人能帮我了解如何调整这些数字,以获得我所需要的结果吗? 目前,塞弗形态的绘制不正确。 要成为塞弗形态,B 点必须达到 X-A 的 0.382斐波那契回撤位,但收盘价不能低于 0.618;C 点必须达到 X-A 的 1.272 斐波延展位,但收盘价不能高于 1.41;D 点必须达到 X-C 的 0.786 斐波回撤位。


目前看来,该工具绘制的 80%-90% 的加密模式实际上并不符合标准。 大多数模式从未达到适当的 D 点,许多模式远远高于 C 点区域!

 
请注意,上面的序列中有 14 个数字,但我用了两次 8,所以代码中实际上有 15 个我认为适用于 14 个数字序列的数字....,我可能错了,这些数字甚至适用于 14 个数字....,现在我真的迷失了。
 
jojo151579:
请注意,上面的序列中有 14 个数字,但我两次使用了 8,因此代码中实际上有 15 个数字,我认为它们适用于 14 个数字的序列....,我可能错了,这些数字甚至适用于 14 个数字....,现在我真的迷失了。

模式由 "HPFMatcher.mqh "中定义的 18 个二进制结构描述:

struct PATTERN_DESCRIPTOR
  {
   double            ab2xa_min;
   double            ab2xa_max;
   double            bc2ab_min;
   double            bc2ab_max;
   double            cd2bc_min;
   double            cd2bc_max;
   double            ad2xa_min;
   double            ad2xa_max;
   double            cd2xc_min;
   double            cd2xc_max;
   double            xc2xa_min;
   double            xc2xa_max;
   double            cd2ab_min;
   double            cd2ab_max;
   double            bc2xa_min;
   double            bc2xa_max;
   double            cd2ad_min;
   double            cd2ad_max;
  };

因此,变量名基本可以解释;第一个是可接受的 AB 与 XA 的最小比率("B 必须达到 XA 的......"),第二个是可接受的最大比率("B 不得触及 XA 的......"),以此类推。因此,要改变 "B 必须不低于 XA 的......收盘"的标准并不简单,因为匹配器只使用高点和低点进行计算。

如果您真的需要,一个可行的方法是将最大比率设置得更低一些,例如 0.618 + 0.1,或者是下一个谐波水平,然后在临时过滤器中检查收盘价是否真的高于 0.618。还需注意的是,在默认指标设置下,该约束会有 0.05 的松弛,这意味着只要 B 点柱上的高/低点未触及 0.668,就仍能找到该形态。然后,您就可以验证收盘价标准了。


Cypher ({0.382,0.618,0,0,0,0,0,0,0,0.786,0.786,1.13,1.414,0,0})的形态描述符为

  • ab2xa_min = 0.382
  • ab2xa_max = 0.618
  • cd2xc_min = 0.786
  • cd2xc_max = 0.786
  • xc2xa_min = 1.13
  • xc2xa_max = 1.414

简单地说,这意味着

  • B 必须达到 0.382 XA 回撤位,但不能触及 0.618
  • D 必须触及 0.786 XC 回撤位,但也会在此处反转
  • C 必须到达 1.13 XA 延长线,但不能触及 1.414
因此,要让匹配器要求 C 点到达 1.272 延长线,只需将 11 号输入点从 1.13 改为 1.27。同样,要将最大值从 "不能触及 "改为 "低于收盘价 "也不是那么简单,同样会应用 0.05 的松弛值。

 
Andre Enger:

模式由 "HPFMatcher.mqh "中定义的 18 个二进制结构描述:

因此,变量名基本可以解释;第一个是可接受的 AB 与 XA 的最小比率("B 必须达到 XA 的......"),第二个是可接受的最大比率("B 不得触及 XA 的......"),以此类推。因此,要对 "B 不得低于 XA 的......收盘 "这一标准进行检查并不简单,因为匹配器只使用高点和低点进行计算。

如果您真的需要,一个可行的方法是将最大比率设置得更低一些,例如 0.618 + 0.1,或者是下一个谐波水平,然后在临时过滤器中检查收盘价是否真的高于 0.618。还需注意的是,在默认指标设置下,该约束会有 0.05 的松弛,这意味着只要 B 点柱上的高/低点未触及 0.668,就仍能找到该形态。然后,您就可以验证收盘价标准了。


Cypher 的形态描述符({0.382,0.618,0,0,0,0,0,0,0.786,0.786,1.13,1.414,0,0})有

  • ab2xa_min = 0.382
  • ab2xa_max = 0.618
  • cd2xc_min = 0.786
  • cd2xc_max = 0.786
  • xc2xa_min = 1.13
  • xc2xa_max = 1.414

简单地说,这意味着

  • B 必须达到 0.382 XA 回撤位,但不能触及 0.618
  • D 必须触及 0.786 XC 回撤位,但也会在此处反转
  • C 必须到达 1.13 XA 延长线,但不能触及 1.414
因此,要让匹配器要求 C 点到达 1.272 延长线,只需将 11 号输入点从 1.13 改为 1.27。同样,要将最大值从 "不能触及 "改为 "低于收盘价 "也不是那么简单,同样会应用 0.05 的松弛值。

太好了!谢谢您的答复!我想设置收盘价低于.618 会很困难,所以我可以跳过这个参数(如果收盘价低于.618,模式仍然有效,只是不能收盘价高于.618,这样我就可以自己过滤这些参数了)。 更改参数以达到 1.27 (C),并达到.786,但不能止步于此(我想设置收盘价低于.618,但不能收盘价高于.618,这样我就可以自己过滤这些参数了)。谢谢!
 
Andre Enger:

模式由 "HPFMatcher.mqh "中定义的 18 个二进制结构描述:

因此,变量名基本可以解释;第一个是可接受的 AB 与 XA 的最小比率("B 必须达到 XA 的......"),第二个是可接受的最大比率("B 不得触及 XA 的......"),以此类推。因此,要对 "B 不得低于 XA 的......收盘 "这一标准进行检查并不简单,因为匹配器只使用高点和低点进行计算。

如果您真的需要,一个可行的方法是将最大比率设置得更低一些,例如 0.618 + 0.1,或者是下一个谐波水平,然后在临时过滤器中检查收盘价是否真的高于 0.618。还需注意的是,在默认指标设置下,该约束会有 0.05 的松弛,这意味着只要 B 点柱上的高/低点未触及 0.668,就仍能找到该形态。然后,您就可以验证收盘价标准了。


Cypher 的形态描述符({0.382,0.618,0,0,0,0,0,0,0.786,0.786,1.13,1.414,0,0})有

  • ab2xa_min = 0.382
  • ab2xa_max = 0.618
  • cd2xc_min = 0.786
  • cd2xc_max = 0.786
  • xc2xa_min = 1.13
  • xc2xa_max = 1.414

简单地说,这意味着

  • B 必须达到 0.382 XA 回撤位,但不能触及 0.618
  • D 必须触及 0.786 XC 回撤位,但也会在此处反转
  • C 必须到达 1.13 XA 延长线,但不能触及 1.414
因此,要让匹配器要求 C 点到达 1.272 延长线,只需将 11 号输入点从 1.13 改为 1.27。同样,要将最大值从 "不能触及 "改为 "低于收盘价 "并不那么简单,同样会应用 0.05 的松弛值。

成功了!将 1.13 改为 1.27,并将第二个 0.786 改为 1.000(改成 0 会带来灾难性的结果:))现在运行起来更准确了!感谢你的代码帮助。 现在我可以理解所有这些东西了!你真是我的救星!节日快乐!
 

喜欢这个指标!(尤其是现在我可以自定义斐波水平!)。

如果我想设置一个扫描器来使用这个工具,并自动扫描市场观察窗口中列出的所有股票,我想我必须创建一个 EA,对吗? 我不是一个编码员......是否需要知道并能够编写代码来创建这个 EA?我想说的是,只搜索最近 150 个条形图中的新图案。 这将是一个已保存的设置,可以正常加载到指标中。 这是否可行,是否容易创建,还是我不是编码员,太一厢情愿了?

或者是否有更简单的方法将所有股票一次性加载到图表中,然后简单地应用这个工具? 一次加载每只股票进行搜索需要很多时间!(我是 MT 的新手,所以还没有完全掌握所有的技巧:)。

感谢您的建议



另外,我在 Cypher 形态上看到,从 X 到 D 的线显示的是 XA 的斐波回撤......我如何将其改为 XC? XA 回撤仅适用于 B 点,与 D 点无关。

 
jojo151579:

喜欢这个指标!(尤其是现在我可以自定义纤维水平!)。

如果我想设置一个扫描器来使用这个工具,并自动扫描市场观察窗口中列出的所有股票,我想我必须创建一个 EA,对吗? 我不是一个编码员......是否需要知道并能够编写代码来创建这个 EA?我想说的是,只搜索最近 150 个条形图中的新 "非球面 "形态。 这将是一个已保存的设置,可以正常加载到指标中。 这是否可行,是否容易创建,还是我不是编码员,太一厢情愿了?

或者有没有更简单的方法将所有股票一次性加载到图表中,然后简单地应用这个工具? 一次加载每只股票进行搜索需要很多时间!(我是 MT 的新手,所以还没有完全掌握所有的技巧:)。

感谢您的建议



另外,我在 Cypher 模式中看到,从 X 到 D 的线显示的是 XA 的斐波回撤......我如何将其改为 XC? XA 回撤仅适用于 B 点,与 D 点无关。

最新版本的 MT 似乎有解除锁定图表的功能。可以为每只股票打开一个图表,加载指标,然后将图表最小化,直到下次需要时再打开。虽然仍然需要手动点击每个窗口进行搜索,但至少没有每次都加载图表和指标那么麻烦。MT 没有内置扫描仪或相关功能。这就需要编码来制作一个,不过可以用脚本来完成。

从 X 到 D 的直线是使用所有形态的相同程序绘制的。这其实是一个错误,因为它没有考虑到 Cypher(或其他 C 点超过 A 点的图案)的特殊性,但一直没有解决。

要修复 Cypher,首先在 "HarmonicPatternFinderV3.mq5 "的第 880 行附近添加这一行:

string xcd=IntegerToString((int) MathRound(100*MathAbs(D-C)/MathAbs(X-C)));

然后将当前的第 992 行替换为:

if(k!=FIVEO) ObjectSetString(0,name5,OBJPROP_TOOLTIP,prefix+_patternNames[k]+" XAD="+xad);

改为

if(k!=FIVEO && k!=CYPHER)
  ObjectSetString(0,name5,OBJPROP_TOOLTIP,prefix+_patternNames[k]+" XAD="+xad);
else if(k!=FIVEO)
  ObjectSetString(0,name5,OBJPROP_TOOLTIP,prefix+_patternNames[k]+" XCD="+xcd);

这将为确认的图案添加最有意义的工具提示。若要在投影 上添加,请在投影绘制程序中执行相同操作,即在大约第 1130 行添加第一行,并替换当前的第 1180 行。


 
Andre Enger:

最新版本的 MT 似乎有一项解除锁定图表的功能。可以为每只股票打开图表,加载指标,然后将图表最小化,直到下次需要时再打开。虽然仍然需要手动点击每个窗口进行搜索,但至少没有每次都加载图表和指标那么麻烦。MT 没有内置扫描仪或相关功能。这就需要编码来制作一个,不过可以用脚本来完成。

从 X 到 D 的直线是使用所有形态的相同程序绘制的。这实际上是一个错误,因为它没有考虑到 Cypher(或 C 点超过 A 点的其他形态)的具体情况,但一直没有解决。

要修复 Cypher,首先在 "HarmonicPatternFinderV3.mq5 "的第 880 行附近添加这一行:

然后替换当前的第 992 行,内容如下

改为

这将为确认的图案添加最有意义的工具提示。如果要在投影上增加提示,请在投影绘制程序中执行同样的操作,即在大约 1130 行处添加第一行,并替换当前的 1180 行。


再次感谢您的帮助!不幸的是,我复制并粘贴了上述所有内容(在第 881 行输入第一行代码并替换原来的第 992 行,编译并重新启动),但没有任何变化。 这不是什么大问题...如果有需要,我可以自己追踪出来。 可能与开始时没有从 x 到 c 的之字形线有关。 感谢大家的帮助!

我就知道扫描器必须用代码编写......MT5 既好用又糟糕:)......甚至不能像 tradingview 那样自动内置 xabcd 绘图工具......总之,这个指标仍然非常适合回测。 我可能有一天要购买一个扫描器(等我找到一个不那么贵的!)。

 
jojo151579:

再次感谢您的帮助!不幸的是,我复制并粘贴了上述所有内容(输入第 881 行的第一段代码并替换原来的第 992 行,编译并重新启动),但没有任何变化。 这不是什么大问题......如果需要,我可以自己追踪出来。如果需要的话,我可以自己追踪出来。 可能与开始时没有从 x 到 c 的之字形线有关。 感谢您的帮助!

我就知道扫描仪必须用代码编写......MT5 既好用又糟糕:)......它甚至不能像 tradingview 那样自动内置 xabcd 绘图工具......总之,这个指标仍然非常适合回溯测试。 我也许有一天会买一个扫描仪(等我找到一个不那么贵的!)。

是的,抱歉**ffacepalm**,必须在 "HPFDrawingObserver.mqh "中完成,然后添加第 300 行,替换第 410 行。或者,您也可以直接下载更新,现在推送的更新修复了所有模式的问题。如果只下载 "HPFDrawingObserver.mqh "文件,甚至不需要为 Cypher 重新输入修改后的图案描述符。
 
Andre Enger:
是的,抱歉**ffacepalm**,必须在 "HPFDrawingObserver.mqh "中完成,然后添加第 300 行,替换第 410 行。或者你也可以直接下载更新,现在推送的更新修复了所有模式的问题。如果只下载 "HPFDrawingObserver.mqh "文件,甚至不需要为 Cypher 重新输入修改过的模式描述符。
哦,好的....,谢谢.....,我也尝试了上述所有方法,但没有任何变化。仍然显示 XAD 的信息。谢谢