从MT4转移到MT5的问题。或者,更确切地说,在MT5中无法执行某些算法而不出现错误。

 

首先引用MQL5语言指南的一段话。在组织数据访问的标题下。

"......数据的可及性

HCC格式或甚至HC ready格式的数据的可用性并不总是意味着这些数据在图表上显示或在mql5程序中使用的无条件可及。

从mql5-程序中访问价格数据 或指标值你应该记住,它不能保证在某一时刻,或从某一时间点上获得..."。

请立即不要就如何规避所述问题给出建议。这主要是为MQL5开发人员编写的。

在MT4的ZUP中,实现了分形过滤算法。在文章中,ZUP是一种带有Pesavento图案的通用之 字形。图形界面 是一个关于它的小写。但在这里我将再次描述该算法。

当在图表上显示的图形工具与选定的图形工具(如安德鲁斯的Pitchfork,或任何其他)结合,使用图形界面的人字形极值或波浪图案时,分形过滤的算法被参与。

分形过滤在那些该图形工具的输出失去意义的时间范围内删除所创建的图形工具。

例如,在某些时间段没有所选极值的报价(这与较低的时间段有关),或者在较高的时间段的一个柱体中出现两个或多个极值,在柱体中的位置有各种变化。

在这样的时间范围内显示一个先前创建的图形工具是没有意义的。它失去了它的功能。在这种情况下,分形过滤会自动防止图形工具的显示 "陷入困境"。我将边走边为神经网络人员添加...在神经网络的实施方面有一些非常有趣的想法......但这是另一个话题。

MQL5的问题是,即使在所有的时间段上生成了附在图表工具上的所有极值的时间序列,但由于数据访问的特殊性(见上文),有时也会中断对所选极值的某些时间段的访问。因此,产生了分形滤波算法的时间框架的不正确数据。也就是说,例如,当访问所有的时间框架时,分形过滤的数据中的上层cf给出了月度时间框架的上层cf值。但在无法保证可 及性的时刻,这个极值的上限tf被限制在当前的时间框架内。

用户点击附着在图形工具上的符号。图表符号将被显示出来。用户切换到旧的时间框架。分形过滤算法删除了图形工具。用户感到不解。极限值都是可见的,但图形工具却消失了。

而这里不可能在用户点击选定的符号后组织等待图表符号的绑定,直到进入与当前时间框架不同的时间序列。

在MT4中不存在这样的问题。

这种情况是阻碍我,在这种情况下,为MT5开发程序的问题。这个问题甚至在MT5被引入市场时就已经很清楚了...

我把ZUP代码翻译成了MT5。并把它放在我的市场里。但上面描述的问题在那里是存在的。我没有建造拐杖来绕过这个问题。如果你知道这个问题,你可以直接删除创建的图形工具。并重新展示它。但这是,我应该怎么说呢....?

我认为,上述问题仍然是MQL5语言或MT5终端的不完善之处。它应该!!!在任何时候都能保证访问已经生成的时间序列。

说句题外话。在ZUP中创建波浪分区时,分形滤波被启用。这里我们有以下内容。当我能接触到所有时间段的所有时间序列时,波浪模式是正确的。但如果突然终止对时间序列的访问,波型可能会以不可预测的方式输出。因此,在创建波段分区时,一切都很整齐。而在随后的一些时刻,当波浪分区在过渡到其他时间段时,它是以一种不可预测的方式显示的。 而要创造拐杖来消除错误的终端操作是不容易的。

 
忘记图形对象。这很不方便,而且很有限。有了kanvas,一切工作都将变得更容易、更快捷,并具有无限的图形可能性。
 

哦,顺便说一下,就在昨天,我正在写一个指标,其中我必须定期从W1分块复制数据,持续一年。很多时候发生了不成功的复制尝试。最后没有成功,我不得不用不同的原则来做一切。

 
Eugeni Neumoin:

...

也不习惯和不方便4后的数据访问。

5中的数据访问仅限于TF。

如果你在TF D1或W1上画了相当长的趋势线,然后去M1或M5,你将不会看到它,因为访问 远处的趋势点的限制

你可以很容易地检查它。

我们必须处理好画布的问题。但有可能那里也有这样的伏击在等着。

 
你能再现性地证明数据的不可得性吗?

你断言没有可重复的证据。
 
很好!我想为指标做准备,去掉多余的东西以显示主要的东西。我做到了。但突然间,它像瑞士手表一样工作起来。
 
Uladzimir Izerski:

4之后的数据访问也不习惯、不方便。

5中的数据访问仅限于TF。

如果你在TF D1或W1上画了相当长的趋势线,然后去M1或M5,你将不会看到它,因为访问 远处的趋势点的限制

你可以很容易地检查它。

我们必须处理好画布的问题。但也许那里也有一个埋伏在那里。

这是一个完全不同的故事。远点应该有小价格的历史,以显示趋势。

让我们以W1叉为参照物来画。最短的时间框架是m20。这一点通过分形滤波的算法表现出来。在这种情况下,它被显示在工具提示中。 参照下层tf的叉子的第一个点来建造东西是没有意义的。

下图中m20的向上箭头所示的位置用一条垂直线标记。一切都显示得很好。但在更浅的帧上,这些干草叉不会被分形滤波所显示。在更浅的框架上,历史会超过TERMINAL_MAXBARS。 这就是为什么它不会被显示在小于m20的TF上。

一切都完美地展示出来了。没有轮班。而且在MT5中运行良好。然而,为了能够以这种方式显示,在显示分叉时,应该在最小的时间框架上设置准确的极值时间,在我们的例子中,在m20上设置。

顺便说一下,你可以看到,SLM318线(虚线)在2018年11月9日工作正常。这就像明斯克的外汇学院正在推广的狙击手技术。但在这里,市场 "看到 "了SLM318这条线,只是巧妙地工作......

 
Renat Fatkhullin:
你能重现地证明数据的不可访问性吗?

你断言没有可重复的证据。

我没有保存照片。但当情况出现时,我会把照片贴出来。我将无法用一些测试代码来重现它。创建的代码太多。

我将只描述它的方式。我在H3上画了干草叉。我把它与较高帧数上的极值结合起来。我搬到了H4。干草叉消失了。我开始理解为什么会发生这种情况。我检查了分形过滤的TF边界所在的工具提示。 看来,上界 在H3上。我删除了图表中的干草叉。重新将干草叉连接到同一个极端。我检查了上限。结果是在一个月的时间范围内。而这样的情况又反复出现。但并不频繁。

在显示 "之 "字形时,程序会访问前10个极值的所有保险箱。每次 "之 "字形都要重新绘制。只有当价格离开零条时,才会重新画出之字形。不是在每一次打勾时。

我正在关闭终端。我把它从电脑内存中卸下来。我用历史记录访问*.hc文件所在的文件夹。所有时间段的时间序列文件都有日期和时间,是终端从计算机内存中卸载的时刻。也就是说,所有的时间序列都形成了。

 
对图片不感兴趣,它是由你的代码导出的。

值得关注的是,拒绝提供有明确日志的数据。
 
Renat Fatkhullin:
不是我感兴趣的图片,它是由你的代码衍生出来的。

值得关注的是,拒绝提供有明确日志的数据。

这必须要有一个模型。要创建日志。我将考虑如何做到这一点。

 
Renat Fatkhullin:
你能重现地证明数据的不可访问性吗?

你断言没有可重复的证据。

如果这是对我的一个问题?

那么这里就重现一个简单的例子。

D1.

v1

转到H4

H4


转到 H1

H1


在一个小TF上会有一个清晰的图表。

对象在列表中,但它们不在图表上。

m1

原因: