错误、漏洞、问题 - 页 2939 1...293229332934293529362937293829392940294129422943294429452946...3184 新评论 Nikolai Semko 2021.01.13 01:23 #29381 x572intraday: 所有的价格都显示到小数点后五位,在同一个列表中,有一个由于某种原因而这样认为:为什么?这是一个错误,还是我的输出应该被编辑成一个统一的外观?好吧,这么说吧,我用PrintFormat或fprint来梳理它,但原则上它不是不正确的数字表示? 关于交易、自动交易系统和交易策略测试的论坛 虫子,虫子,问题 Nikolai Semko, 2020.01.05 21:41 我总是有这样的疑问。 不断地都在谈论 IEEE 标准 754,但人们经常,当他们去维基百科时--无论是因为复杂,还是因为懒惰,都没有理解该标准的含义就离开。 我将花一点时间尝试用简单的语言尽可能简要地解释这个标准,以便进一步参考这个帖子。 因此, ,类型 为双倍,包括8个字节=64位。(float 4字节=32位) 而 双数 和浮点数 的数字表示 由3个部分组成:符号、指数和尾数 。 双打。 漂浮物。 自然,这种格式的数字没有十进制表示,只有二进制。 符号是1位。如果是0,就是+(加),如果是1,就是-(减)。 指数存储的是数字2的度数。对于浮点数可以在-12610到12710的范围内,对于双数可以在-102210 到102310的范围内。 尾数是二进制形式的数字本身的小数部分,简化为一种形式,其中逗号站在第一个单位之后,不考虑该第一个单位和逗号 对数字的二进制表示法及其与十进制数字的关系有一点了解。 24= 100002 = 1610 23= 10002 = 810 22= 1002 = 4 21=102= 2 20=12=110 2-1= 0.12=(1/2)10= 0.510 2-2= 0.012 = (1/4)10= 0.2510 2-3= 0.0012 = (1/8)10= 0. 12510 2-4= 0.00012 = (1/16)10 = 0.062510 2-5= 0.000012 = (1/32)10 = 0.0312510 2-6= 0.0000012 = (1/64)10= 0.01562510 2-7= 0.00000012 = (1/128)10= 0.007812510 2-8= 0.000000012 = (1/256)10 = 0.0039062510 2-9= 0.0000000012 = (1/512)10 = 0.00195312510 2- 10= 0.00000000012 = (1/1024)10 = 0.000976562510 2- 11= 0.000000000012 = (1/2048)10 = 0.0004882812510 2- 12= 0.0000000000012 = (1/4096)10 = 0.00024414062510 2- 13= 0.00000000000012 = (1/8192)10 = 0.000122070312510 让我们回顾 一下双倍 的例子 。 例子#1 我们有一个十进制的数字:891677.4025191 这个数字可以用二进制形式表示。 1101100110110001110101.011001110000101101110111110110001000001111111010001110 (谁想查就查))。 我们提取给定数字的尾数,只需将逗号19位向左移动(在本例中),使其位于第一个单位之后。 1.1011001101100011101011001110000101101111101111000101000001111101110001110* 219 但我们的尾数只有52位。所以我们取前52个有效位 Мантисса =1011001101100011101011001110000101101111101111000101 指数=(19+1023)10=100000100102(由于指数是一个有符号的数字,而且指数可以是负数(例如如果我们有0.0000042132),我们需要将 1023加到10(011111111112),0111111112是零,一切多了就是正数,少了就是负数。换句话说,为了得到指数的反向值,我们需要从指数的11位值中减去1023。 总的来说,我们的号码891677.4025191 在类型上会有 如下的 双倍。 0100000100101011001101100011101011001110000101101111101111000101 但由于这是一个二进制表示法,让我们把它准确地转换为十进制。 那将是891677.402519099996425211429595947265625 例子#2 我们有一个十进制的数字:-0.00000145258556224114 这个数字可以用二进制形式表示。 -0.000000000000000000011000010111101100111010110111010011010101001111001110 选择这个数字的尾数,只需将逗号向右移动20位,使其位于第一个单位之后。 1.1000010111101100111010110111010011010101001111001110* 2-20 Мантисса =1000010111101100111010110111010011010101001111001110 指数=(-20+1023)10=011111010112 减号,所以第一位是1。 我们的总数-0.00000145258556224114,在双倍类型中看起来如下。 1011111010111000010111101100111010110111010011010101001111001110 将其精确转换为十进制。 это будет-0.00000145258556224113991124017968015191826225418481044471263885498046875 在你的案例中,问题发生在数字0.01上,因为在双倍类型中,它将被表示成这样。 0 01111111000 0100011110101110000101000111101011100001010001111011 当转换为十进制符号系统时,等于0.010000000000000000208166817117216858513294309377670288085937510 而具有代表性的是 310= 1.5*2 =1.12*2 1 510= 2.5*2 = 10.12*2 1 610= 1.5*4 =1.12*2 2 710 = 3.5*2 = 11.12*2 1 没问题。 为什么双0.01的数字真的比0.01大? 原因就在这里。 0 01111111000 010001111010111010000101011101001010001111011 - 0.01000000000000000020816681711721685132943093776702880859375误差=0.000 000 000 000 000 208166817... 0 01111111000 01000111101011100001010001111010 - 0.0099999999999999984747344334114097569175064563751220703125误差= - 0.000 000 000 001 5265566... 要了解这个过程的化学,你可以玩一玩这些计算器: https://babbage.cs.qc.cuny.edu/IEEE-754.old/Decimal.html https://baseconvert.com/ieee-754-floating-point https://baseconvert.com/ieee-754-floating-point Errors, bugs, questions EA: DD Report EA 顾问<咨询市场上的产品所有者> x572intraday 2021.01.13 09:31 #29382 Nikolai Semko: https://baseconvert.com/ieee-754-floating-point 谢谢你,信息量大。那么,基本上,MQ应该有,但修正不足,还是由用户决定? Aleksei Skrypnev 2021.01.13 09:36 #29383 是否有一个函数或其他一些额外的功能(库、代码)来保存EA参数? 任务是在ondeinit代码中,例如,当在一个符号上运行EA时(附加功能也是周期分析),将保存设置的文件。 例如 - EA名称-符号-句号。 有可能被覆盖的文件--只有符号的最后设置。 例如,测试器中的标准设置被保存为最后一次运行。 Slava Botalov 2021.01.13 09:55 #29384 日安,在远程电脑上的问题,我无法访问MQL5网站,所以我无法下载我买的指标。我无法进入MQL5网站,因此我无法下载我购买的指标。 Vladislav Andruschenko 2021.01.13 09:57 #29385 Slava Botalov: 你好,我在远程电脑上遇到了一个问题,我无法访问MQL5网站,因此我无法下载我购买的指标。我不能下载我买的指标。 但在Zomro上有一台远程计算机? Nikolai Semko 2021.01.13 10:05 #29386 x572intraday:谢谢你,信息量大。那么,基本上,MQ的应该有,但修正不足,还是故意留给用户判断的决定? 所以他们没有得到它。没有任何错误。一切都是理所当然的。 Slava Botalov 2021.01.13 10:21 #29387 Vladislav Andruschenko:但在Zomro上有一台远程计算机? 是 Vladimir Karputov 2021.01.13 10:27 #29388 Slava Botalov: 日安,在远程电脑上的问题,我无法访问MQL5网站,所以我无法下载我买的指标。我无法下载该指标,所以我无法在MQL5网站上安装它。 Vladislav Andruschenko: 但在Zomro上有一台远程计算机? Slava Botalov: 是 该供应商因严重不当行为而被禁止。 关于交易、自动交易系统和测试交易策略的论坛为什么访问www.mql4.com 被阻止?Renat Fatkhullin, 2020.11.17 12:16*** 整个有子网的Zomro供应商因其子网的大规模欺诈活动而被封锁。 *** x572intraday 2021.01.13 10:30 #29389 Nikolai Semko: 所以,他们不理解。 根本就没有错误。 一切都是理所当然的。 这不是问题的关键。问题是,它能在哪些方面发挥作用,特别是对交易者,而不是程序员?我从来没有在终端中看到过这样的数字,无论是在价格表中还是在下单窗口中;那里的一切在任何地方都是一样的(某处是五位数,某处是其他)。 Slava Botalov 2021.01.13 10:31 #29390 Vladimir Karputov:该供应商因严重不当行为而被禁止。 太糟糕了,我们不得不换成另一个,有什么建议吗? 1...293229332934293529362937293829392940294129422943294429452946...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
所有的价格都显示到小数点后五位,在同一个列表中,有一个由于某种原因而这样认为:为什么?这是一个错误,还是我的输出应该被编辑成一个统一的外观?好吧,这么说吧,我用PrintFormat或fprint来梳理它,但原则上它不是不正确的数字表示?
关于交易、自动交易系统和交易策略测试的论坛
虫子,虫子,问题
Nikolai Semko, 2020.01.05 21:41
我总是有这样的疑问。
不断地都在谈论 IEEE 标准 754,但人们经常,当他们去维基百科时--无论是因为复杂,还是因为懒惰,都没有理解该标准的含义就离开。
我将花一点时间尝试用简单的语言尽可能简要地解释这个标准,以便进一步参考这个帖子。
因此, ,类型 为双倍,包括8个字节=64位。(float 4字节=32位)
而 双数 和浮点数 的数字表示 由3个部分组成:符号、指数和尾数 。
双打。
漂浮物。
自然,这种格式的数字没有十进制表示,只有二进制。
对数字的二进制表示法及其与十进制数字的关系有一点了解。
24= 100002 = 1610
23= 10002 = 810
22= 1002 = 4
21=102= 2
20=12=110
2-1= 0.12=(1/2)10= 0.510
2-2= 0.012 = (1/4)10= 0.2510
2-3= 0.0012 = (1/8)10= 0. 12510
2-4= 0.00012 = (1/16)10 = 0.062510
2-5= 0.000012 = (1/32)10 = 0.0312510
2-6= 0.0000012 = (1/64)10= 0.01562510
2-7= 0.00000012 = (1/128)10= 0.007812510
2-8= 0.000000012 = (1/256)10 = 0.0039062510
2-9= 0.0000000012 = (1/512)10 = 0.00195312510
2- 10= 0.00000000012 = (1/1024)10 = 0.000976562510
2- 11= 0.000000000012 = (1/2048)10 = 0.0004882812510
2- 12= 0.0000000000012 = (1/4096)10 = 0.00024414062510
2- 13= 0.00000000000012 = (1/8192)10 = 0.000122070312510
让我们回顾 一下双倍 的例子 。
例子#1
我们有一个十进制的数字:891677.4025191
这个数字可以用二进制形式表示。
1101100110110001110101.011001110000101101110111110110001000001111111010001110
(谁想查就查))。
我们提取给定数字的尾数,只需将逗号19位向左移动(在本例中),使其位于第一个单位之后。
1.1011001101100011101011001110000101101111101111000101000001111101110001110* 219
但我们的尾数只有52位。所以我们取前52个有效位
Мантисса =1011001101100011101011001110000101101111101111000101
指数=(19+1023)10=100000100102(由于指数是一个有符号的数字,而且指数可以是负数(例如如果我们有0.0000042132),我们需要将 1023加到10(011111111112),0111111112是零,一切多了就是正数,少了就是负数。换句话说,为了得到指数的反向值,我们需要从指数的11位值中减去1023。
总的来说,我们的号码891677.4025191 在类型上会有 如下的 双倍。
0100000100101011001101100011101011001110000101101111101111000101
但由于这是一个二进制表示法,让我们把它准确地转换为十进制。
那将是891677.402519099996425211429595947265625
例子#2
我们有一个十进制的数字:-0.00000145258556224114
这个数字可以用二进制形式表示。
-0.000000000000000000011000010111101100111010110111010011010101001111001110
选择这个数字的尾数,只需将逗号向右移动20位,使其位于第一个单位之后。
1.1000010111101100111010110111010011010101001111001110* 2-20
Мантисса =1000010111101100111010110111010011010101001111001110
指数=(-20+1023)10=011111010112
减号,所以第一位是1。
我们的总数-0.00000145258556224114,在双倍类型中看起来如下。
1011111010111000010111101100111010110111010011010101001111001110
将其精确转换为十进制。
это будет-0.00000145258556224113991124017968015191826225418481044471263885498046875
在你的案例中,问题发生在数字0.01上,因为在双倍类型中,它将被表示成这样。
0 01111111000 0100011110101110000101000111101011100001010001111011
当转换为十进制符号系统时,等于0.010000000000000000208166817117216858513294309377670288085937510
而具有代表性的是
310= 1.5*2 =1.12*2 1
510= 2.5*2 = 10.12*2 1
610= 1.5*4 =1.12*2 2
710 = 3.5*2 = 11.12*2 1
没问题。
为什么双0.01的数字真的比0.01大?
原因就在这里。
0 01111111000 010001111010111010000101011101001010001111011 - 0.01000000000000000020816681711721685132943093776702880859375误差=0.000 000 000 000 000 208166817...
0 01111111000 01000111101011100001010001111010 - 0.0099999999999999984747344334114097569175064563751220703125误差= - 0.000 000 000 001 5265566...
要了解这个过程的化学,你可以玩一玩这些计算器:
https://babbage.cs.qc.cuny.edu/IEEE-754.old/Decimal.html
https://baseconvert.com/ieee-754-floating-point
https://baseconvert.com/ieee-754-floating-point
https://baseconvert.com/ieee-754-floating-point
谢谢你,信息量大。那么,基本上,MQ应该有,但修正不足,还是由用户决定?
是否有一个函数或其他一些额外的功能(库、代码)来保存EA参数?
任务是在ondeinit代码中,例如,当在一个符号上运行EA时(附加功能也是周期分析),将保存设置的文件。
例如 - EA名称-符号-句号。
有可能被覆盖的文件--只有符号的最后设置。
例如,测试器中的标准设置被保存为最后一次运行。
你好,我在远程电脑上遇到了一个问题,我无法访问MQL5网站,因此我无法下载我购买的指标。我不能下载我买的指标。
但在Zomro上有一台远程计算机?
谢谢你,信息量大。那么,基本上,MQ的应该有,但修正不足,还是故意留给用户判断的决定?
但在Zomro上有一台远程计算机?
是
日安,在远程电脑上的问题,我无法访问MQL5网站,所以我无法下载我买的指标。我无法下载该指标,所以我无法在MQL5网站上安装它。
但在Zomro上有一台远程计算机?
是
该供应商因严重不当行为而被禁止。
关于交易、自动交易系统和测试交易策略的论坛
为什么访问www.mql4.com 被阻止?
Renat Fatkhullin, 2020.11.17 12:16
***所以,他们不理解。
这不是问题的关键。问题是,它能在哪些方面发挥作用,特别是对交易者,而不是程序员?我从来没有在终端中看到过这样的数字,无论是在价格表中还是在下单窗口中;那里的一切在任何地方都是一样的(某处是五位数,某处是其他)。
该供应商因严重不当行为而被禁止。
太糟糕了,我们不得不换成另一个,有什么建议吗?