mql5语言的特点、微妙之处以及技巧 - 页 177

 
Andrey Barinov:

我知道,在改变之后,你必须卸载到init(或更好的ontik)。即在全局变量 中记忆账号,并在发生变化时卸载。你也可以尝试在init()和unload中分析_DeInitReason。

这个解决方案已经显示出来了。 它只有在账户变更后存在相同的符号时才有效。

 
fxsaber:

请在此展示一个在账户变化时自我卸载的EA的源代码。

我需要它吗?你在这里谈论的是不同符号名称的问题。

关于交易、自动交易系统和策略测试的论坛

mql5的特殊性,技巧和窍门

fxsaber, 2020.05.20 23:09

我有一个非常好的专家顾问,在账户切换时应该被删除。

假设专家顾问是在欧元兑美元上运行。它将切换到一个符号有前缀的服务器。例如,EURUSD.abc。

在这种情况下,EA仍然挂起,不能自我删除。有没有人有办法解决这个问题?


这正是我的答案。如果仪器名称在不同的账户中是不同的,使用字符串处理函数,提取该字符串的正确部分。
 
Igor Zakharov:

在什么情况下,OnInit()没有启动?

没有任何东西被触发。

也许在OnDeinit()的层面上尝试删除?

ExpertRemove() 绝对不是一个辅助工具。你可以通过模板进行尝试。但OnDeinit无法检测到有账户变更的情况。

 
Alexey Viktorov:

我需要它吗?你在这里说的是不同角色名称的问题。

这正是我的答案。如果仪器名称在不同的账户中是不同的,请使用字符串处理功能,并提取该字符串的正确部分。

你不是在和一个初学者说话。不要提出不可行的假说。

 
fxsaber:

没有任何东西在启动。

ExpertRemove()肯定没有帮助。我们可以通过模板进行尝试。但在OnDeinit中,不可能确定是否有账户变化。

ExpertRemove 不起作用的地方--也有ChartClose()。我不明白问题出在哪里。账户变更后会发生什么?出现一个带有专家顾问的额外图表?还是只改变当前的图表符号?也许,ChartID被改变了,因此你之前的解决方案不工作了?无论如何,Ticks都会被处理,这意味着如果OnInit不起作用,我们必须卸载到OnTick。

 
fxsaber:

你不是在和一个新来的人说话。不要提出不可行的假说。

同样地,你也不应该发布不工作的代码。也不要在语言特性 的话题中讨论程序员在荆棘丛生的道路上遇到的问题。

 
Alexey Viktorov:

同样地,你也不应该发布不工作的代码。也不要在语言特点 的话题中讨论程序员在荆棘丛生的道路上遇到的问题。

你在这个问题上是无能的。

 

我还没有测试过,但很可能在改变账户后能够重新启动。并且已经从它改变了其他图表的模板。但总的来说,REASON_ACCOUNT 没有被抓住是很奇怪的。

但一般来说,这更像是一个错误,而不是一个特点。

 
fxsaber:

你在这个问题上是无能的。

如果你有这样的能力,那么请告诉我为什么它不起作用。

REASON_ACCOUNT

6

由于账户设置的改变,另一个账户已被激活 或重新连接到交易服务器上

 
Alexey Viktorov:

如果你如此能干,那么请告诉我为什么这不起作用?

REASON_ACCOUNT

6

由于账户设置的改变,另一个账户被激活 或重新连接到交易服务器上

  1. 该文件是假的。你可以通过重新登录来手动检查。
  2. 没有简单的方法来卸下自己。