错误、漏洞、问题 - 页 3149 1...314231433144314531463147314831493150315131523153315431553156...3184 新评论 Artyom Trishkin 2022.02.07 10:15 #31481 Vladimir Karputov #:第1步:使用 "MQL5向导 "创建一个模板。第2步:正确拼写'limit',并使用close数组--而不是iClose调用!!。结果。并且没有错误。 谁说这是唯一正确的极限和指标计算? 我们正在讨论另一种极限计算和指标本身--从左到右--从历史的开始到现在。它更简单、更明显。 在这样的计算极限中(int limit = rates_total - prev_calculated; if(limit>1) limit=rates_total-1;)所有关于 是否为当前勾股。 是否是新酒吧开业。 是否是历史数据的变化。 如果当前的tick(limit==0),那么for(int i=limit; i>=0; i--) { // .}将在每一个新的刻度线上计算指标,只有零条会被重新计算。 如果我们开了一个新栏(limit==1),那么for(int i=limit; i>=0; i--) { // ...}将执行第一条和零条的计算--前一条和新开条。 如果这个历史变化(limit>1),那么for(int i=limit; i>=0; i--) { // ...}将对所有可用的历史记录进行全面的重新计算指标(历史记录在某处被改变)。 Nikolai Semko 2022.02.07 10:21 #31482 TheXpert #: 这有什么区别呢? 能不能小于零? 是的,我有(添加到以前的帖子)。 Roman 2022.02.07 10:30 #31483 Artyom是唯一理解这个问题的人。 但显然,这个问题是永远的。 而现在只有 "如果"。 Artyom Trishkin 2022.02.07 10:38 #31484 Roman #: 只有阿尔乔姆明白这个问题。但显然,这个问题是永远的。而现在只有 "如果"。 不,我没有得到它。澄清我的理解... Nikolai Semko 2022.02.07 10:41 #31485 Vladimir Karputov #: int limit=prev_calculated-1; if(prev_calculated==0) limit=0; for(int i=limit; i<rates_total; i++) { CloseBuffer[i]=close[i]; } 三元运算符看起来更简明(IMHO)。 int limit = prev_calculated==0 ? 0: prev_calculated-1; 此外,正如我所说的,如果出了问题,prev_calculated结果比rate_total高,怎么办? 我遇到了这样的情况,当窗口中的最大条数是!=无限的,但比如说50000。在这种情况下,每一个新的条形阵列的大小将增加1,但在某个时刻它又会变成50000。我不明白这个逻辑。我在几年前抓住了这个机会。现在需要检查一下。我将在我的VPS上设置一个解锁。 Roman 2022.02.07 10:43 #31486 Artyom Trishkin #:不,我没有得到它。澄清我的理解... 暂时不能像以前那样工作 limit==0 for ticks i>=0 for bars i>0 你上面写的都是正确的,,只是对于新的条形图误印了for(int i=limit; i>=0; i--) 这里不需要运算符=,但可能在过去,,除非他们返回以前的行为。 Artyom Trishkin 2022.02.07 10:50 #31487 Roman #:暂时不能像以前那样工作limit==0 for ticks i>=0 for bars i>0你上面写的都是正确的,,只是对于一个新的条形图误印了for(int i=limit; i>=0; i--) 这里运算符=是不需要的,但可能是在过去,,除非他们返回以前的行为。 我又一次不明白什么。它有什么问题?一切似乎都和以前一样了。 Roman 2022.02.07 11:02 #31488 Artyom Trishkin #:我又不明白了。它有什么问题?一切似乎都和以前一样了。 有了这个设计。 int limit = rates_total-prev_calculated; for(int i=limit; i>=0; i--) 指示器缓冲区超出了范围。 请给我看一个周期i>=0的ticks 的例子 也许我忘记了什么,做错了。 TheXpert 2022.02.07 11:06 #31489 Roman #:有了这个设计,指标缓冲区就出界了。 一直都是这样。 Nikolai Semko 2022.02.07 11:08 #31490 Roman #:有了这个设计。 指示器缓冲区超出了范围。请给我看一个周期i>=0的ticks 的例子 也许我忘记了我做错了什么。 我已经写过,在这个结构中,你是用rate_total访问缓冲区的索引(当prev_calculated == 0时)。,这是一个溢出,因为rate_total是缓冲区的大小,其最后一个元素rate_total-1。 1...314231433144314531463147314831493150315131523153315431553156...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
第1步:使用 "MQL5向导 "创建一个模板。
第2步:正确拼写'limit',并使用close数组--而不是iClose调用!!。
结果。
并且没有错误。
谁说这是唯一正确的极限和指标计算?
我们正在讨论另一种极限计算和指标本身--从左到右--从历史的开始到现在。它更简单、更明显。
在这样的计算极限中(int limit = rates_total - prev_calculated; if(limit>1) limit=rates_total-1;)所有关于
如果当前的tick(limit==0),那么for(int i=limit; i>=0; i--) { // .}将在每一个新的刻度线上计算指标,只有零条会被重新计算。
如果我们开了一个新栏(limit==1),那么for(int i=limit; i>=0; i--) { // ...}将执行第一条和零条的计算--前一条和新开条。
如果这个历史变化(limit>1),那么for(int i=limit; i>=0; i--) { // ...}将对所有可用的历史记录进行全面的重新计算指标(历史记录在某处被改变)。
这有什么区别呢? 能不能小于零?
是的,我有(添加到以前的帖子)。
但显然,这个问题是永远的。
而现在只有 "如果"。
只有阿尔乔姆明白这个问题。但显然,这个问题是永远的。而现在只有 "如果"。
不,我没有得到它。澄清我的理解...
三元运算符看起来更简明(IMHO)。
此外,正如我所说的,如果出了问题,prev_calculated结果比rate_total高,怎么办?
我遇到了这样的情况,当窗口中的最大条数是!=无限的,但比如说50000。在这种情况下,每一个新的条形阵列的大小将增加1,但在某个时刻它又会变成50000。我不明白这个逻辑。我在几年前抓住了这个机会。现在需要检查一下。我将在我的VPS上设置一个解锁。
不,我没有得到它。澄清我的理解...
暂时不能像以前那样工作
limit==0
for ticks i>=0
for bars i>0
你上面写的都是正确的,
,只是对于新的条形图误印了for(int i=limit; i>=0; i--)
这里不需要运算符=,但可能在过去,
,除非他们返回以前的行为。
暂时不能像以前那样工作
limit==0
for ticks i>=0
for bars i>0
你上面写的都是正确的,
,只是对于一个新的条形图误印了for(int i=limit; i>=0; i--)
这里运算符=是不需要的,但可能是在过去,
,除非他们返回以前的行为。
我又一次不明白什么。它有什么问题?一切似乎都和以前一样了。
我又不明白了。它有什么问题?一切似乎都和以前一样了。
有了这个设计。
指示器缓冲区超出了范围。
请给我看一个周期i>=0的ticks 的例子
也许我忘记了什么,做错了。
有了这个设计
,指标缓冲区就出界了。
有了这个设计。
指示器缓冲区超出了范围。
请给我看一个周期i>=0的ticks 的例子
也许我忘记了我做错了什么。
我已经写过,在这个结构中,你是用rate_total访问缓冲区的索引(当prev_calculated == 0时)。
,这是一个溢出,因为rate_total是缓冲区的大小,其最后一个元素rate_total-1。