错误、漏洞、问题 - 页 2821 1...281428152816281728182819282028212822282328242825282628272828...3184 新评论 fxsaber 2020.08.10 11:45 #28201 Igor Makanu:正常化不是四舍五入 我在理论上有A+的成绩,如何与双倍的工作等等。NormalizeDouble 算法包含一个错误。提出的话题只是与比较双打有间接关系。 Alexey Viktorov 2020.08.10 11:47 #28202 fxsaber:我重复我的问题。图中显示了非归一化变量n和归一化变量m的值,以及它们之间的差异。但如果你想比较丁字裤,那是你的偏好。fxsaber: 我知道理论,如何在A+的规模上与双胞胎和类似的东西一起工作。NormalizeDouble算法包含一个错误。提出的话题只是与比较双打有间接关系。 这里肯定离不开森科的解释。 fxsaber 2020.08.10 11:51 #28203 NormalizeDouble 只是一种适用于双数的特定算法。不幸的是,这里面有一个错误。如果得到纠正,该错误将消失。所有其他的双重代表性不会有任何改变。 Igor Makanu 2020.08.10 11:52 #28204 fxsaber:NormalizeDouble算法包含一个错误。是我想A100写过这样的文章但自MQL以来,开发人员一直坚持使用这一 "功能",唉。fxsaber: 如果他们更正,错误就会消失。 我想其他的错误会出现,会有很多的噪音))))。 fxsaber 2020.08.10 11:57 #28205 Igor Makanu:我想其他的错误会出现,会有很多的噪音))))。 他们不会的,因为几乎每个人都会通过正常化来比较甚至是正常化的配音。也就是说,他们把它放在他们想要的地方。 在这种情况下,适当的归一化应该总是给出真实的结果。 关于交易、自动交易系统和策略测试的论坛 错误、漏洞、问题 fxsaber, 2020.08.10 11:37 Print((double)(string)Norm == Norm); // false 这是对规范化是否正确的唯一检查。如果它总是给人以真实的感觉,就不会有什么破绽。 Alexey Navoykov 2020.08.10 14:21 #28206 fxsaber: NormalizeDouble只是一种适用于双数的特定算法。不幸的是,这里面有一个错误。如果得到纠正,该错误将消失。所有其他的双重代表权都不会因此而改变。 我认为这不是函数的问题,而是常量没有被编译器规范化(尽管它们应该被规范化)。这同样适用于字符串到双数的转换。 fxsaber 2020.08.10 14:41 #28207 Alexey Navoykov: 我认为这不是函数的问题,而是常量没有被编译器规范化(尽管它们应该被规范化)。 这同样适用于字符串到双数的转换。 那么,DLL和MQL中的相同常数将不匹配。 Alexey Navoykov 2020.08.10 14:55 #28208 fxsaber:那么,DLL和MQL中的相同常数将不匹配。 也是如此。此外,任何归一化都是对准确性的损失,所以我可能在常数的归一化方面走得太远了。总的来说,我认为这个问题没有一个明确的解决方案。 虽然事实上它不是这样一个问题。 fxsaber 2020.08.10 15:36 #28209 Alexey Navoykov: 也是如此。此外,任何规范化都是对准确性的损失,所以我可能在不断地规范化方面做得过头了。 总的来说,这个问题在我看来并没有一个明确的解决方案,尽管在本质上它不是这样一个问题。 只要调整一下目前的归一化算法就可以了。 Nikolai Semko 2020.08.10 16:55 #28210 fxsaber:只要调整一下目前的归一化算法就可以了。void OnStart() { double d1=1.79435; double d2=NormalizeDouble(1.79435,5); Print(d1==d2); Print(is_equal(d1,d2,_Point/2)); } //+------------------------------------------------------------------+ bool is_equal(double d1, double d2, double e=0.000000001) {return fabs(d1-d2)<e;} 我甚至不知道这是否是算法中的一个错误。 真的,你不能比较双打。只是一个硬性规定。 或者,如Slava所说,通过ε或通过乘法(例如1/_Point),并通过四舍五入转换为int。只有 四舍五入没有使用标准的round(), ceil(), floor(),因为它们也是返回双数。 或者通过这些,特别是因为它们比普通的工作更快。int Ceil (double x) {return (x-(int)x>0)?(int)x+1:(int)x;} int Round(double x) {return (x>0)?(int)(x+0.5):(int)(x-0.5);} int Floor(double x) {return (x>0)?(int)x:((int)x-x>0)?(int)x-1:(int)x;}当然,更容易和更快,通过epsilon。bool is_equal(double d1, double d2, double e=0.000000001) {return fabs(d1-d2)<e;} 1...281428152816281728182819282028212822282328242825282628272828...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
正常化不是四舍五入
我在理论上有A+的成绩,如何与双倍的工作等等。NormalizeDouble 算法包含一个错误。提出的话题只是与比较双打有间接关系。
我重复我的问题。
图中显示了非归一化变量n和归一化变量m的值,以及它们之间的差异。但如果你想比较丁字裤,那是你的偏好。
我知道理论,如何在A+的规模上与双胞胎和类似的东西一起工作。NormalizeDouble算法包含一个错误。提出的话题只是与比较双打有间接关系。
NormalizeDouble算法包含一个错误。
是
我想A100写过这样的文章
但自MQL以来,开发人员一直坚持使用这一 "功能",唉。
如果他们更正,错误就会消失。
我想其他的错误会出现,会有很多的噪音))))。
他们不会的,因为几乎每个人都会通过正常化来比较甚至是正常化的配音。也就是说,他们把它放在他们想要的地方。
在这种情况下,适当的归一化应该总是给出真实的结果。
关于交易、自动交易系统和策略测试的论坛
错误、漏洞、问题
fxsaber, 2020.08.10 11:37
这是对规范化是否正确的唯一检查。如果它总是给人以真实的感觉,就不会有什么破绽。
NormalizeDouble只是一种适用于双数的特定算法。不幸的是,这里面有一个错误。如果得到纠正,该错误将消失。所有其他的双重代表权都不会因此而改变。
我认为这不是函数的问题,而是常量没有被编译器规范化(尽管它们应该被规范化)。
那么,DLL和MQL中的相同常数将不匹配。
那么,DLL和MQL中的相同常数将不匹配。
也是如此。此外,任何规范化都是对准确性的损失,所以我可能在不断地规范化方面做得过头了。
只要调整一下目前的归一化算法就可以了。
只要调整一下目前的归一化算法就可以了。
我甚至不知道这是否是算法中的一个错误。
只有 四舍五入没有使用标准的round(), ceil(), floor(),因为它们也是返回双数。真的,你不能比较双打。只是一个硬性规定。
或者,如Slava所说,通过ε或通过乘法(例如1/_Point),并通过四舍五入转换为int。
或者通过这些,特别是因为它们比普通的工作更快。
当然,更容易和更快,通过epsilon。