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

 
Andrey Khatimlianskii:

建议是用计时器每隔一分半钟做一次。不是在每个刻度 之前,当然也不是在图表事件中。

在MT5中获取时间序列确实不理想。但如果你需要解决一个问题,而不是找一个借口,那么就有可能。

没有人在寻找一个借口。你不知道任务的困难程度。这就是为什么你这么容易谈论一个借口。

有人建议每2分钟用计时器更新一次。这就是我所做的。

但是...这还不够。即使在这个定时器更新之后,当通过GUI在图表上创建一个事件时,经常发生调用iBarShift给出-1的情况。这就导致了在数组边界之外的退出或其他错误。所以我试着在进入OnChartEvent之前对时间序列做一个可访问性检查。为了更好地理解,我要说,我们需要检查对所有21个时间序列的访问。如果至少有一个时间序列是不可访问的,那么几乎100%的可能性是,在制作图形图的时候会出现某种错误。

该程序很复杂,大约有50,000行。在这样一个卷上,有许多不同的时间序列访问。

滞后一直在发生(在MT5变体中)。它在MT4中像时钟一样工作。

MT5对我来说不感兴趣。我不在交易中使用它。我只使用MT4。我是应用户要求才开始翻译该程序的。 当我面对这样的痛苦时,我决定还是做有意义的事。

在该计划发展的14年里,出现了一些有趣的想法。我现在正在实施这些想法。

 
Eugeni Neumoin:

有人建议,它应该每2分钟用计时器更新一次。这就是我所做的。

但是。这还不够。即使在这个定时器更新之后,当通过GUI在图表上创建一个事件时,经常会发现调用iBarShift的结果是-1。

iBarShift 的精确性是不是真的?

我在同步方面也遇到了困难,即使是在定时更新之后。但我无法重现它,具有讽刺意味的是,这个问题是浮动的。


Eugeni Neumoin:

我对MT5不感兴趣。我不在交易中使用它。只有MT4。我是应用户要求才开始翻译该程序的。当我面对这样的痛苦时,我决定最好用我感兴趣的东西来工作。

在该计划发展的14年里,出现了一些有趣的想法。我现在正在实施这些想法。

我并不主张使用MT5。我只是一下子注意到,你并没有很大的愿望去了解它)。

当然,最好是做有意义的事!

 
Eugeni Neumoin:

没有人在寻找一个借口。你不知道任务的困难程度。这就是为什么你这么容易谈论借口的原因。

建议是每2分钟在一个计时器上更新。这就是我所做的。

但是...这还不够。即使在这个定时器更新之后,当通过GUI在图表上创建一个事件时,经常发生调用iBarShift给出-1的情况。这就导致了在数组边界之外的退出或其他错误。所以我试着在进入OnChartEvent之前对时间序列做一个可访问性检查。为了更好地理解,我要说,我们需要检查对所有21个时间序列的访问。如果至少有一个时间序列是不可访问的,那么几乎100%的可能性是,在制作图形图的时候会出现某种错误。

该程序很复杂,大约有50,000行。在这样一个卷上,有许多不同的时间序列访问。

滞后一直在发生(在MT5变体中)。它在MT4中像时钟一样工作。

MT5对我来说不感兴趣。我不在交易中使用它。我只使用MT4。我是应用户要求才开始翻译该程序的。 当我面对这样的痛苦时,我决定还是做有意义的事。

在该计划发展的14年里,出现了一些有趣的想法。我现在正在实施这些想法。

缓存时间序列。
 
Artyom Trishkin:
缓存你的时间序列。

你是什么意思?手动制作你自己的缓存?

 
Andrey Khatimlianskii:

你是什么意思?手动制作你自己的缓存?

一旦你计算所有的时间序列,然后只能增加更多。这可以在一个窗口中完成。
是的,进入他们自己的数组。你可以用SB来做。时间序列类是你自己的。
 
Andrey Khatimlianskii:

iBarShift的准确值是否刚好是真的?

确实如此。我需要知道确切的条数。

 
Artyom Trishkin:
将所有的时间序列计算一次,然后只添加更多。你可以在窗口做。

所以你建议不要使用缓冲区,而是用你自己的数组工作?

那么缓冲区是用来做什么的?

所以你建议自己做一个拐杖,而不是缓冲器 :(

并代替iTime、iLow等制作你自己的功能...以自己的方式重写一切,绕过MT5中不工作的功能...

这是很激烈的。但让热心人去做吧。我就站在一边。我甚至不会看这个过程。

 
Eugeni Neumoin:

所以你建议不要使用缓冲区,而是用你自己的数组工作?

请看一下SB的情况。那里有一个带指标的工作。如果你不想自己制作。一般来说,你必须创建一个类一次,然后将其用于任何文本信息。而且,这些数据将始终可用。只是你要不分青红皂白地添加新的。
 
Eugeni Neumoin:

所以你建议不使用缓冲区,而是用你的数组工作?

那么缓冲区是用来做什么的?

所以你建议自己做一个拐杖,而不是缓冲器 :(

并代替iTime、iLow等制作你自己的功能...用他们自己的方式重写一切,绕过MT5中不工作的功能,...

那里的一切都很好。但有时访问被拒绝。也许是因为时间序列的更新--我不知道。如果它拒绝了,你必须重复请求,因为第一次请求激活了数据交换。
 
Eugeni Neumoin:

确实如此。我需要知道确切的条数。

那么在逻辑上也许有一个错误。可能没有一个酒吧。