错误、漏洞、问题 - 页 1409

 
Alexey Navoykov:

关于宣布新造1200。

当长的 time_mscdatetimetime 一起被添加到结构中时,这样的解决方案就显得非常硬朗了。 问题是为什么需要时间 呢? 这是一种毫无意义的资源浪费。

u int标志也是如此,而ugar 就足够了,或者至少是ushort(为未来做了大量的储备)。 为什么需要uint 呢,这一点令人费解。可悲的是,开发者完全没有考虑到合理的数据存储。 一个数组的ticks本身就是一个巨大的尺寸。 而在这里,内存被如此不经意地挥霍掉了......

总之,说到时间。也许现在是时候在MQL中引入一个包含毫秒的正常时间类型了,否则我们就只有这些拐杖了。更重要的是,目前形式的日期时间 本身是一个非常不合理的东西:它消耗了8个字节,但只包含了秒--谁需要它呢? 4个字节(uint)就足以完成未来90年的任务(而且Duncan McLeod不在我们中间)。

这个解决方案保留了与使用秒级时间或SymbolInfoTick() 的旧程序的兼容性。

相信我们的经验,"让我们在一两个字节内完成它 "的游戏会导致未来出现巨大的问题。只有当你为未来10年编写软件时,你才会理解它。

以秒为单位的4个字节的数据时间将在2038年结束(还有22年),而不是90年。

 

TM=30M 在这里是什么意思?

  • 交易终端:MetaTrader 4.0
  • 交易工具:任何(主要外汇货币对,最好是最小点差)。
  • TM=30M
  • 交易杠杆:从1:100 和更高。
  • 账户类型:微型、迷你或标准账户。
  • 最小初始手数=0.01
  • 最低存款:300美元/分起(最低手数为0.01)。
 
Renat Fatkhullin:

根据我们的经验,"让我们把它变成一个或两个字节 "的游戏会导致未来出现可怕的问题。只有当你提前10年编写软件时,你才会意识到这一点。

所以,这不是一个让它在限制范围内的问题。 当然,我们应该为未来留下一些空间,但要在合理的 范围内。 例如,在我们讨论的案例中,flags 字段只存储了其他六个字段的信息。如果你把它做成ushort 类型,你就会有10个字段的余地。 你还能加到多远呢?

例如,如果你打算保存一个完整的玻璃杯,32位是不够的。 为什么不把它一次变成64位呢? 虽然,很明显,对于一个玻璃杯,你需要非常不同的结构。

当然,我明白多出的2个字节意义不大,但事实证明,这里2个字节,那里2个字节...而这一切加起来是非常多的。

4个以秒为单位的日期时间字节在2038年(又是22年)结束,而不是在90年。

你弄糊涂了,我们说的是uint,它允许你存储136年,即到2106年。 看起来你在开发MQL5时最初犯了这个错误。
 

我告诉你--你将遭受不可延伸的经济结构,开始从几十年的角度考虑,长期支持的必要性,一切都会变得清晰。

在2038年,大量的软件将出现溢出的大问题,这将导致对旧代码的疯狂重写。而溢出将在垫子操作和三角洲上更早地被发现。

我从事编程25年了,我知道我在说什么。我这辈子都在写性价比高的程序。看看我们的终端 - 它们是真正的杰作,在小尺寸的单一exe文件中包含了大量的功能。在一台干净的电脑上运行一个赤裸裸的终端.exe,看看会发生什么。

但现在情况发生了变化--要么你在写64位代码时几乎处处留有余地,要么就远离未来。这对我们来说特别重要,因为我们发布的不是封闭的盒子,而是有兼容性要求的开发平台。

几年后我们会自责,因为我们会发现自己再次投资不足。而周围都是基本设备有几十G的电脑。

 
Yousufkhodja Sultonov:

TM=30M 在这里是什么意思?

  • 交易终端:MetaTrader 4.0
  • 交易工具:任何(主要外汇货币对,最好是最小点差)。
  • TM=30M
  • 杠杆:从1:100 到更高。
  • 账户类型:微型账户、迷你账户或标准账户。
  • 最小起始手数=0.01
  • 最低存款:300美元/美分起(最低手数为0.01)。
"TM=30M" - 时间框架30分钟(图表周期30分钟)。
 
Renat Fatkhullin:
在2038年,如果使用4字节的数据时间,大多数软件都会有很大的溢出问题,这将导致对旧代码的疯狂重写。而溢出将在垫子操作和三角洲上更早地被发现。

你是说MQL4代码吗?(其中日期时间最初是基于int的)。然后,当然,另一个与兼容性问题有关的谈话。 但我最初是在谈论理性。 所以,在这种情况下,理性受到了影响。

然而,无论如何,我想你会同意,需要一种新的含有毫秒的时间类型,它不应该从1970年开始,而是更早,例如从1900年开始。交易所已经存在了很长一段时间了。

 
Alexey Navoykov:

...

然而,无论如何,我想你会同意,需要一种新的时间类型,一种包含毫秒的时间。 而且它不应该从1970年开始,而是更早,例如1900年。我们现在不只是在谈论外汇,但交易所已经存在了很长一段时间了。

唯一的问题是,在沙皇戈罗克时期,使用计算机并不时髦,而虱子的历史也没有为后人保留下来......。
 
Joo Zepper:
唯一的问题是,在沙皇戈罗克时期,使用计算机并不时髦,而虱子的历史也没有为后人保留下来......。
这不一定是虱子的问题。 例如,日用 蜡烛已经被保存下来。
 
Alexey Navoykov:
这不一定是关于点数的问题。例如,当天的 蜡烛仍然是完整的。

我很不好意思地问,为什么你需要1900......年的每日蜡烛图的价格?要做技术分析?为了测试顾问们对历史的看法?

 
Renat Fatkhullin:

对于x64版本的MetaTrader 5终端,执行速度将从2到10倍增加。

其结果是非常值得的。尽管我们仍然会在编译速度上下功夫。

你最近吹嘘说MQL的速度接近于C++。 现在事实证明,你将比C++多出几倍? ))

如果你设法在一些特别准备的测试中得到这个速度,并不意味着你在其他情况下也能得到这个速度。 同时,在所有情况下,编译速度都在减慢。