初学者的问题 MQL5 MT5 MetaTrader 5 - 页 623

 
-Aleks-:
不,我需要的不是在测试器中,而是当终端真正在图表上运行时--只有当历史记录包含的条数 少于最大条数 时,它才会在那里工作,还是我错了?

而在指标运行时,实时的rate_total和Bars()会增加。你将无法在OnInit()中获得rate_total,因为该参数没有被传递给该函数。你必须在任何情况下在OnCalculate()中检查历史。

 
大家好!请帮助我找到一个专家顾问。我需要一个具有设置会话时间、分成每个方向的三个订单、追踪和止损 功能的盒子(箱)。我已经淹没在空地上的搜索中了。我几乎在悬崖边上,只要再过一段时间,我就会开始学习语言和编辑,自己写!!!!。帮助!!!。
 
Alexey Kozitsyn:

而在实时的rate_total和Bars()将在指标运行时被递增。你将无法在OnInit()中获得rate_total,因为该参数没有被传递给该函数。在任何情况下都应该在OnCalculate()中检查历史记录。

换句话说,我们应该创建一个指标,在那里我们检查条数,如果一切正常,那么就用一个条数 填充图表缓冲区,然后在EA中等待,直到我们从指标中得到一个条数,然后才继续工作,对吗?
 
-Aleks-:
也就是说,我们必须做一个单独的指标,在那里我们检查条数,如果一切正常,那么就用一个条数 填充图表缓冲区,然后在EA中等待,直到我们从指标中得到一个条数,然后才继续工作,对吗?
当然不是...为什么会如此复杂...让我们再看一遍。目标是什么?为了获得可用于计算的全部历史?
 
Alexey Kozitsyn:
当然不是...为什么要把它变得如此复杂...让我们再做一次。目标是什么?为了获得所有可用于计算的历史?

情况是,为了使EA正常工作,它需要计算一次历史数据。因此,当你用这个EA打开终端时,会有历史记录,并相应地进行初始化和计算,但这个历史记录可能不是全部,在连接到终端后会加载一个新的历史记录。

我认为,我们可以跟踪与终端的连接,然后,如果它是可用的,检查HLCO中最后一个条形的变化,如果它是可用的,我们就等待,如果它在x秒内不可用,我们就进行计算。

 
-Aleks-:

现在的情况是,为了使EA正常工作,它需要计算一次历史数据。因此,当你用这个EA打开终端时,会有历史记录,并相应地对其进行初始化和计算,但这个历史记录可能不是全部,在连接到终端后将加载一个新的历史记录。

我认为,我们可以跟踪与终端的连接,然后,如果它是可用的,通过HLCO检查最后一栏的变化,如果它是可用的,我们就等待,但如果它在x秒内不可用,我们就进行计算。

专家顾问是否使用任何自定义指标?

例如,你可以做以下事情:你通过Bars()检查历史记录的大小。然后看Bars()是否>prev_bars+1(前一个tick上的历史大小)--然后你重置所有保存的数据,并从零开始对专家顾问进行完整的重新计算。这个结构应该首先插入OnTick()中。

不需要为与终端的连接、停顿等问题而烦恼。最简单的选择往往是最好的。

 
Alexey Kozitsyn:

专家顾问是否使用任何自定义指标?

例如,你可以这样做:通过Bars()检查历史记录的大小。然后看Bars()是否>prev_bars+1(前一个tick上的历史大小)--然后你重置所有保存的数据,并从零开始对专家顾问进行全面的重新计算。这个结构应该首先插入OnTick()中。

不需要为与终端的连接、停顿等问题而烦恼。最简单的变体往往是最好的。

专家顾问使用了很多东西,包括指标。

我的理解是,建议的变体将在每个条形上重新计算,还是我错了?

 
-Aleks-:

专家顾问使用了很多东西,包括指标。

我的理解是,这个变体将在每个柱子上重新计算,还是我错了?

不,为什么在每一个酒吧?只有在历史上增加了1个以上的柱状物时,专家顾问才会被完全重新计算!如果增加了1个柱子(形成了一个新的柱子),将不会进行完整的重新计算。

如果你使用指标,并且它们有全局变量,那么当你第一次运行它们时,它们必须被归零。否则,图表上可能出现假象/指标可能显示不正确。

 
Alexey Kozitsyn:

不,为什么是在每个人身上?只有在故事中增加了1个以上的柱子时,才会对EA进行全面的重新计算!如果增加了1个柱子(形成了一个新的柱子),将不会完全重新计算。

如果你使用指标,并且它们有全局变量,那么当你第一次运行它们时,它们必须被归零。否则,图表上可能出现假象/指标可能显示不正确。

没有注意到+1 ,谢谢,我认为这不是一个坏的选择。
 
你能告诉我为什么会发生这种情况吗?

双A。
int x, y;

x=100;y=3;A=x/y=33,000