错误、漏洞、问题 - 页 1405 1...139813991400140114021403140414051406140714081409141014111412...3184 新评论 Ilyas 2015.10.19 13:44 #14041 Tapochun: 你能告诉我,当在指标中调用OnCalculate() 时,哪些点差值被传递到点差[]数组?每支蜡烛的最大/最小/平均值? 终端从服务器接收的那些。 A100 2015.10.19 15:53 #14042 出现了一个关于.dll加载顺序的问题。如果宣布#import "Test1.dll" //1 #import "Test2.dll" //2 #import 它们将以相反的顺序被加载,即先加载"Test2.dll"。看来,这两者是有区别的。事实证明,这有区别,在某些情况下(.dll需要一定的加载顺序)会失败。萨博特加载'Test1.dll'。 问题 是,是否将负载顺序改为直接,从代码的角度来看,这将是更合理的--或者确保这个顺序在未来不会被改变(这样,调整到反向顺序的代码不会突然停止工作)。目前,我们需要将代码调整为相反的顺序。 A100 2015.10.19 17:08 #14043 建1191。编译错误: 代码生成错误我甚至不知道该去哪里找原因。但在构建1162中,一切都很好。 Alexander 2015.10.19 17:11 #14044 A100:建1191。编译错误: 代码生成错误我甚至不知道该去哪里找原因。但在构建1162中,一切都很好。 请将代码发送到servicedesk。 A100 2015.10.19 17:29 #14045 Alexander: 请将代码发送到servicedesk。它的分布很广--我将尝试把它全部放在一个文件里。其他代码 - 注意时间 - 它可能是20倍大 Alexey Navoykov 2015.10.19 19:31 #14046 Ilyas:迄今为止,已知有两例。 1) 在bool &=操作中(bool表达式)。 2) 在初始化序列 中多了一个逗号: val={ {...},{...},}这是第一种情况--我的代码中有很多这样的操作。 我以前使用1159版本时没有问题。 我们什么时候可以期待修正? Ruslan Khasanov 2015.10.19 19:49 #14047 代码生成错误我把源代码发给了servicedesk:#1332553 A100 2015.10.20 00:12 #14048 Alexander: 请将代码发送到servicedesk。代码生成错误 //build 1191 class A {}; class B : public A {}; void f( A& a ) {} B *h() { return new B; } void OnStart() { f( h() ); } 请注意不要像我描述的那样,最后被装在口袋里。如果你能做到没有*,因为它现在和以前在下面的例子中都是有效的//build 1191 class A {}; void f( A& a ) {} A *h() { return new A; } void OnStart() { f( h() ); //нормально f( *h() ); //нормально } 请这样做,如果不这样做--也许在你开始使用创新之前,将所有东西都回滚是有意义的。 关于交易、自动交易系统和策略测试的论坛 虫子,虫子,问题 A100, 2015.08.26 10:35 事实上,你正在提供一个简单而直接的条目a = (b + c) - d*e + f; 用*a = (*b + *c) - *d**e + *f;,而这是为了什么?这样,你就可以写bool c = *a == *b;而一个特殊的函数可以用来比较指针是否相等,而所有其他与指针有关的算术运算(加法、减法、乘法等)本身没有任何意义,只是在能够重载的情况下才有意义。只有通过创建一个数学基类和派生类,重新定义几个(而不是一两个)算术运算,使它们成为虚拟的,然后在它们的基础上测试复杂的表达式(不仅仅是a = b + c)--只有这样才能使你更接近于理解现在的一切都在优化进行。同时,你的推理是在一个入门级别。如果你把平等指针比较纳入一个单独的函数,你就只剩下一个(!)瓶颈了class A {}; A *a = b; //однозначно присвоение указателю значения a = b; //неоднозначно 然而,这也应该被视为一个赋值,而不是一个operator=()的调用,因为目前没有其他的语法来给指针赋值,而a.operator=( b )也可以明确调用 Renat Fatkhullin 2015.10.20 01:50 #14049 A100: 其他代码--注意时间--它肯定增长了20倍 这是一个用于MQL5的新的优化编译器(MQL4没有这个功能)。 你必须为更好的目标代码和更长的编译时间付费。一些由数百行组成的长函数是很难优化的。 Alexey Navoykov 2015.10.20 02:29 #14050 Renat Fatkhullin:这就是MQL5的新优化编译器的工作原理(MQL4中没有)。 为了获得更好的目标代码,你必须为更长的编译时间付费。一些长的函数,由数百行组成,它的优化非常顽固。这真的有必要吗? 这种 "高质量的代码 "的代价是不是太高了? 为了一个相对较小的性能增益而使编译速度降低几十倍......更重要的是,在许多情况下,这种收益并不十分重要,而延长编译时间对程序员来说是一种折磨。让 "调试 "和 "发布 "的编译选项不是更好吗? 1...139813991400140114021403140414051406140714081409141014111412...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你能告诉我,当在指标中调用OnCalculate() 时,哪些点差值被传递到点差[]数组?每支蜡烛的最大/最小/平均值?
出现了一个关于.dll加载顺序的问题。如果宣布
它们将以相反的顺序被加载,即先加载"Test2.dll"。看来,这两者是有区别的。事实证明,这有区别,在某些情况下(.dll需要一定的加载顺序)会失败。萨博特加载'Test1.dll'。
问题 是,是否将负载顺序改为直接,从代码的角度来看,这将是更合理的--或者确保这个顺序在未来不会被改变(这样,调整到反向顺序的代码不会突然停止工作)。目前,我们需要将代码调整为相反的顺序。
建1191。编译错误: 代码生成错误
我甚至不知道该去哪里找原因。但在构建1162中,一切都很好。
建1191。编译错误: 代码生成错误
我甚至不知道该去哪里找原因。但在构建1162中,一切都很好。
请将代码发送到servicedesk。
它的分布很广--我将尝试把它全部放在一个文件里。
其他代码 - 注意时间 - 它可能是20倍大
迄今为止,已知有两例。
1) 在bool &=操作中(bool表达式)。
2) 在初始化序列 中多了一个逗号: val={ {...},{...},}
这是第一种情况--我的代码中有很多这样的操作。 我以前使用1159版本时没有问题。 我们什么时候可以期待修正?
代码生成错误
我把源代码发给了servicedesk:#1332553
请将代码发送到servicedesk。
代码生成错误
请注意不要像我描述的那样,最后被装在口袋里。如果你能做到没有*,因为它现在和以前在下面的例子中都是有效的
请这样做,如果不这样做--也许在你开始使用创新之前,将所有东西都回滚是有意义的。关于交易、自动交易系统和策略测试的论坛
虫子,虫子,问题
A100, 2015.08.26 10:35
事实上,你正在提供一个简单而直接的条目
用,而这是为了什么?这样,你就可以写而一个特殊的函数可以用来比较指针是否相等,而所有其他与指针有关的算术运算(加法、减法、乘法等)本身没有任何意义,只是在能够重载的情况下才有意义。
只有通过创建一个数学基类和派生类,重新定义几个(而不是一两个)算术运算,使它们成为虚拟的,然后在它们的基础上测试复杂的表达式(不仅仅是a = b + c)--只有这样才能使你更接近于理解现在的一切都在优化进行。同时,你的推理是在一个入门级别。
如果你把平等指针比较纳入一个单独的函数,你就只剩下一个(!)瓶颈了
然而,这也应该被视为一个赋值,而不是一个operator=()的调用,因为目前没有其他的语法来给指针赋值,而a.operator=( b )也可以明确调用其他代码--注意时间--它肯定增长了20倍
这是一个用于MQL5的新的优化编译器(MQL4没有这个功能)。
你必须为更好的目标代码和更长的编译时间付费。一些由数百行组成的长函数是很难优化的。
这就是MQL5的新优化编译器的工作原理(MQL4中没有)。
为了获得更好的目标代码,你必须为更长的编译时间付费。一些长的函数,由数百行组成,它的优化非常顽固。
这真的有必要吗? 这种 "高质量的代码 "的代价是不是太高了? 为了一个相对较小的性能增益而使编译速度降低几十倍......更重要的是,在许多情况下,这种收益并不十分重要,而延长编译时间对程序员来说是一种折磨。
让 "调试 "和 "发布 "的编译选项不是更好吗?