开场白:
MQL4的世界正在演变。人们可能会试图回避这一事实,但最终,令人失望的是,避免进化的尝试迟早会徒劳无功。
由于需要对跨越几十年的代码库进行重新设计,我可以告诉您许多关于哪些有效,哪些无效的故事。
“旧代码”v/s a
新
-
MQL4.56789
如果只需要从中吸取一点,那么千万不要试图“绕过”New-MQL4,而是要检查代码并重构“旧代码”——这是一种更安全的生存方式(更长的时间)。
是的,有可能(零认股权证,暂时只剩下几次机会)新的编译器版本将仍然能够生成代码的可执行版本,但鉴于城市中已经出现了一套新规则,游戏不会持续很久。
广告1+2)
编译器仍然可以容忍多个声明,但不能在一个范围内
如果新版本的编译器定义,任何变量的声明都只与它的有效性范围相关,那么严肃的程序员应该将此作为一般原则。上述代码实际上还有其他问题,与有效性范围有关:
2 ...
3 if ( 1 == 2 ) {
4 ...
5 double myVar = 1;
6 ...
7 ...
8 } else
9 {
10 ...
11 double myVar = 2;
12
13 ...
14 }
所以,如果有
_global_
具有相同名称的作用域变量
myVar
,在本地声明变量存在期间,它将不“可见”,并使用相同的名称。
最后,让代码执行从第8行或第14行中的任何一行转义,本地there声明的变量
double myVar
只是不再存在了,这种行为基本上是正确的(“旧的”编译器版本在容忍有效性溢出范围的几年中容忍了一种危险的副作用习惯,所以现在是清理规则的时候了,以达到公平的C/s标准。
Ad 3)语言从MQL5接收到很多信息,即使MQL4中没有使用
是的,MetaEditor会将MQL4代码正确编译为
.mq4
代码执行格式,这里没有问题。甚至自动更新过程也开始独立于MT4终端平台(自动)更新(因此您经常会看到新的帮助文件出现,并强制重新编译所有可见的localhost
.MQ4
更新的资产
.EX4
格式,so“
不要惊慌。
"
最好不要安装与代理无关的MT4,请始终访问代理的支持并获取安装包&经纪人的帮助。这是您在合同中签署的业务关系,所以在您要在一张表上交易您的资金时,请保留这些条件,这些表是根据设定的条款操作的&条件一些代理有平台定制的方法,因此可以从与服务器端自动化相匹配的自定义设置中获益。
这更多的是一个研发经济的问题;D努力。(可能在IDE编辑器MQL4帮助中阅读了很多关于从MQL5域注入的语言组件的内容)。这是一种自然而然的产品设计策略,不会在双线上加倍努力。毫无疑问,帮助文件中有许多细节可以改进和更好地维护,这里的常识是接受事实,重新了解新引入的功能对MQL4代码库保持中立,以及在旧编译器功能不足的情况下,哪些新功能可能在方面上对您有很大帮助。
如果有人反对某些编译器/平台重新设计步骤不好,我会同意使用单线程、平台关键型、潜在阻塞、集中执行所有
CustomIndicator
-在一个SPoF线程中。
但C'est La Vie,除非系统架构师不审查此SPoF,否则平台仍然容易受到此功能崩溃的影响,但球在球场的另一边,必须在那里实施更改。