точнее в очередностях OnInit удалении своих объектов чарта. Тут ремонт терминала не имеет смысла не создавайте объектов по крайней мере до первого OnChartEvent. И удалять объекты пачкой лучше по ChartObjectsDelete
if(sparam=="Win_Ea_"){ // вот тут надо поцивильней сделать, из класса брать имя... но уж сами как-нибудь if(id == CHARTEVENT_OBJECT_CLICK){
if(win.BtnClickUP()){
win.Process();
ChartPeriodSet(true);
}
if(win.BtnClickDN()){
win.Process();
ChartPeriodSet(false);
}
}
}
if(id == CHARTEVENT_MOUSE_MOVE){
MouseX=(int)lparam;
MouseY=(int)dparam;
}
事实证明,通常的指标代码改进方法无法全面解决与封闭代码中使用对象的 EA 之间的冲突。
我希望通过改进智能交易系统能全面解决与所有仪表盘指标的冲突(这是我的任务)。
我在 MT4 build 1353 主题中写道,也许终端程序员会注意到这一点。
附注:我在猫头鹰中做了一些更改,但有些滑雪板没有去...
查看整个代码(指标和智能交易系统),找出调用 ObjectGetXXX、ObjectFind、ObjectsTotal、ObjectName 等的位置和原因 - 它们是同步的,会严重降低运行速度。如果可能,尽量去掉它们。
不要忘记调用上面的 ChartRedraw()!!!!...
各位版主,我被说成是一派胡言,却不允许我回应?太神奇了
查看整个代码(指标和 EA),找出调用 ObjectGetXXX、ObjectFind、ObjectsTotal、ObjectName 等的位置和原因 - 它们是同步的,会严重降低运行速度。如果可能的话,尽量去掉它们。
不要忘记调用上面的 ChartRedraw()!!!!...
您只需要明智地调用 OnChartEvent(),而不是连续对所有事件做出反应。否则我就不知道那里有什么了...为什么要坐在这里替那个连问题代码都不愿意展示的人思考呢?
现在,我插入了一个重复 1000000 次 ObjectFind() 和 ObjectGet() 的循环 - 一切正常。
各位版主,我被说成是一派胡言,却不允许我回应?太神奇了
你不是唯一一个受到这种选择性对待的人。
您只需明智地使用 OnChartEvent(),而不是连续对所有事件做出反应。或者我不知道这是什么....。为什么要坐在这里替一个连代码都懒得显示的人思考问题呢?
现在,我插入了一个重复 1000000 次 ObjectFind() 和 ObjectGet() 的循环 - 一切正常。
好吧,我写第四次,这对我来说并不难。
https://www.mql5.com/ru/forum/379526/page9#comment_25865481
如果您打开链接,会在帖子底部发现一个包含代码的附件。然后,您就可以阅读帖子,了解讨论是由谁以及如何展开的。
问题并不特别出在提议的代码中(您可以自己编写任何带有对象的智能交易系统),而是出在一个全局错误上,该错误会影响所有带有对象的智能交易系统(只有一个例外),即在通过指标使用图表切换功能时。
Nikolay 提供了他的解决方案,但我在编写此类代码时出现了错误,因此我正在进一步处理这个问题。
您只需明智地使用 OnChartEvent(),而不是连续对所有事件做出反应。或者我不知道这是什么....。为什么要坐在这里替一个连代码都懒得显示的人思考问题呢?
现在,我插入了一个重复 1000000 次 ObjectFind() 和 ObjectGet() 的循环- 一切正常。
我有一个模糊的疑问:你写过比循环更复杂的东西吗?
好吧,我写第四次,对我来说没问题。
https://www.mql5.com/ru/forum/379526/page9#comment_25865481
如果您打开链接,会在帖子底部发现一个带有代码的附件。然后,您就可以阅读帖子的内容、作者以及讨论是如何展开的。
问题并不特别出在提议的代码中(您可以自己编写任何带有对象的智能交易系统),而是出在一个全局错误中,当通过指标使用图表切换功能时,这个错误会影响所有带有对象的智能交易系统(只有一个例外)。
Nikolay 提供了他的解决方案,但我在编写此类代码时出现了错误,因此我正在进一步处理这个问题。
改动如下:
我成功摆脱了糟糕的挂起现象。如果你以有节奏的速度按下按钮,一切都会好起来。
但如果你开始像啄木鸟一样敲击,就会再次出现挂起,只是挂起的时间不同而且更短。我不认为
你无法摆脱它们。也许这与时间框架结构有关。
我需要在按钮上下功夫,使按钮有按下/未按下的位置,并引入惯性,使按钮不会立即被按下。
延迟 0.1 秒就可以解决这个问题,用户也不会注意到。
--
事实上,如果没有专家,您可以以极快的速度敲击按钮....。
现在,我已经完全摆脱了悬挂。
虽然可能有点歪,但重点是最重要的:
重点是切换图表时不要删除对象。
我们应该看看 Destroy() 时会发生什么...如果可以这样做的话...
大家好!)
很抱歉,如果我们谈论的是 mq4,那么也许可以这样解决:?)
否则就会造成刹车失灵:
为什么?