向MQL4大师们提问。还是关于双倍比较。 - 页 10

 
Simca:
SK.写道:(a)。

我对开发人员表示诚挚的慰问,他们不得不向每个新用户解释1000次 同样的事情......



这已经是明目张胆的攻击...
我同意。虽然SK. 是论坛上的权威,但 "特定的计算机技术 "也让我感到怀疑。
教科书上写的是在内存中存储实数,并没有说变量自己会变化。 虽然我不仅从这个论坛上的SK 那里听说过。
因此,如果你已经误导了每一个新用户1000次,你现在应该找到他们并为你的话道歉!

我同意Simca 的观点。在进行算术运算 时,有可能出现错误,但在存储、写入或读取时,则不可能出现错误。

这就是为什么我问NormalizeDouble()函数的算法,也许它也有导致错误的算术操作?
你怎么看辛卡
 

好的。你说得如此自信,以至于我开始怀疑我所说的。

我过去一直在一台256MB内存的旧电脑上工作,直到前一段时间。当你google几个程序时,操作系统会将一些数据转储到磁盘,然后再加载。自从我修改了代码(在比较运算符中指定了规范化),错误就不再出现了。但听到你的话后我开始怀疑--如果我真的没有注意到这个错误呢?

现在我不知道该不该道歉了。如果我错了,那就让1000名用户原谅我。

(但在计算比较操作时,还是直接进行归一化比较好:)

 
gravity001:
教科书上写的是在内存中存储实数,并没有说到变量自己会变化。虽然我在这个论坛上听到的不仅仅是SK 的说法。
在储存期间,没有任何东西本身会发生变化。但实数在计算机内存中的表示方式会影响存储值的准确性(比特深度)。在对实数进行算术运算时,结果往往 "不够准确"(从人类的角度来看),所以有时 需要对运算结果进行归一化处理。在随后进行平等 比较的情况下,肯定 需要对操作结果进行规范化处理(通常为>,<)。如果你用所需的严格设定的数字容量 的值进行操作(例如价格), 有必要对结果进行归一化。用实数进行的中间计算通常不需要归一化。
但是,这一切都涉及到计算,而存储在内存中的数值不会改变,无论它们是否被规范化。
重力001
这就是为什么我在问NormalizeDouble()函数的算法,也许它也有导致错误的算术运算?
你怎么看辛卡
好吧,关于NormalizeDouble函数的算法,我们应该问开发人员,而我不是他们中的一员。:)此外,这不是争议的主题,因为两个代码片段中的NormalizeDouble函数是以绝对相同的方式使用的。唯一的区别在于直接比较两种归一化的结果,并将这些结果写入变量,然后比较其数值。我注意到,由于NormalizeDouble函数返回的值的类型与用于存储的变量的类型相吻合,所引用的片段之间不会有任何区别。但是,如果NormalizeDouble函数返回的值比存储它的变量的维度大,那么就可能出现差异,我们不能确定它是相同的。但根据MetaEditor的HELP,两种情况下的数据类型都是double,所以不管NormalizeDouble函数如何实现,应该没有区别。
 
SK. писал (а):

(但在计算比较操作时,还是直接进行归一化比较好:)

而对于这一点,如适用于每个新用户,我绝对同意。如果你不清楚它的内容和工作原理,那么走更安全、更可靠的方式更合理!但这与你我无关。:)
而就我而言(对于那些没有完全理解问题本质的人),我也可以推荐。

(但在计算比较操作(c)SK时,还是直接进行归一化比较好。

 
SK. писал (а):

(但最好还是在计算时直接进行归一化。
比较操作的计算:)





对不起,但就效率而言,有更好的实现方法来比较需要规范化的数据。一般来说,这就是标准(比较算法)。你必须用一半的比例尺寸来比较差异。我的意思是:为了比较价格(无论它们是否不同),你应该采取差异并与0.5*Roynt进行比较(它只能在专家顾问/Script/indicator的初始化期间计算一次。这比调用一个函数要有效得多,如果它也在一个循环中,那就更有效了)....而且,这些数据如何存储以及被四舍五入到什么微不足道的符号,都不会有什么影响。

好运。
 
首先,与dubles一起工作纯粹是编译器的事情,所以要求mql4提供便利,这基本上是一个隐藏的内在编译器,是不合理的。最主要的是,开发人员提供了一种保证比较结果正确的方法,我们用手检查了一下,当然是图形化的,但是可行!!虽然文件中说正常化只在"!"的情况下进行。="或"==",我们独立的专家测试表明,(a>b)不保证(!)正确的结果,如果a原来等于b!即使你PREDVORITELY规范化a和b,结果是不可预测的。 这里有一个来自开发人员的结构:。 NormalizeDouble(a-b, Digits)>0能可靠地工作! 我不知道为什么这里的人不喜欢normalize函数......也许它(在内部)像这样做是很有说服力的:两个数据被双精度除以,然后向下(或向上)取整。之后,对整个的进行比较,没有任何问题。
 
.FG писал (а):
首先,与dubles一起工作纯粹是编译器的事情,所以要求mql4提供便利,这基本上是一个隐藏的内在编译器,是不合理的。最主要的是,开发人员提供了一种方法来保证比较结果的正确性,我们用手检查了一下,当然是图形化的,但是是有效的!!虽然文件中说,正常化只在"!"的情况下进行。="或"==",我们独立的专家测试表明,(a>b)不保证(!)正确的结果,如果a原来等于b!即使你PREDVORITELY规范化a和b,结果是不可预测的。 这里有一个来自开发人员的结构:。 NormalizeDouble(a-b, Digits)>0能可靠地工作! 我不知道为什么这里的人不喜欢normalize函数......也许它(在内部)像这样做是很有说服力的:两个数据被双精度除以,然后向下(或向上)取整。而后,整数的比较没有任何问题。

请用正确的俄语书写。

 
给我一个开发者网站的链接(俄语),我保证我只使用作者的定义。在我看来,你的想法并不比我的更正确,但如果你个人想了解,我会做一个 "Rosh的代言人",如果你不能区分胡说八道和专家鉴定。 因为我写的不是你,和第1001个初学者。:)
 
.FG писал (а):
给我一个你网站的链接,我保证我只使用作者的定义。:)你的想法,我认为并不比我的更正确,但如果你个人想了解,我会做一个 "Rosh的代言人",如果你不能区分胡说八道和专家鉴定。因为我不是写给你的,而是写给第1001个新来的人。:)

例如,www.gramota.ru

我们的论坛没有阿尔巴尼亚语区。尽管如此,在下一个非俄罗斯的职位之后,你将被送到那里。请不要把它说得像你在使用语言。

 
在这种情况下,你,stringo,应该去Cyril和Methodius,获得编程的成就文凭!这是很重要的。所有这些规范化的问题我都是在免费的DOS编译器中遇到的,在目前的版本中早已方便地实现了。 这就是为什么有些程序员不明白为什么需要这样一个过时的双倍数的检查。当他们重写他们的代码时,到处塞满了与零相比的正常分解,他们会惊讶地发现在他们自己的 "C-逻辑 "中没有错误,而不是父亲-执行者的正确评论,因为他们可以利用优化和其他次要的东西。但有关基本计算结果的问题仍将是至关重要的,需要给予最大的关注。 如果你再威胁要把我送走,我们就去找一些CME,我们会拿着他们的文件,用FIX和其他技巧在OLBANKA中编写一个程序。:) 而且你会失去工作。 你会做你的mq6,你会希望有人至少用阿尔巴尼亚语测试你的产品,但不,我们不会在那里......因为你自己悄悄地禁止了我们......:)))))))))))))))))))))))000