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

 
Eugeni Neumoin:

我已经试图回答这个问题。该数据不可用。

日志就在工具提示中。工具提示的代码已经给出。时间序列已经生成。建立一个具有W1时间序列的图。多斯塔普缺席。iBarShift函数产生了一个错误。在MT4中没有看到同样的错误。

你又一次忽视了展示代码和工作成果的要求。

请提供一个可重复的MQL5代码。

 
Eugeni Neumoin:

Artem,是你删除了我在文章讨论区的帖子吗?我在哪里回应了一个论坛成员的要求?

我只是触及了这个论坛主题中提出的话题。我被这种轻率的态度所激怒。所以我创建了这个论坛主题。

======

我以前在这个论坛上也有过不同意见。你不想在这里讨论。有许多论坛,在那里你可以说很多东西而不需要审查。

早在2005年,一位版主(HQ)在Alpari论坛做了类似的事情。然后几乎整个论坛都从Alpari搬到了Onyx。

不,我没有删除任何东西

 
Vladimir Karputov:

你又一次忽视了展示代码和工作成果的要求。

请提供可重复的MQL5代码。

问题是,该代码有大约50 000行。我不会公开发布。

情况是浮动的。但是...我将尝试创建另一个代码。它也不会小。

而这需要时间。

我希望你已经阅读了我所指的《语言指南》中的链接。Metakvotes公司的人白纸黑字地说,数据访问可以在任何时候终止。

以下是语言手册中的完整引用。

数据可用性。

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

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

所有时间段的价格历史是由HCC格式的通用数据建立的,服务器的任何更新都会导致所有时间段的数据更新和指标重新计算。因此,即使这个数据在刚才还可以使用,也可能被拒绝访问

你也可以用更简单的方法来做。我已经有几个人购买了这个项目。如果我收到他们对这个主题的任何投诉,我将在这里公布他们的信息。并让大家知道,这是语言的开发者规定的:即使这个数据在刚才是可以使用的,也可能被拒绝访问数据

 
Eugeni Neumoin:


与代码一起提供终端设置:图表上的条数

 
Vladimir Karputov:

在提供代码的同时提供终端设置:图表上的条数

条的数量是默认的。大约有10万个。而在上面的例子中,有271家酒吧的访问被拒绝。

 
Eugeni Neumoin:

条数是默认的。大约有10万个。而在上面的例子中,有271家酒吧的访问被拒绝。

当已经在H1上工作时,这是一个可以忽略不计的数量。

所以:可重复的代码,终端设置(图表上的条数)。


没有这个最低限度,就根本没有什么可讨论的--因为到目前为止,它是空气。

 
Eugeni Neumoin:

条数是默认的。大约有10万个。而在上面的例子中,有271家酒吧的访问被拒绝。

每两分钟我们需要从指标中所有使用的时间段和符号中获取数据。

在处理程序OnTimer()中,换句话说--在定时器中,每90秒对所有时间段应用一次,这对指标的工作是必要的。你可以使用任何复制功能。只要在 "中间位置 "获取数据,例如从每个使用的时间框架的第一个或当前的条形图中获取。这将足以保持所有时间段的所有数据都是最新的。

OnCalculate() 的最开始,检查访问所需时间段的数据的函数返回什么。如果它返回-1,那么在下一个tick之前退出。

 
Artyom Trishkin:

每隔两分钟,你应该收到来自指标中所有使用的时间段和符号的数据。

在处理程序OnTimer()中,换句话说--在计时器中,每90秒左右处理一次所有的时间段,这对指标的工作是必要的。你可以使用任何复制功能。只需获得 "无处 "的数据,例如从每个使用的时间段的第一个或当前条形图中获得。这将足以保持所有时间段的所有数据都是最新的。

在OnCalculate()的最开始,检查该函数返回的内容,该函数访问了所需时间段的数据。如果是-1,那么在下一个tick之前退出。

OnCalculate()没有问题。整个GUI通过OnChartEvent()工作。在GUI中,有400多个按钮。一些按钮不以任何方式与时间序列互动。函数OnCalculate()和OnTrade()可以等待到下一个tick。这在心理上是不容易察觉的。而用OnChartEvent()则更为复杂。这里涉及到人类心理学。程序用户按下GUI按钮。而heshe并没有得到他/她想要的回应。他/她的反应是什么?其中一个反应是,他/她第二次按下了同一个按钮。我把它做成这样,在许多按钮上再按一下,就会关闭该按钮所连接的功能。我期待着你的建议,以其他方式使按钮的动作失效。但是有同样的程序用于MT4。它在那里正常工作。 结果会发现,MT4有一种与图形界面互动的算法,而MT5有一种不同的算法。同一程序的这种行为只会引起拒绝。

我在翻译成MT5时做了类似的事情--我启用了OnChartEvent()的退出功能。我不想撒谎,这就是为什么GUI刚刚死亡的原因。

而在我的案例中,OnTimer()中对时间序列的引用发生在5分钟之后。2分钟后我就会动手。我将检查会发生什么。

Artem,你的建议以前也很有用。

 
Vladimir Karputov:

当已经在H1上工作时,这是一个可以忽略不计的条数。

所以:可重复的代码,终端设置(图表上的条数)。


没有这个最低限度,就根本没有什么可讨论的--因为到目前为止,它是空气。

请不要进一步干涉我在论坛上提出的问题。

与你的沟通在以前和现在都没有任何作用。

你可以在论坛的其他分支写一些东西。而在我的分支机构中,请不要参与。

 
Artyom Trishkin:

我已经让所有的时间框架每两分钟访问一次。在OnCalculate() 中检查对时间框架的访问,似乎不会给程序操作带来困难

但在OnChartEvent() 中检查会影响操作在某些情况下,GUI拒绝工作。

我将观察当所有的tf每两分钟被访问一次时,程序如何工作。

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

顺便说一下,我发现MT5和MT4之间还有一个区别。

通过图形界面对图形工具的 绑定,是按照人字形极值的数字或波浪标记的符号进行的。

当程序 "看到 "这个数字或符号时,就会发生绑定。让我解释一下这句话的意思。当你把鼠标悬停在一个数字或符号上时,会出现一个工具提示。

如果出现工具提示,那么程序就会 "看到 "这个数字或符号。如果没有工具提示,数字或符号仍然是不可见的。图形化的工具没有被附上。因此,图表工具没有显示在图表上。

例如,如果安德鲁斯的Pitchfork已经与这个数字或符号绑定(我没有用其他图形工具检查),工具提示会出现在MT4中。但在MT5中,工具提示很少出现。但如果我隐藏了与给定数字相联系的安德鲁斯的Pitchfork,工具提示就会正常显示。

我感觉,如果数字附近有一些其他图形对象,MT5在显示工具提示时就会不那么敏感。但我不排除发生这种情况是因为MT5要进行一些额外的时间序列更新,而这些更新在MT4中是没有的。这些额外的更新可能会导致一些MT5功能的延迟。(这是我的幻想。我不知道MT5的内部运作情况)。

Использование аналитических объектов - Графики котировок, технический и фундаментальный анализ - MetaTrader 5
Использование аналитических объектов - Графики котировок, технический и фундаментальный анализ - MetaTrader 5
  • www.metatrader5.com
Определение трендов, построение каналов, выявление циклов и уровней поддержки/сопротивления — все эти и многие другие задачи решаются при помощи аналитических объектов. Всего в торговой платформе доступно 46 таких инструментов. Среди них имеются геометрические фигуры, различные каналы, инструменты Ганна, Фибоначчи, Эллиотта и многое другое. В...