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

 
Vict:

fxsaber 是正确的 - 有一个选项

这有点土气--EXPR将被计算两次,但还是比较灵活。不能说它是通用的(只针对算术类型。误差值必须相等,这是令人不快的。试图通过明确的结构/函数专业化来解决这个问题,但这是不可能的。

问候!

我想开一个新的话题,我不能制定问题...我有问题,))))但材料是相当新鲜和有趣的

你已经做了一个伟大的工作,想最终确定它 - 可用性(@fxsaber 有他所有的工作,一旦插入一个inluder)是实用的!这是很重要的。

而且为了使这一切看起来更专业,你应该使用(或接近)C++/C#语法。

 
Artyom Trishkin:

我可以给你我的意见。

让我们从目前所拥有的东西中安静下来,不要抱怨,帮助发现错误,并期望得到修复--它们确实得到了修复,并出现了新的好功能。

我同意这种做法。

---------

我从最初的版本中就已经有了某种缓存的部分。也就是说,我已经创建了包含时间、最小值和最大值的数组,用于前10个之字形极值。

在MT5的版本中,我还添加了一个包含条形数字的数组。对于前10个极值。这在大多数情况下有帮助。在MT5中,只有非标准的绑定会受到影响。

我不会为所有21个时间段的可用历史创建一个完整的缓存。采用这种方法,你的计算机内存将不够用。

为了便于理解:一些爱好者在一个图表上显示多达9个MT4的指标。有许多各种货币对的图表同时打开。而且他们都有9份指标。该指标的应用是为普特纽克创建的DML&EWA系统实现的。他自己也输出了多达72个实例的指标。也就是说,在8个货币对上。

当以这种方式使用时,21个TF的额外缓存加上28个缓冲区将使内存的负荷非常大。

这只是考虑到了内存负荷。重新设计一个大的代码来代替iTime, iLow, iHight, iClose, iBarShift函数,这太令人厌烦了。

=================

我已经经历过几次这样的马拉松比赛。

1.一场关于在主程序的主体中包括几个外部人字形指标的马拉松。摆脱了外部指标,以使市场接受该方案。

2.将所有单缓冲区的Z字形转换为双缓冲区的Z字形。这花了大约半年的时间。

3.创建图形界面。总共花了两年多的时间。大约3年。还有更多关于图形界面的有趣想法。但我还没有足够的勇气去实施它们。

4.原本一年前就想从MT4翻译到MT5。我当时没有成功。我现在可以做了。但我对翻译的质量并不满意。

还有其他马拉松赛事。

创建一个缓存可能会导致一个死胡同。捣乱是很危险的......

------------

Artem,你的方法(上面引用的)是完全支持的。

 
同样,这里引用了第一篇文章的内容。

...引自MQL5语言指南。在数据访问组织的标题下。

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

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

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

--------------

问题仍然存在。

该程序的不同部分有几百个对报价历史的访问。该程序清单包含约50 000个字符串。

有时由于访问历史的特殊性,会返回值-1。这样做的后果是一个错误--数组超限。还有其他错误。在程序的一些片段中,我检查了访问历史记录时是否返回-1。当接收-1时,在这种情况下,图形结构的 个别项目不会被画出来。如果我们在代码中增加几百个检查,就会导致由于访问历史的特殊性而已经存在的滞后。

也可以为MT5创建一个程序。但这需要改变整个架构。我没有时间进行这种探索。

我已经决定没有必要做这种无用的工作。该程序在MT4中工作。我不打算转到MT5。我已经为MT5免费提供了ZUP。

我已将ZUP免费用于MT5。 每个人都可以下载它,看看它在MT5上如何工作。而且还与我在MT4上的版本进行了比较。

现在我已经完成了MT5的工作。这只是在浪费时间。

我在其他一些论坛也发过类似的信息。

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

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

该服务描述了如何重现该问题。重现该问题的源代码也在那里。

==========

来自MQL5 文件的文本https://www.mql5.com/ru/docs/series/timeseries_access 。

数据可用性

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

当从mql5-程序中访问价格数据或指标值时,我们应该记住,它不能保证在某一时刻,或从某一时间点提供。这是由于MetaTrader 5不存储mql5-程序所需数据的完整副本,而是直接访问终端数据库,以节省资源。


这段文字被翻译成俄语,意思如下。无论你在任何时候做什么,对数据的访问都可能不可用。

也就是说,没有办法避免由于数据访问的中断而导致的错误。

我是这样理解这段文字的。

Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
  • www.mql5.com
MetaQuotes Language 5 (MQL5) - язык программирования технических индикаторов, торговых роботов и вспомогательных приложений для автоматизации торговли на финансовых рынках. MQL5 является современным языком высокого уровня и разработан MetaQuotes Software Corp. для собственной торгово-информационной платформы. Синтаксис языка максимально близок...