支持MG4脚本和顾问的测试人员 - 页 4

 

你们都可以用头撞墙,或者发明暖水....。但Integer 是对的。

整数

正是如此。特别是利用自己的优越地位的权威。

所有的语言都是一样的,除了奢侈的语言。所有这些都可以在21天内被任何傻瓜学会。所有的for、while、if、switch可能有不同的记号,但在原则上没有任何区别。重要的不是运算符的编写方式,而是语言与之互动的基础设施。在这方面,MT4和MT5是两个不同的世界。

一切的差异。从小处着手--指标中的条形图的编号,在MT4中从右到左,在MT5中从左到右。继续说更重要的一个--总的立场和贸易历史数据的组织。最大的区别在于经常需要的东西--在获取报价和指标数据的方式上,复制数据需要检查,从左到右和从右到左的索引,条形的时间要么包括在范围内,要么不包括。把CodeBase中关于iBarShift()函数的讨论单独拿出来。

在MT4中,为确保专家顾问的稳定运行,只需检查OrderSelect()的返回值即可,但在MT5中,有必要在每一步进行检查,甚至在最后一个tick的数据中进行检查。MT5编程也有一些微妙之处,你只有在吃过很多苦头之后才能学会,因为有很多陷阱。


 
Renat:

你在这个论坛上没有看到的东西。

为什么,没有责任。你可以说任何事情。

语言仍然是不同的。5的指标代码不一定能在4中发挥作用。没有足够的能力
 
Vinin:
语言仍然是不同的。5的指标代码不一定能在4中发挥作用。没有足够的能力
最好是4号的指标代码在4号中仍然有效。而且将不需要任何功能
 
borilunad:
如果4的指标代码在4中仍然有效,那就更好了。也就不需要什么功能了。
他们确实在工作。除非它们被修改或重新编译
 
Vinin:
他们确实在工作。除非你修改或重新编译它们。
我没有改变 "主题 "中的任何东西,但当终端从第670次更新到第711次时,在测试器中使用任何一个都会变得迟缓,这就是我报告的原因,但我开始用标准的MA进行实验,发现了许多以前因经验不足而无法做到的事情。现在我用它来工作,并对它感到满意。只是对我购买的8号机不满意,这被称为是一场灾难,并计划只在它身上下功夫,其余的都在Vista上。我想我将不得不继续使用Vista,同时它还能存活,然后在不相信任何人的情况下购买它,我将让这个8-th的肥皂、网站等。:)
 
Renat:

MetaTrader 4的历史深度有限,有独立的时间框架,并可通过开盘/高/低/收盘/时间[xxx]直接访问其符号条。这种直接访问在资源和CPU成本方面的实现非常昂贵。考虑到每个专家顾问都有自己的该数据的本地拷贝,以避免与其他专家顾问和终端本身的冲突。

这其实不是用户的问题,是你的问题。也就是说,你可以说是把终端的数据访问问题转嫁给了用户。

也就是说,你要么提高编码技能的门槛,要么得到大量的无效代码,这可能比MT4中的直接便捷访问更糟糕,效率更低。

事实上,你的一些解决方案是非常有争议的。

 
TheXpert:

这其实不是用户的问题,而是你的问题。所以你可以说你是把终端的数据访问问题转嫁给了用户。

也就是说,你要么提高编码技能的标准,要么得到一堆歪门邪道的代码,这可能比MT4中的直接便捷访问效果要差得多,而且没有效果。

一般来说,你的一些解决方案是非常有争议的。


阅读全文--有一个直接的推理,为什么不可能进一步使用它。

为了使用户以后不会因为刹车或过度使用资源而责怪我们,我们对所要求的数据给予了更有效的控制。

一个简单的例子:欧洲美元M1的专家顾问,有10年的历史,目前的图表需要大约200MB。在MT4模型中,我们将不得不在每个tick 中复制(甚至很少)200 mb到专家的影子快照中,我们将损失200 mb的内存。在MT5中,这种缓存根本没有内存消耗,专家顾问很可能只请求一小段历史,把它放在本地数组中,并以最大速度工作。

 
Renat:

为了防止用户事后指责我们的滞后或过度的资源消耗,我们对请求的数据给予了更有效的控制。

我读了整个文本。这并不是不可能的。你为图表收集时间框架,你可以用同样的方式为专家顾问收集时间框架,而且做得相当有效。

你怎么会认为用户会因为刹车而杀了你?

在MT4模型中,我们将不得不在每一个tick上复制(即使是少量的)200Mb的影子快照的EA,并浪费200Mb的内存。MT5根本没有用于这种缓存的内存费用,专家顾问可能只请求一小块历史记录,将其放在本地数组中,并以最大速度工作。

做一个聪明的缓存(有经验),不要把其他的东西放在内存中。
 

用内部高效的生态系统和虚拟机 编写你自己的终端引擎,然后我们再谈。我们在过去的四个平台中都是这样写的,一次又一次地改进架构。所以我们的决定是由实践经验来证明的。

否则,就不可能对 "做吧,聪明的缓存,它们不会被滥用,等等 "的建议作出回应。

 
Integer:

正是如此。特别是利用自己的优越地位的权威。

所有的语言都是一样的,除了那些特别奢侈的语言。所有这些都可以在21天内被任何傻瓜学会。所有的for、while、if、switch可能有不同的记号,但它并没有从根本上改变什么。重要的不是运算符的编写方式,而是语言与之互动的基础设施。在这方面,MT4和MT5是两个不同的世界。

一切都有区别。从一个小问题开始--指标中的条形图编号,在MT4中从右到左,在MT5中从左到右。

...

与MT4相比,MT5的编号默认是相反的。事实上,数组可以向任何方向反转。参见文档:数组、缓冲区和时间序列中的索引方向

整数

...

继续说说更重要的--总的立场和贸易历史数据的组织。

...

在MT4上有很多问题,因为我们必须通过OrderCloseBy()向服务器发送一个额外的订单来覆盖工具的相反位置,由于各种原因,这并不总是有效。因此,我们不得不额外检查并重新发送订单,否则整个交易系统的逻辑就会被破坏。

在MT5中,由于总的位置,一切都被简化到可以接受的水平。例如,现在我们甚至不必担心盈亏平衡水平应该是多少--这个愚蠢的问题只在MT4上有意义。毕竟,总头寸的开盘价就是盈亏平衡水平。对于获胜的头寸,一切都变得更简单了,因为它们在服务器上自动关闭,无需发送额外的订单。

即以牺牲总量的姿势为代价,将代码量减少到必要和足够的水平,以及为它们所需的冗余命令和检查量。

整数

在MT4中,检查OrderSelect()的返回值就足够了,而在MT5中,有必要在每一步进行检查,甚至在最后一个tick的数据上。MT5编程还有一些微妙之处,你只有在吃过很多苦头之后才能学会,因为有很多陷阱。

没有人强迫MT5使用额外的检查,你可以希望和MT4一样,尝试处理任何没有检查的东西,这些东西没有从服务器正确加载,或者根本没有加载,只是初始化了而已。在这种情况下,性能也将对应于MT4,也就是说,只有在测试器中一切正常,我们将看到模拟和真实账户上的废话。

这就是MT5中增加的额外检查的数量,目的是确保获得的信息的质量。在MT4中,很多这样的检查都没有,所以在一些关键的情况下,不可能确保从终端收到的信息是可靠的,这些信息需要被处理以做出决定。你只能希望终端已经正确地从服务器下载了所需的一切,但没有办法确定这一点--没有任何东西可以检查其正确性。


一般来说,对MT5的攻击 - 只是那些不想切换到新终端的人的一个烂借口,或者是那些只听说过MT5,但不知道它在哪里的人的发明。

MT4是昨天的终端,用于创建原始算法,这些算法或多或少适合在测试器中 "交易",用于绘制漂亮的平衡曲线。如果你对画漂亮的平衡曲线不感兴趣,因为你不能把它们放在口袋里,也不能把它们放在面包上,只能用来在质朴的主题中吹嘘,你需要转到MT5。