文章 "MQL5 细则手册:指标子窗口控件 - 按钮" - 页 5

 
tol64:

你现在同意了吗?)

老实说,我不明白为什么在禁用智能交易系统后指标要停止跟踪鼠标移动?指标和智能交易系统之间的联系在哪里?
 
C-4:
老实说,我不明白为什么在禁用智能交易系统后,指标要停止跟踪鼠标移动?指标和智能交易系统之间的联系在哪里?

这就是问题所在,它们之间可能没有联系,所以每个程序在卸载时都必须禁用其他程序可能不需要的东西。 在这种情况下,如果指标不需要跟踪鼠标移动事件,为什么要堵塞事件队列的流程呢?

当然,你可以不这么做,因为没有必要。但如果说到优化,我认为这是必要的。

 
tol64:

在这种情况下,如果指示器不需要跟踪鼠标移动事件,为什么要堵塞事件队列的流程呢?

当然,你可以不这么做,因为没有必要。但如果说到优化,我认为这是必要的。

瓦西里说的是,程序不应该无意识地启用/禁用跟踪功能,而应该:

  • 只有在禁用的情况下才将其打开(这并不重要)
  • 工作完成后恢复到原来的状态(跟踪)。

也就是说,只有在程序启动时已禁用跟踪功能的情况下,才应禁用跟踪功能。

这样,启动/停止程序的任何组合(包括/不包括鼠标事件跟踪)都能正常运行。

 
tol64:

在这种情况下,如果指示器不需要跟踪鼠标移动事件,为什么要堵塞事件队列的流程呢?

当然,你可以不这么做,因为没有必要。但如果从优化的角度来说,我认为这是必要的。

啊哈,也就是说,在您的示例中,EA决定指标不再需要接收EVENT_MOVE_MOUSE事件,并在退出前禁用了该事件。那么,Expert Advisor 是根据什么来决定其他指标需要什么、不需要什么的呢?他自己是不是太自作主张了?
 
komposter:

Vasily 说得很有道理,程序不应该无意识地启用/禁用跟踪功能,而是应该:

  • 只有当跟踪功能被禁用时才启用它(这一点并不重要)
  • 工作完成后,恢复到原来的状态(跟踪)。
也就是说,只有在程序启动时已禁用跟踪功能的情况下,才能禁用跟踪功能。

所以我是这样做的。

程序启动时启用了跟踪功能,卸载时则将其禁用。而留在图表上并需要跟踪的程序会检查是否启用了跟踪,如果未启用,则会启用。

最好对我上一页文章中的 智能交易系统(Expert Advisor)和指标代码示例进行修改,以 避免语句含糊不清。

 
C-4:
啊哈,也就是说,在您的示例中,Expert Advisor 认为该指标不再需要接收 EVENT_MOVE_MOUSE 事件,并在退出前禁用了该指标。Expert Advisor 凭什么决定其他指标需要什么,不需要什么?他自己不会承担太多吗?

专家自己决定。但实际上,我更喜欢您的变体。也就是说,它更正确。我写的不是如何做得更好,而是它的必要性。 你不必翻转它。句号。

 
tol64:
专家自己决定。但实际上,我更喜欢你的方案。我说的不是最好的方法,而是必要性。 你不需要翻转它。句号。
因此,如果没有人会关闭这个事件,就没有必要每秒钟都检查它是否打开。在一个智能交易系统中,您需要专门禁用该事件,而在另一个智能交易系统中,您需要每秒监控其属性,而不写任何东西会更简单、更安全。
 
C-4:
啊哈,也就是说,在您的示例中,Expert Advisor 认为该指标不再需要接收 EVENT_MOVE_MOUSE 事件,并在退出前禁用了该指标。Expert Advisor 凭什么决定其他指标需要什么,不需要什么?它自己不会承担太多吗?

我们可能认为,所有其他程序都是按照同样的原则安排的,它们会在必要时自行打开。

但关闭有那么重要吗?这个开关只适用于一个图表。我认为,如果只打开而不关闭,也没什么大不了的。

很少有人会这样做。所以,为了避免出现问题,只开不关就可以了。不过,也有人会把它关掉。因此,您可以使用定时器进行监控,必要时开启,但不要关闭。

 
C-4:
所以,如果没有人会关掉这个活动......
那就无从知晓了
 
C-4:
因此,如果没有人会禁用该事件,就没有必要每秒钟都检查它是否启用。在一个智能交易系统中,您需要专门禁用该事件,而在另一个智能交易系统中,您需要每秒监控其属性,而不写任何东西会更简单、更安全。

不一定是每秒,在另一个事件中还有另一种选择(已经讨论过)。请举一个更好的例子,说明我在这里是 怎么做的。) Expert Advisor 需要这个事件,而指标不需要。这样会更清楚。

附注 :更正。我犯了一个错误。))您的变体并不更正确。完全不合适。所以最好根据上述条件举个例子。