错误、漏洞、问题 - 页 2221 1...221422152216221722182219222022212222222322242225222622272228...3184 新评论 SEM 2018.06.26 09:24 #22201 合成的工具。我导入 分钟条,每个分钟条相差1点(5位数)。 我关闭了带有符号的窗口,然后我重新打开这个窗口,要求从上一次加载的分钟条,我得到了 每一天的符号都是一样的。错误是什么? Koldun Zloy 2018.06.26 15:53 #22202 elibrarius:翻看Alglib包的代码。它充满了这些结构,使代码 更加难以阅读。这样不是更简单吗?在我看来,执行速度会更高。 他们为什么要把代码弄得这么复杂?或者他们只是从另一种语言移植过来,没有做任何修改?但我还是想知道为什么在原作中会有这样的复杂情况?这很可能是在原始代码中做的,正是为了加速事情的进展。 在MQL中是否会更快,必须进行测量,"似乎 "在这里不起作用。 Nikolai Semko 2018.06.26 16:10 #22203 Koldun Zloy:这很可能 是为了加速而在原文中做的。 在MQL中是否会更快,必须进行测量,"似乎 "在这里不起作用。"很有可能 "也是不行的。 这样的形式如何能更快地工作?你在说什么!? 多了两个循环,多了一个数组而不是一个变量。 Koldun Zloy 2018.06.27 02:16 #22204 Nikolai Semko: 多了两个循环,多了一个数组而不是一个变量。这种原始的推理方式并不适合现代的处理器。 Nikolai Semko 2018.06.27 05:58 #22205 Koldun Zloy:这种原始的推理方式并不适合现代的处理器。你更清楚。你有更多的经验... Nikolai Semko 2018.06.27 08:40 #22206 Koldun Zloy:这种原始的推理方式并不适合现代的处理器。从本质上讲,我很抱歉,但你有妄想症。 今天存在的任何处理器都不会 for(i=0;i<=npoints-1;i++) 相比之下,速度更快。 for(i=0;i<npoints;i++) 而访问一个数组 永远不会比访问一个简单变量快。 三个相同的循环永远不会比一个组合循环快。 我没有偷懒,直接在原始的ALGLIB中测试了两个不同变体的速度,以免无法证实。 e=0; double tmp1; ulong t=GetMicrosecondCount(); for(i=0;i<npoints;i++) { v=0.0; for(i_=0;i_<nvars;i_++) { tmp1=xy[i][i_]-ct[xyc[i]][i_]; v+=tmp1*tmp1; } e=e+v; } t=GetMicrosecondCount()-t; Print("fast = "+(string)t+" микросекунд, e = "+DoubleToString(e) + " , npoints = " + (string)npoints+" , nvars = " + (string)nvars ); e=0; t=GetMicrosecondCount(); for(i=0;i<=npoints-1;i++) { for(i_=0;i_<=nvars-1;i_++) tmp[i_]=xy[i][i_]; for(i_=0;i_<=nvars-1;i_++) tmp[i_]=tmp[i_]-ct[xyc[i]][i_]; //--- calculation v=0.0; for(i_=0;i_<=nvars-1;i_++) v+=tmp[i_]*tmp[i_]; e=e+v; } t=GetMicrosecondCount()-t; Print("slow = "+(string)t+" микросекунд, e = "+DoubleToString(e) + " , npoints = " + (string)npoints+" , nvars = " + (string)nvars ); 结果。 2018.06.27 04:36:50.265 TestClasses (GBPUSD,M6) fast = 571 микросекунд, e = 534.47773777 , npoints = 1500 , nvars = 40 2018.06.27 04:36:50.266 TestClasses (GBPUSD,M6) slow = 841 микросекунд, e = 534.47773777 , npoints = 1500 , nvars = 40 2018.06.27 04:36:50.630 TestClasses (GBPUSD,M6) fast = 577 микросекунд, e = 531.85904819 , npoints = 1500 , nvars = 40 2018.06.27 04:36:50.631 TestClasses (GBPUSD,M6) slow = 812 микросекунд, e = 531.85904819 , npoints = 1500 , nvars = 40 2018.06.27 04:36:51.143 TestClasses (GBPUSD,M6) fast = 599 микросекунд, e = 537.42685690 , npoints = 1500 , nvars = 40 2018.06.27 04:36:51.144 TestClasses (GBPUSD,M6) slow = 853 микросекунд, e = 537.42685690 , npoints = 1500 , nvars = 40 2018.06.27 04:36:51.955 TestClasses (GBPUSD,M6) fast = 600 микросекунд, e = 531.17444713 , npoints = 1500 , nvars = 40 2018.06.27 04:36:51.956 TestClasses (GBPUSD,M6) slow = 809 микросекунд, e = 531.17444713 , npoints = 1500 , nvars = 40 2018.06.27 04:36:52.344 TestClasses (GBPUSD,M6) fast = 567 микросекунд, e = 540.39509565 , npoints = 1500 , nvars = 40 2018.06.27 04:36:52.344 TestClasses (GBPUSD,M6) slow = 813 микросекунд, e = 540.39509565 , npoints = 1500 , nvars = 40 2018.06.27 04:36:52.857 TestClasses (GBPUSD,M6) fast = 690 микросекунд, e = 550.68494369 , npoints = 1500 , nvars = 40 2018.06.27 04:36:52.858 TestClasses (GBPUSD,M6) slow = 820 микросекунд, e = 550.68494369 , npoints = 1500 , nvars = 40 2018.06.27 04:36:53.229 TestClasses (GBPUSD,M6) fast = 585 микросекунд, e = 547.94313745 , npoints = 1500 , nvars = 40 2018.06.27 04:36:53.230 TestClasses (GBPUSD,M6) slow = 811 микросекунд, e = 547.94313745 , npoints = 1500 , nvars = 40 2018.06.27 04:36:53.736 TestClasses (GBPUSD,M6) fast = 560 микросекунд, e = 568.39404456 , npoints = 1500 , nvars = 40 2018.06.27 04:36:53.737 TestClasses (GBPUSD,M6) slow = 813 микросекунд, e = 568.39404456 , npoints = 1500 , nvars = 40 也就是说,你可以看到速度的提升超过了40%。 附加的文件: dataanalysis.mqh 1150 kb TestClasses.mqh 2762 kb Forester 2018.06.27 09:16 #22207 Nikolai Semko:好吧,从本质上讲,我很抱歉,但你有妄想症。 今天存在的任何处理器都不会 相比之下,速度更快。 而访问一个数组 永远不会比访问一个简单变量快。 三个相同的循环永远不会比一个组合循环快。 我没有偷懒,直接在原始的ALGLIB中测试了两个不同变体的速度,以免无法证实。 结果。 也就是说,你可以看到速度的提升超过了40%。 谢谢你的测试!我认为它不仅在MQL中,而且在所有语言中都会工作得更快。我想到的原因是,编写程序的程序员不仅仅是为程序的运行付费,而是为行数付费。因为一个有500行的程序对客户来说并不像一个有5000行的程序那样令人印象深刻。很遗憾,代码的速度和可读性因此受到影响。 Nikolai Semko 2018.06.27 11:41 #22208 elibrarius: 我认为它不仅在MQL中,而且在所有语言中都会工作得更快。当然。 ruslan 2018.06.28 10:54 #22209 我注意到在登录MQL时,出现了一个错误,在浏览器的状态中,有一个来自Facebook的长篇回答(可能是授权)。 Alexander 2018.07.02 06:56 #22210 SEM:合成的工具。我导入分钟条,每个分钟条相差1点(5位数)。 我关闭了带有符号的窗口,然后重新打开这个窗口,要求从上一次加载的分钟条,我得到了 每一天的符号都是一样的。错误是什么?稳定的播放?什么建筑? 1...221422152216221722182219222022212222222322242225222622272228...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
合成的工具。我导入 分钟条,每个分钟条相差1点(5位数)。
我关闭了带有符号的窗口,然后我重新打开这个窗口,要求从上一次加载的分钟条,我得到了
每一天的符号都是一样的。错误是什么?
翻看Alglib包的代码。它充满了这些结构,使代码 更加难以阅读。
这样不是更简单吗?
在我看来,执行速度会更高。
他们为什么要把代码弄得这么复杂?或者他们只是从另一种语言移植过来,没有做任何修改?但我还是想知道为什么在原作中会有这样的复杂情况?这很可能是在原始代码中做的,正是为了加速事情的进展。
在MQL中是否会更快,必须进行测量,"似乎 "在这里不起作用。
这很可能 是为了加速而在原文中做的。
在MQL中是否会更快,必须进行测量,"似乎 "在这里不起作用。
"很有可能 "也是不行的。
这样的形式如何能更快地工作?你在说什么!?
多了两个循环,多了一个数组而不是一个变量。
Nikolai Semko:
多了两个循环,多了一个数组而不是一个变量。
这种原始的推理方式并不适合现代的处理器。
这种原始的推理方式并不适合现代的处理器。
你更清楚。你有更多的经验...
Koldun Zloy:
这种原始的推理方式并不适合现代的处理器。
从本质上讲,我很抱歉,但你有妄想症。
今天存在的任何处理器都不会
相比之下,速度更快。
而访问一个数组 永远不会比访问一个简单变量快。
三个相同的循环永远不会比一个组合循环快。
我没有偷懒,直接在原始的ALGLIB中测试了两个不同变体的速度,以免无法证实。
结果。
也就是说,你可以看到速度的提升超过了40%。
好吧,从本质上讲,我很抱歉,但你有妄想症。
今天存在的任何处理器都不会
相比之下,速度更快。
而访问一个数组 永远不会比访问一个简单变量快。
三个相同的循环永远不会比一个组合循环快。
我没有偷懒,直接在原始的ALGLIB中测试了两个不同变体的速度,以免无法证实。
结果。
也就是说,你可以看到速度的提升超过了40%。
我想到的原因是,编写程序的程序员不仅仅是为程序的运行付费,而是为行数付费。因为一个有500行的程序对客户来说并不像一个有5000行的程序那样令人印象深刻。很遗憾,代码的速度和可读性因此受到影响。
我认为它不仅在MQL中,而且在所有语言中都会工作得更快。
当然。
合成的工具。我导入分钟条,每个分钟条相差1点(5位数)。
我关闭了带有符号的窗口,然后重新打开这个窗口,要求从上一次加载的分钟条,我得到了
每一天的符号都是一样的。错误是什么?
稳定的播放?什么建筑?