帆布很酷! - 页 81

 
Dmitry Fedoseev 。

问题的解决方案就在EA中:

也许不需要 ObjectFind()。

如果您附上了问题代码,问题昨天就已经解决了

这根本不是问题所在。
这个问题(OnChartEvent 冻结 只存在于 MT4 中,而且根本不明显。我自己也被折磨了很长时间。但这个问题一年前就已经在这个主题中讨论过了。

 
Nikolai Semko #:

这根本不是问题所在。
这个问题只存在于 MT4 中,而且一点也不明显。我自己也被折磨了很久。但这个问题一年前已经在这个主题中讨论过了。

我根本不知道问题出在哪里,我只是写了问题的起因和解决方法。但你可以继续受苦......

 
Dmitry Fedoseev #:

我根本不知道问题出在哪里,我只是写了问题的起因和解决方法。 但你可以继续受苦。

这些话应该刻在石头上!:))
 
Dmitry Fedoseev #:

我根本不知道问题出在哪里,我只是写了问题的起因和解决方法。但你可以继续受苦。

deunit 问题与此无关。这个问题只出现在 MT5 中。在这里我们谈论的是 MT4。

 
Nikolai Semko #:

你真是个奇怪的人。
在提问时,你自己希望别人理解你的代码和几百行代码,但你甚至不试图深入到答案中去,去看那几百行代码。

好吧。我会让生活更轻松。
将所有代码从 OnChartEvent 转换为 OnTimer。将计时器设置为 30 毫秒。您只需输入全局变量(非终端变量),这些变量应在OnChartEvent 中 更新,并在OnTimer 中重置(这些变量为 bool)
变量可
如下所示

对我来说,这一点也不明显。我从前面给出的链接中了解到,这个问题是个老问题,即使在市场上拥有 10 000+ 销售量的作者也不止一次寻求过它的解决方案。

这适用于所有带对象的 MT4 智能交易系统,这意味着大量用户都遇到过这个问题。他们写信给市场上的作者,却不知道解决办法。这就是为什么解决这个问题如此重要。

看着 GIF(可行性证明),我决心在我的产品中采用这种方法。我可能会坐下来做实验,明天再向大家汇报。
 
Vitaliy Kuznetsov #:

对我来说,这一点并不明显。从我之前提供的链接中,我了解到这个问题由来已久,即使是在市场上拥有 10 000+ 销售量的作者也不止一次地寻求解决办法。

这适用于所有带对象的 MT4 智能交易系统,这意味着大量用户都遇到过这个问题。他们写信给市场上的作者,却不知道解决办法。这就是为什么解决这个问题如此重要。

看着 GIF,我决心在我的产品中采用这种方法。我可能会坐下来做实验,明天再向大家汇报。

也许在 Expert Advisor 中也能做到这一点。
但它工作起来没有滞后。

 
Nikolai Semko #:

也许在 EA 中也能做到这一点。
但它工作起来没有滞后。

首先,谢谢您!

嗯,在给定的代码中似乎可以工作。但仍然与 EA 冲突。例如,与https://www.mql5.com/ru/code/35440 这一个。

我还检查了其他 EA。我应该尝试改进 EA 的代码。问题仍然存在。
cm partial closing position
cm partial closing position
  • www.mql5.com
Советник закрывает позиции частями и переводит их в безубыток.
 
Vitaliy Kuznetsov #:

首先,谢谢你!

嗯,在给定的代码中似乎是可行的。但仍然与 EA 冲突。例如,与https://www.mql5.com/ru/code/35440 这一个。

我还检查了其他 EA。我应该尝试改进 EA 的代码。这仍然是个问题。


是的,您也应该调整 EA 中的代码,以便在OnChartEvent 中不进行计算。
规则很简单:
- 事件和坐标的全局变量(非终端)应填入 OnChartEvent 中,但不要在其中运行带有 繁琐 计算的 函数
- 所有此类函数的调用都应根据事件变量在定时器中完成,
- 在处理完事件后,应记得在定时器中重置这些事件,这样在定时器的下一次迭代中就不会再次运行相同的功能。

我再说一遍--这是一个 仅在 MT4

中出现的 OnChartEvent 冻结错误。 如果其中有大约 10 毫秒的计算,就会冻结),并在计时器的帮助下轻松解决,那么很多人在重新编译他们的指标或智能交易系统(其中频繁使用OnChartEvent)后就会发现一切都恢复正常了:)))
或者这是一个人为的错误,目的是让人们转用 MT5 ;))))

 
Nikolai Semko #:


是的,您还应该调整 EA 中的代码,以便在OnChartEvent 中 不进行计算。
规则很简单:
- 事件和坐标的全局变量(非终端)应填入 OnChartEvent 中,但不要在其中运行带有 繁琐 计算的 函数
- 所有此类函数的调用都应根据事件变量在定时器中完成,
- 在处理完事件后,应记得在定时器中重置这些事件,这样在定时器的下一次迭代中就不会再次运行相同的功能。

我再说一遍--这是一个 仅在 MT4

中出现的 OnChartEvent 冻结错误。 如果其中有大约 10 毫秒的计算,就会冻结),并在计时器的帮助下轻松解决,那么很多人在重新编译他们的指标或智能交易系统(其中频繁使用OnChartEvent)后就会发现一切都恢复正常了:)))
或者这是一个人为的错误,目的是让人们转用 MT5 ;))))

事实证明,普通指标代码改进方法无法解决与封闭代码中使用对象的 EA 的冲突。

我希望改进 EA 可以全面解决与所有仪表盘指标的冲突(这是我的任务)。

我在 MT4 build 1353 线程中写过,也许终端程序员会注意到。

附注:我对猫头鹰和滑雪板做了一些更改......

 
Vitaliy Kuznetsov #:


附:编辑的猫头鹰和滑雪板没有去....

您确定OnChartEvent 没有循环和调用其他函数 的内容 吗?
使用 GetMicrosecondCount() 测量 OnTimer(或OnChartEvent 中发生的计算时间。