mql5语言的特点、微妙之处以及技巧 - 页 204 1...197198199200201202203204205206207208209210211...247 新评论 fxsaber 2021.06.30 14:55 #2031 Andrey Khatimlianskii:没有人保证其他事件处理程序会被打断(或不运行)。在警报之后,deinit和init都会发生,对吗? 是的,正在进行彻底的重启。只是计时器(即使是第二个)被扑倒了--这是一个特点,不是一个错误。 fxsaber 2021.06.30 15:19 #2032 fxsaber:这个顾问在账户之间切换时发出警报。根据规则,它似乎不应该这样做然而,这是因为计时器的原因而发生的。 这种特殊性可以用来解决配方简单,但实施复杂的 问题。 // Если произошла смена счета, советник выгружается. const bool Init = EventSetMillisecondTimer(1); void OnTimer() { static const long Account = AccountInfoInteger(ACCOUNT_LOGIN); if (Account != AccountInfoInteger(ACCOUNT_LOGIN)) ExpertRemove(); } Andrey Khatimlianskii 2021.06.30 15:43 #2033 fxsaber:这一特点可用于解决配方简单但实施复杂的 问题。 为什么我们不能在每个On-function的输入处检查账户变化? 为什么要有一个毫秒级的计时器?如果在运行期间发生重新登录,它无论如何也不会中断程序的执行。 fxsaber 2021.06.30 15:45 #2034 Andrey Khatimlianskii:为什么你不能在每个On-function的输入处检查帐户的变化?为什么要有一个毫秒级的计时器?如果在运行过程中发生了重新登录,它无论如何不会中断程序的执行。 试试吧。在上面的链接中,有一个关于这个话题的长篇讨论。 Artyom Trishkin 2021.06.30 17:57 #2035 fxsaber:是的,正在进行彻底的重启。只是计时器(甚至是第二个计时器)会被撞坏--这是一个特点,不是一个错误。 在ExpertRemove()命令之后,停止标志被简单地提高,EA继续工作直到下一个tick。在一个新的刻度线上,当停止标志升起时,EA将被卸载。这意味着,在新的勾选到来之前,所有的开机功能都继续在正常模式下工作。 相应地,如果我们不能以编程方式获得这个标志的状态(我还没有专门找过这个功能),那么我们就需要有一个全局定制的标志。我们在ExpertRemove()命令前设置我们自己的标志,并在每个On-function中检查它。如果旗帜被设定,我们将离开。那么定时器将不会执行写在里面的代码。 或者,也许我搞错了,问题是不同的? fxsaber 2021.06.30 18:15 #2036 Artyom Trishkin:在ExpertRemove()命令之后,停止标志被简单地设置,EA继续工作直到下一个tick。在一个新的刻度线上,如果停止标志被设置,EA将被卸载。这意味着,在新的勾选到来之前,所有的开机功能都继续在正常模式下工作。相应地,如果我们不能以编程方式获得这个标志的状态(我还没有专门找过这个功能),那么我们就需要有一个全局定制的标志。我们在ExpertRemove()命令前设置我们自己的标志,并在每个On-function中检查它。如果该标志被设置,我们就离开。那么定时器将不会执行写在里面的代码。或者是我弄错了,问题是不同的? 我不知道你所描述的是什么问题。 Alexey Viktorov 2021.06.30 18:43 #2037 Artyom Trishkin:在ExpertRemove()命令之后,停止标志被简单地设置,EA继续工作直到下一个tick。如果在一个新的tick 上提出停止标志,EA就会被卸载。这意味着,在新的勾选到来之前,所有的开机功能都继续在正常模式下工作。相应地,如果我们不能以编程方式获得这个标志的状态(我还没有专门找过这个功能),那么我们就需要有一个全局定制的标志。我们在ExpertRemove()命令前设置我们自己的标志,并在每个On-function中检查它。如果旗帜被设定,我们将离开。那么定时器将不会执行写在里面的代码。或者是我弄错了,问题是不同的? 不是在新的蜱虫上,而是在下一次返回时。 把ExpertRemove()放在OnInit()中,并在调试中一步步地检查。 Artyom Trishkin 2021.06.30 19:13 #2038 Alexey Viktorov:不是在新的蜱虫上,而是在下一次返回时。把ExpertRemove()放在OnInit()中,在调试中逐步检查。 是的,我的错误。任何下一个事件将不会被执行。我已经很久没有在帮助中寻找我不需要的功能了 :) Artyom Trishkin 2021.06.30 19:14 #2039 fxsaber:我不知道你所描述的是什么问题。 答案的含义并不清楚。这并不重要。 fxsaber 2021.06.30 19:34 #2040 Artyom Trishkin:答案的含义并不清楚。 ExpertRemove没有被调用。 1...197198199200201202203204205206207208209210211...247 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
没有人保证其他事件处理程序会被打断(或不运行)。
在警报之后,deinit和init都会发生,对吗?
是的,正在进行彻底的重启。只是计时器(即使是第二个)被扑倒了--这是一个特点,不是一个错误。
这个顾问在账户之间切换时发出警报。根据规则,它似乎不应该这样做
这种特殊性可以用来解决配方简单,但实施复杂的 问题。
这一特点可用于解决配方简单但实施复杂的 问题。
为什么我们不能在每个On-function的输入处检查账户变化?
为什么要有一个毫秒级的计时器?如果在运行期间发生重新登录,它无论如何也不会中断程序的执行。
为什么你不能在每个On-function的输入处检查帐户的变化?
为什么要有一个毫秒级的计时器?如果在运行过程中发生了重新登录,它无论如何不会中断程序的执行。
试试吧。在上面的链接中,有一个关于这个话题的长篇讨论。
是的,正在进行彻底的重启。只是计时器(甚至是第二个计时器)会被撞坏--这是一个特点,不是一个错误。
在ExpertRemove()命令之后,停止标志被简单地提高,EA继续工作直到下一个tick。在一个新的刻度线上,当停止标志升起时,EA将被卸载。这意味着,在新的勾选到来之前,所有的开机功能都继续在正常模式下工作。
相应地,如果我们不能以编程方式获得这个标志的状态(我还没有专门找过这个功能),那么我们就需要有一个全局定制的标志。我们在ExpertRemove()命令前设置我们自己的标志,并在每个On-function中检查它。如果旗帜被设定,我们将离开。那么定时器将不会执行写在里面的代码。
或者,也许我搞错了,问题是不同的?
在ExpertRemove()命令之后,停止标志被简单地设置,EA继续工作直到下一个tick。在一个新的刻度线上,如果停止标志被设置,EA将被卸载。这意味着,在新的勾选到来之前,所有的开机功能都继续在正常模式下工作。
相应地,如果我们不能以编程方式获得这个标志的状态(我还没有专门找过这个功能),那么我们就需要有一个全局定制的标志。我们在ExpertRemove()命令前设置我们自己的标志,并在每个On-function中检查它。如果该标志被设置,我们就离开。那么定时器将不会执行写在里面的代码。
或者是我弄错了,问题是不同的?
我不知道你所描述的是什么问题。
在ExpertRemove()命令之后,停止标志被简单地设置,EA继续工作直到下一个tick。如果在一个新的tick 上提出停止标志,EA就会被卸载。这意味着,在新的勾选到来之前,所有的开机功能都继续在正常模式下工作。
相应地,如果我们不能以编程方式获得这个标志的状态(我还没有专门找过这个功能),那么我们就需要有一个全局定制的标志。我们在ExpertRemove()命令前设置我们自己的标志,并在每个On-function中检查它。如果旗帜被设定,我们将离开。那么定时器将不会执行写在里面的代码。
或者是我弄错了,问题是不同的?
不是在新的蜱虫上,而是在下一次返回时。
把ExpertRemove()放在OnInit()中,并在调试中一步步地检查。
不是在新的蜱虫上,而是在下一次返回时。
把ExpertRemove()放在OnInit()中,在调试中逐步检查。
是的,我的错误。任何下一个事件将不会被执行。我已经很久没有在帮助中寻找我不需要的功能了 :)
我不知道你所描述的是什么问题。
答案的含义并不清楚。这并不重要。
答案的含义并不清楚。
ExpertRemove没有被调用。