错误、漏洞、问题 - 页 3129 1...312231233124312531263127312831293130313131323133313431353136...3184 新评论 x572intraday 2021.12.28 15:28 #31281 Alexey Viktorov #:在你的案例中,情况并非如此,因为两个条件都必须满足。但如果你把这个 那么,是的。如果条件 "a "得到满足,第二个条件将不会被检查。他们已经为之奋斗了很多年,现在你却提议回到上个世纪...... 奇怪的是,在a=true的情况下,不仅在||处,而且在&&处,都没有对其余部分进行检查。否则你怎么解释(不要在指标的操作中寻找意义,我们在这里说的是代码)。 #property indicator_chart_window #property indicator_buffers 1 #property indicator_plots 1 #property indicator_type1 DRAW_ARROW #property indicator_color1 Gray #property indicator_label1 "Fractal Up" //--- indicator buffers double ExtUpperBuffer[]; //--- 10 pixels upper from high price int ExtArrowShift=-10; void OnInit() { //--- indicator buffers mapping SetIndexBuffer(0,ExtUpperBuffer,INDICATOR_DATA); IndicatorSetInteger(INDICATOR_DIGITS,_Digits); //--- sets first bar from what index will be drawn PlotIndexSetInteger(0,PLOT_ARROW,217); //--- arrow shifts when drawing PlotIndexSetInteger(0,PLOT_ARROW_SHIFT,ExtArrowShift); //--- sets drawing line empty value-- PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE); } int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { if(rates_total<5) return(0); int start; //--- clean up arrays if(prev_calculated<7) { start=2; ArrayInitialize(ExtUpperBuffer,EMPTY_VALUE); } else start=rates_total-5; for(int i=start; i<rates_total-3 && !IsStopped(); i++) { //--- Upper Fractal if(high[i]>high[i+1] && high[i]>high[i+2] && high[i]>high[i+3] && high[i]>high[i+4]) ExtUpperBuffer[i]=high[i]; else ExtUpperBuffer[i]=EMPTY_VALUE; } return(rates_total); } 终端是无声的。但如果你改变 if(high[i]>high[i+1] && high[i]>high[i+2] && high[i]>high[i+3] && high[i]>high[i+4]) 至 if(high[i]>high[i+4] && high[i]>high[i+2] && high[i]>high[i+3] && high[i]>high[i+1]) 程序员改变了它,出现了臭名昭著的"数组超出范围"的信息,因为程序员 立即偶然发现了一个索引过大的数组,这与第一种情况不同。 Lilita Bogachkova 2021.12.28 15:39 #31282 x572intraday #:我不敢说这是个错误。所以我只想说,我注意到if 语句的一个特殊性。我怀疑这可能也适用于其他语言。如果a为真,检查跳到Array[over_index],这里终端开始崩溃,通过'数组超出范围'的部分,这是非常真实的。但是如果a变成了假的,终端就不会检查Array[over_index]条件,因此也就不会检查索引冗余,如果 会进一步跳过,而编码者就不会知道在他的程序中存在一个索引不存在的数组......或者说是一个现有的但多余的。也许应该有一个修复方法,以便对"数组超出范围" 的检查会进行到if 循环的最后,并输出相同的信息?或者它将大大降低操作者的速度? 在什么语言中,句法是不同的?"句法的字面意思是不仅要作曲,而且要安排......"。 如果你想检查是否有一个"数组超出范围",改变排序。 if(Array[over_index]>val && a) {...} Vitaly Muzichenko 2021.12.28 15:44 #31283 Lilita Bogachkova #:在什么语言中,句法是不同的?"句法从字面上看,不仅是指作曲,而且是指排序......"。如果你想检查是否有一个"数组超出范围",改变顺序。 订购是可取的,因为你需要检查。 例如,如果'a'的变化比较频繁,最好把它作为第一个参数。 Lilita Bogachkova 2021.12.28 15:46 #31284 Vitaly Muzichenko #:秩序是可取的,因为检查是必要的。例如,如果 "a "的变化比较频繁,最好把它作为第一个参数。不,第一个取决于主要条件,其他只是附加条件。 例如,如果工作时间还没有开始,检查当前工作时间的小时数是不相关的。 x572intraday 2021.12.28 15:51 #31285 事实上,我是偶然发现这个功能的。这不是我想要的...。 if(high[i]>high[i+1] && high[i]>high[i+2] && high[i]>high[i+3] && ... && high[i]>high[i+n]) 或 if(high[i]>high[i+1]) if(high[i]>high[i+2]) if(high[i]>high[i+3]) if(...) if(high[i]>high[i+n]) 麻烦的是,n可能相当大,所以我想把这一长串的条件包起来,变成一个紧凑的为。我是这样试的。 for(int i=start; i<rates_total-3 && !IsStopped(); i++) { bool h_plus=true; //false? for(int increment=1; increment<=n; increment++) h_plus&=high[i]>high[i+increment]; if(h_plus) {...} ... } 但结果是有点乱。至少因为采用这种算法的h_plus将不得不采取整个检查条件的总和,包括检查多余的索引数组的条件,这在第一个解包的if 中没有发生,没有for。而其他清漆则破坏了画面。 这甚至值得考虑吗?有可能做到这一点吗? x572intraday 2021.12.28 15:52 #31286 Lilita Bogachkova #:在什么语言中,句法是不同的?"句法从字面上看,不仅是指作曲,而且是指排序......"。如果你想检查是否有一个"数组超出范围",就改变顺序。 你并不总是事先知道该把什么放在前面,把什么放在后面。 Vitaly Muzichenko 2021.12.28 15:53 #31287 Lilita Bogachkova #:不,第一个决定了基本条件,其他的只是附加条件。 例如,如果工作时间还没有开始,检查当前工作时间的小时数是不相关的。 是的,首先我们检查信号条件,通过阵列和比较,检查当前价格,然后发现时间不对,但在此之前,要进行很多复杂的操作。 对吗? Lilita Bogachkova 2021.12.28 15:56 #31288 Vitaly Muzichenko #:是的,首先我们检查信号条件,通过阵列和比较,检查当前价格,然后发现时间不对,但在这之前已经做了很多复杂的动作。对吗?对, 你不应该这样做。 Alexey Viktorov 2021.12.28 16:06 #31289 Vitaly Muzichenko #:检查 谁告诉你上述条件中的 "a "总是假的? Alexey Viktorov 2021.12.28 16:18 #31290 x572intraday #:事实上,我是偶然发现这个功能的。这不是我想要的...。或麻烦的是,n可能相当大,所以我想把这一长串的条件包起来,变成一个紧凑的为。我是这样试的。但结果是有点乱。至少因为采用这种算法的h_plus将不得不采取整个检查条件的总和,包括检查多余的索引数组的条件,这在第一个解包的if 中没有发生,没有for。而其他清漆则破坏了画面。这甚至值得考虑吗?有可能过度换吗? 以下是我完全不明白的代码 for(int i=start; i<rates_total-3 && !IsStopped(); i++) { bool h_plus=true; //false? for(int increment=1; increment<=n; increment++) h_plus&=high[i]>high[i+increment]; if(h_plus) {...} ... } 这段代码中的标记&是什么意思?那么应该在哪个循环中执行if(h_plus)?你没有错过任何弯曲的支架吗? 1...312231233124312531263127312831293130313131323133313431353136...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
在你的案例中,情况并非如此,因为两个条件都必须满足。但如果你把这个
那么,是的。如果条件 "a "得到满足,第二个条件将不会被检查。他们已经为之奋斗了很多年,现在你却提议回到上个世纪......奇怪的是,在a=true的情况下,不仅在||处,而且在&&处,都没有对其余部分进行检查。否则你怎么解释(不要在指标的操作中寻找意义,我们在这里说的是代码)。
终端是无声的。但如果你改变
至
程序员改变了它,出现了臭名昭著的"数组超出范围"的信息,因为程序员 立即偶然发现了一个索引过大的数组,这与第一种情况不同。
我不敢说这是个错误。所以我只想说,我注意到if 语句的一个特殊性。我怀疑这可能也适用于其他语言。
如果a为真,检查跳到Array[over_index],这里终端开始崩溃,通过'数组超出范围'的部分,这是非常真实的。但是如果a变成了假的,终端就不会检查Array[over_index]条件,因此也就不会检查索引冗余,如果 会进一步跳过,而编码者就不会知道在他的程序中存在一个索引不存在的数组......或者说是一个现有的但多余的。
也许应该有一个修复方法,以便对"数组超出范围" 的检查会进行到if 循环的最后,并输出相同的信息?或者它将大大降低操作者的速度?
在什么语言中,句法是不同的?"句法的字面意思是不仅要作曲,而且要安排......"。
如果你想检查是否有一个"数组超出范围",改变排序。
if(Array[over_index]>val && a) {...}
在什么语言中,句法是不同的?"句法从字面上看,不仅是指作曲,而且是指排序......"。
如果你想检查是否有一个"数组超出范围",改变顺序。
订购是可取的,因为你需要检查。
例如,如果'a'的变化比较频繁,最好把它作为第一个参数。
秩序是可取的,因为检查是必要的。
例如,如果 "a "的变化比较频繁,最好把它作为第一个参数。
不,第一个取决于主要条件,其他只是附加条件。
例如,如果工作时间还没有开始,检查当前工作时间的小时数是不相关的。事实上,我是偶然发现这个功能的。这不是我想要的...。
或
麻烦的是,n可能相当大,所以我想把这一长串的条件包起来,变成一个紧凑的为。我是这样试的。
但结果是有点乱。至少因为采用这种算法的h_plus将不得不采取整个检查条件的总和,包括检查多余的索引数组的条件,这在第一个解包的if 中没有发生,没有for。而其他清漆则破坏了画面。
这甚至值得考虑吗?有可能做到这一点吗?
在什么语言中,句法是不同的?"句法从字面上看,不仅是指作曲,而且是指排序......"。
如果你想检查是否有一个"数组超出范围",就改变顺序。
你并不总是事先知道该把什么放在前面,把什么放在后面。
不,第一个决定了基本条件,其他的只是附加条件。
例如,如果工作时间还没有开始,检查当前工作时间的小时数是不相关的。是的,首先我们检查信号条件,通过阵列和比较,检查当前价格,然后发现时间不对,但在此之前,要进行很多复杂的操作。
对吗?
是的,首先我们检查信号条件,通过阵列和比较,检查当前价格,然后发现时间不对,但在这之前已经做了很多复杂的动作。
对吗?
检查
谁告诉你上述条件中的 "a "总是假的?
事实上,我是偶然发现这个功能的。这不是我想要的...。
或
麻烦的是,n可能相当大,所以我想把这一长串的条件包起来,变成一个紧凑的为。我是这样试的。
但结果是有点乱。至少因为采用这种算法的h_plus将不得不采取整个检查条件的总和,包括检查多余的索引数组的条件,这在第一个解包的if 中没有发生,没有for。而其他清漆则破坏了画面。
这甚至值得考虑吗?有可能过度换吗?
以下是我完全不明白的代码
这段代码中的标记&是什么意思?那么应该在哪个循环中执行if(h_plus)?你没有错过任何弯曲的支架吗?