Double vs FLOAT - 不明确的MathFloor错误 - 页 4 1234567 新评论 Vladislav Andruschenko 2017.02.26 09:22 #31 Andrey Dik: 漂浮是对数字的阉割,没有任何好处。最好是处理转换中的所有损失,并使用尽可能高的精度--两倍。 谢谢你。我将努力找出我在哪里犯了错误。目前,浮筒也仍在工作。我没有放弃我已经开始的东西的习惯。但这个错误使我失去了平衡。 Andrey Dik 2017.02.26 09:26 #32 Vladislav Andruschenko: 谢谢你。我会试着找出我的错误所在。同时,漂浮物正在发挥作用。我不习惯于辞职。但是这个错误让我大吃一惊。 这取决于你,但请注意,所有的标准数学函数都是以双倍的数字工作,并产生双倍的结果。对浮点数应用这些函数会产生内部转换为双数,所以无论如何你都会失去精度和结果的有效性。 就我个人而言,我在计算和比较数字时从不使用与一些最小的可接受值相比较的方法,我总是以最大可能的准确性来工作,直到第16个符号,只有在最后的操作中我才做归一化。如果你正确地处理双倍,就没有问题,我建议你这样做,否则你会遇到在计算/转换的某个步骤中失去准确性 而导致结果失真的问题。 Vladislav Andruschenko 2017.02.26 12:11 #33 Andrey Dik: 这取决于你,但请注意,所有的标准数学函数都是与双数一起工作的,并给出双数结果。对浮点数应用这些函数仍然是对双数的内部转换,所以在任何情况下,你都会失去得到的结果的准确性和有效性。 就我个人而言,我在计算和比较数字时从不使用与一些最小的可接受值相比较的方法,我总是以最大可能的准确性来工作,直到第16个符号,只有在最后的操作中我才做归一化。如果你正确地使用双倍数,就不会有问题,我建议你这样做,否则你会遇到与计算/转换的某个步骤中的精度损失 有关的结果失真问题。 谢谢你的全面回答。 Mikhail Dovbakh 2017.02.26 14:31 #34 2017年的评级价格是不折不扣的正确。 Vladislav Andruschenko 2017.02.26 15:33 #35 Mikhail Dovbakh:2017年的评级价格是不折不扣的正确。 告诉我们。 Taras Slobodyanik 2017.02.26 16:03 #36 那是应该的double Averab=(Ask+Bid)/2/_Point;double AUTOPRICE=MathFloor( NormalizeDouble(Averab,2) )*_Point; Vladislav Andruschenko 2017.02.26 16:26 #37 Taras Slobodyanik:它应该是这样的。double Averab=MathAbs(Ask-Bid)/2/_Point;double AUTOPRICE=MathFloor( NormalizeDouble(Averab,2) )*_Point;你的代码已经改了好几次了。我也做过同样的事情,我做过实验,我明白什么是double和int,但当我明确计算时,它们不是我需要的。第一行是你建议的内容。MathFloor( NormalizeDouble((Ask+Bid)/Point,_Digits) )*Point2017.02.26 18:24:59.133 2017.01.02 00:03:00 Exp - DOUBLE TEST MATHFLOOR EURUSD,M30: MathFloor=2.102872017.02.26 18:24:59.133 2017.01.02 00:03:00 Exp - DOUBLE TEST MATHFLOOR EURUSD,M30: DOUBLE askP2=105146 bidP2=105141 Averab2=105143.5000000000 AUTOPRICE=1.05143000002017.02.26 18:24:59.133 2017.01.02 00:03:00 Exp - DOUBLE TEST MATHFLOOR EURUSD,M30: FLOAT askP=105146 bidP=105141 Averab=105143.5000000000 AUTOPRICE=1.0514299870 Double vs FLOAT - 任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. Open Only back testing Taras Slobodyanik 2017.02.26 16:49 #38 所以,这是正确的105143.5000000000 向下四舍五入43是......(46-41)/2=2.5,四舍五入=2 Vladislav Andruschenko 2017.02.26 16:50 #39 Taras Slobodyanik:因此,这是正确的105143.5000000000,四舍五入为43...(46-41)/2=2.5,四舍五入=2这就对了。但不同的价差(2,3,4,5,6,7),向下的四舍五入是不同的,有时不大准确。 Taras Slobodyanik 2017.02.26 16:52 #40 检查了从0到8,一切正常...... 1234567 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
漂浮是对数字的阉割,没有任何好处。最好是处理转换中的所有损失,并使用尽可能高的精度--两倍。
谢谢你。我会试着找出我的错误所在。同时,漂浮物正在发挥作用。我不习惯于辞职。但是这个错误让我大吃一惊。
就我个人而言,我在计算和比较数字时从不使用与一些最小的可接受值相比较的方法,我总是以最大可能的准确性来工作,直到第16个符号,只有在最后的操作中我才做归一化。如果你正确地处理双倍,就没有问题,我建议你这样做,否则你会遇到在计算/转换的某个步骤中失去准确性 而导致结果失真的问题。
这取决于你,但请注意,所有的标准数学函数都是与双数一起工作的,并给出双数结果。对浮点数应用这些函数仍然是对双数的内部转换,所以在任何情况下,你都会失去得到的结果的准确性和有效性。
就我个人而言,我在计算和比较数字时从不使用与一些最小的可接受值相比较的方法,我总是以最大可能的准确性来工作,直到第16个符号,只有在最后的操作中我才做归一化。如果你正确地使用双倍数,就不会有问题,我建议你这样做,否则你会遇到与计算/转换的某个步骤中的精度损失 有关的结果失真问题。
2017年的评级价格是不折不扣的正确。
2017年的评级价格是不折不扣的正确。
那是应该的
double AUTOPRICE=MathFloor( NormalizeDouble(Averab,2) )*_Point;
它应该是这样的。
double AUTOPRICE=MathFloor( NormalizeDouble(Averab,2) )*_Point;
你的代码已经改了好几次了。
我也做过同样的事情,我做过实验,我明白什么是double和int,但当我明确计算时,它们不是我需要的。
第一行是你建议的内容。
2017.02.26 18:24:59.133 2017.01.02 00:03:00 Exp - DOUBLE TEST MATHFLOOR EURUSD,M30: DOUBLE askP2=105146 bidP2=105141 Averab2=105143.5000000000 AUTOPRICE=1.0514300000
2017.02.26 18:24:59.133 2017.01.02 00:03:00 Exp - DOUBLE TEST MATHFLOOR EURUSD,M30: FLOAT askP=105146 bidP=105141 Averab=105143.5000000000 AUTOPRICE=1.0514299870
所以,这是正确的105143.5000000000 向下四舍五入43是......
(46-41)/2=2.5,四舍五入=2
因此,这是正确的105143.5000000000,四舍五入为43...
(46-41)/2=2.5,四舍五入=2
这就对了。
但不同的价差(2,3,4,5,6,7),向下的四舍五入是不同的,有时不大准确。