错误、漏洞、问题 - 页 3032 1...302530263027302830293030303130323033303430353036303730383039...3184 新评论 Alexey Viktorov 2021.05.28 16:37 #30311 Andrey Dik:谢谢你,安德鲁。你是唯一一个完全理解这个问题的人。现在一切都在按计划进行,指标在第一次运行时只完全计算了一次,然后每次在其新条上只计算一次。第二个指标的最终代码希望能对某人有用。以下是你应该想到的开头内容 关于交易、自动交易系统和策略测试的论坛 虫子、虫子、问题 Alexey Viktorov, 2021.05.28 08:36 这个检查是为了什么? //проверка готовности данных и индикатора на другом TF if (SeriesInfoInteger (Symbol (), tf, SERIES_SYNCHRONIZED)) { if (iBars (Symbol (), tf) != BarsCalculated (handleFr)) return 0; } else return 0; 在没有任何条件的情况下,写成return 0;会更容易。 在每一个新的条形图上,条件将被满足,所有条形图将被重新计算,而不考虑同步性。你写了一个考虑不周的代码,并假装它是一个终端错误... 而伊戈尔-马卡努在更早的时候就说过这句话...... Slava 2021.05.29 16:16 #30312 我想提醒你。 1.对于每个符号,至少有一个图表是开放的,有一个单独的线程来处理进入的ticks。一些符号的几个图表可以被打开,但仍然只有一个线程。 2.符号线程不处理图表,而是处理时间序列。也就是提交给CopyRates请求的同样的数据数组。 3.在OnTick或OnCalculate 中询问你的符号是否同步是没有用的。当然是这样! 4.所有时间序列都按顺序处理,从低到高。首先,我们应用刻度线,然后计算所有指标,在这个时间序列创建。如果你从指标中询问同一H1符号的数据,在M1上工作,你将永远不会得到应用tick的数据。无论你运用什么技巧,数据都会往后退一个刻度。因为每个符号有一个线程,有连续的时间框架处理。 5.前面的说法并不适用于EA和脚本,因为EA和脚本各自在自己的独立线程中工作。 Vladimir Pastushak 2021.05.29 16:49 #30313 Slava:我想提醒你。1.对于每个符号,至少有一个图表是开放的,有一个单独的线程来处理进入的ticks。一些符号的几个图表可以打开,但反正只有一个线程。2.符号线程处理时间序列,而不是图表。也就是提交给CopyRates请求的同样的数据数组。3.在OnTick或OnCalculate 中询问你的符号是否同步是没有用的。当然是这样!4.所有时间序列都按顺序处理,从低到高。首先,应用刻度线,然后计算所有指标,在这个时间序列上创建。如果你从指标中询问同一符号H1的数据,在M1上工作,你将永远不会得到应用tick的数据。无论你运用什么技巧,数据都会往后退一个刻度。因为每个符号有一个线程,有连续的时间框架处理。5.前面的声明不涉及专家顾问和脚本,因为专家顾问和脚本在他们自己的独立线程中工作。 请给我发更多像这样的详细提醒!谢谢你! Aleksey Vyazmikin 2021.05.29 22:18 #30314 Slava:我想提醒你。4.所有的时间序列都按顺序处理,从最低到最高。首先是tick应用,然后是在这个时间序列上创建的所有指标的计算。如果你要求从一个指标中获得同一H1符号的数据,在M1上工作,你将永远不会得到有应用刻度的数据。无论你运用什么技巧,数据都会往后退一个刻度。因为每个符号有一个线程,有连续的时间框架处理。5.前面的说法并不适用于EA和脚本,因为EA和脚本各自在自己的独立线程中工作。 我的理解是否正确,如果一个在M1上工作的EA在M1(或任何其他TF)上使用一个从上层TF获取数据的指标,那么在新条形图的第一个刻度上,它在任何情况下都无法返回实际值,因为计算上层TF的队列将在n个刻度后到达? 我只是面对这样的行为,在指标中寻找问题,现在发现应该是这样的。但如果是这样,就会严重干扰测试,因为在OHLC模式下测试时,我必须跳过一些关键的点。 Igor Makanu 2021.05.30 02:44 #30315 Slava:2.符号流不处理图形,而是处理时间序列。就是说,给CopyRates请求的数据数组就是....4.所有时间序列都按顺序处理,从低到高。首先是应用刻度线,然后是计算所有指标,在这个时间序列上创建。如果你要求从一个指标中获得同一H1符号的数据,在M1上工作,你将永远不会得到有应用刻度的数据。无论你运用什么技巧,数据都会往后退一个刻度。因为每个符号有一个线程,有连续的时间框架处理。 为什么我切换TF的时候会出现黑色的 "更新 "屏幕? 打开我之前使用的图表(欧元兑美元的H1),离开指标,2-3分钟什么都没做,然后切换到较低的图表(M30...M1),黑屏 "更新 "可能出现10秒钟。 而这个黑屏取决于构建--当终端没有黑屏时,当它真的让我恼火时,因为你清楚地知道加载的是什么历史,你只需要向终端呈现一个图表,为什么要等待这个黑屏? 例如,如果指标在M5上运行,每30分钟调用H1上的指标,CopyBuffer()是否总能从H1上获得正确的数据? 或者不是一个事实,因此在H1的每一个刻度 上 "拉动指标"(还没有考虑连接的断裂)。 Aleksei Skrypnev 2021.05.30 09:59 #30316 如何处理一个循环/函数中的变量到另一个函数中? 能否使能见度更加全球化? Andrey Dik 2021.05.30 12:32 #30317 Igor Makanu:为什么切换TF时出现黑色的 "更新 "屏幕?打开我之前使用的图表(欧元兑美元的H1),离开指标,2-3分钟什么都没做,然后切换到较低的图表(M30...M1),可能出现10秒钟的 "黑屏更新"而这个黑屏取决于构建--当终端没有黑屏时,当它真的让我恼火时,因为你清楚地知道加载的是什么历史,你只需要向终端呈现一个图表,为什么要等待这个黑屏?例如,如果指标在M5上运行,每30分钟调用H1上的指标,CopyBuffer()是否总能从H1上获得正确的数据? 或者不是一个事实,因此在H1的每一个tick 上 "拉动指标"(我们还没有考虑连接中断的变体)。 我认为,根据斯拉瓦的话,这不是一个事实。 由于所有的计算都只在tick上进行,绑定的指标链可能无法完成,我们将不得不等待下一个tick。 但也有一些有趣的问题,我在文档中没有找到答案。 如果没有嘀嗒声,该怎么办? 如果你放置一个在当前时间框架内工作的指标,它将被顺利绘制,而且有趣的是--它不需要接收嘀嗒声!但如果该指标要求从另一个时间框架获得数据,它将不会做任何事情,直到一个新的嘀嗒声到来,而没有嘀嗒声到来--周末 如果我们在定时器中调用ChartRedraw(ChartID()),那么对于某些评论(cnt);其中cnt递增1,我们看到cnt在屏幕上正常工作,但指标没有被绘制。 当我用上下文菜单中的刷新按钮刷新屏幕时,指标从头到尾被重新绘制。 但只要你用 "刷新 "按钮 刷新屏幕,指标就会顺利绘制。 HH 你的第二个指标的例子可以使用,但专家的代码更快。 Igor Makanu 2021.05.30 13:25 #30318 Andrey Dik:如果你把一个指标放在当前的TF上工作,它将毫无问题地被画出来,而且有趣的是--嘀嗒声的到来对这一点是没有要求的! 没必要 当你在图表上绘制指标时,有一个严格定义的调用顺序:OnInit()和立即OnCalculated()。也就是说,第一个OnCalculated()是在收到tick之前调用的,这就是为什么prev_calc 需要与0 比较。 Andrey Dik: 事实证明,ChartRedraw()和Update by button并不是一回事,尽管我可以反过来想。 最有可能的是,你应该使用ChartSetSymbolPeriod(),参数为NULL 和当前周期,应该有帮助。 Andrey Dik 2021.05.30 17:43 #30319 Igor Makanu:最有可能的是,你应该使用ChartSetSymbolPeriod(),参数为NULL 和当前周期,应该有帮助。 设置符号周期(ChartSetSymbolPeriod) 使用相同符号和时间框架的ChartSetSymbolPeriod调用可以用来刷新图表(类似于终端中的Refresh命令)。图表的刷新,反过来又会触发附属于它的指标的重新计算。因此,你可以在图表上重新计算指标,即使在没有刻度的时候(例如周末)。 我现在还记得,普希金曾经说过。 哦,有多少奇妙的发现,为我们 开明的精神做准备,还有经验,艰难错误的儿子,,天才,悖论的朋友,,机会,上帝的发明者。 Slava 2021.05.30 17:47 #30320 Andrey Dik:当滴答声没有到来时(例如周末)该怎么办? 如果指标在当前的时间框架内工作,它将顺利绘制,而且有趣的是--它不需要滴答声来!但如果指标要求从另一个时间框架获得数据,它不能做任何事情,直到新的滴答声到来,而它没有到来--周末 从另一个时间框架中,将获得目前已经准备好的数据。因此,在输出中,所有的数据将完全同步。 1...302530263027302830293030303130323033303430353036303730383039...3184 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
谢谢你,安德鲁。你是唯一一个完全理解这个问题的人。
现在一切都在按计划进行,指标在第一次运行时只完全计算了一次,然后每次在其新条上只计算一次。
第二个指标的最终代码希望能对某人有用。
以下是你应该想到的开头内容
关于交易、自动交易系统和策略测试的论坛
虫子、虫子、问题
Alexey Viktorov, 2021.05.28 08:36
这个检查是为了什么?
在没有任何条件的情况下,写成return 0;会更容易。
在每一个新的条形图上,条件将被满足,所有条形图将被重新计算,而不考虑同步性。你写了一个考虑不周的代码,并假装它是一个终端错误...
我想提醒你。
1.对于每个符号,至少有一个图表是开放的,有一个单独的线程来处理进入的ticks。一些符号的几个图表可以被打开,但仍然只有一个线程。
2.符号线程不处理图表,而是处理时间序列。也就是提交给CopyRates请求的同样的数据数组。
3.在OnTick或OnCalculate 中询问你的符号是否同步是没有用的。当然是这样!
4.所有时间序列都按顺序处理,从低到高。首先,我们应用刻度线,然后计算所有指标,在这个时间序列创建。如果你从指标中询问同一H1符号的数据,在M1上工作,你将永远不会得到应用tick的数据。无论你运用什么技巧,数据都会往后退一个刻度。因为每个符号有一个线程,有连续的时间框架处理。
5.前面的说法并不适用于EA和脚本,因为EA和脚本各自在自己的独立线程中工作。
我想提醒你。
1.对于每个符号,至少有一个图表是开放的,有一个单独的线程来处理进入的ticks。一些符号的几个图表可以打开,但反正只有一个线程。
2.符号线程处理时间序列,而不是图表。也就是提交给CopyRates请求的同样的数据数组。
3.在OnTick或OnCalculate 中询问你的符号是否同步是没有用的。当然是这样!
4.所有时间序列都按顺序处理,从低到高。首先,应用刻度线,然后计算所有指标,在这个时间序列上创建。如果你从指标中询问同一符号H1的数据,在M1上工作,你将永远不会得到应用tick的数据。无论你运用什么技巧,数据都会往后退一个刻度。因为每个符号有一个线程,有连续的时间框架处理。
5.前面的声明不涉及专家顾问和脚本,因为专家顾问和脚本在他们自己的独立线程中工作。
请给我发更多像这样的详细提醒!谢谢你!
我想提醒你。
4.所有的时间序列都按顺序处理,从最低到最高。首先是tick应用,然后是在这个时间序列上创建的所有指标的计算。如果你要求从一个指标中获得同一H1符号的数据,在M1上工作,你将永远不会得到有应用刻度的数据。无论你运用什么技巧,数据都会往后退一个刻度。因为每个符号有一个线程,有连续的时间框架处理。
5.前面的说法并不适用于EA和脚本,因为EA和脚本各自在自己的独立线程中工作。
我的理解是否正确,如果一个在M1上工作的EA在M1(或任何其他TF)上使用一个从上层TF获取数据的指标,那么在新条形图的第一个刻度上,它在任何情况下都无法返回实际值,因为计算上层TF的队列将在n个刻度后到达?
我只是面对这样的行为,在指标中寻找问题,现在发现应该是这样的。但如果是这样,就会严重干扰测试,因为在OHLC模式下测试时,我必须跳过一些关键的点。
2.符号流不处理图形,而是处理时间序列。就是说,给CopyRates请求的数据数组就是
....
4.所有时间序列都按顺序处理,从低到高。首先是应用刻度线,然后是计算所有指标,在这个时间序列上创建。如果你要求从一个指标中获得同一H1符号的数据,在M1上工作,你将永远不会得到有应用刻度的数据。无论你运用什么技巧,数据都会往后退一个刻度。因为每个符号有一个线程,有连续的时间框架处理。
为什么我切换TF的时候会出现黑色的 "更新 "屏幕?
打开我之前使用的图表(欧元兑美元的H1),离开指标,2-3分钟什么都没做,然后切换到较低的图表(M30...M1),黑屏 "更新 "可能出现10秒钟。
而这个黑屏取决于构建--当终端没有黑屏时,当它真的让我恼火时,因为你清楚地知道加载的是什么历史,你只需要向终端呈现一个图表,为什么要等待这个黑屏?
例如,如果指标在M5上运行,每30分钟调用H1上的指标,CopyBuffer()是否总能从H1上获得正确的数据?
或者不是一个事实,因此在H1的每一个刻度 上 "拉动指标"(还没有考虑连接的断裂)。
如何处理一个循环/函数中的变量到另一个函数中?
能否使能见度更加全球化?
为什么切换TF时出现黑色的 "更新 "屏幕?
打开我之前使用的图表(欧元兑美元的H1),离开指标,2-3分钟什么都没做,然后切换到较低的图表(M30...M1),可能出现10秒钟的 "黑屏更新"
而这个黑屏取决于构建--当终端没有黑屏时,当它真的让我恼火时,因为你清楚地知道加载的是什么历史,你只需要向终端呈现一个图表,为什么要等待这个黑屏?
例如,如果指标在M5上运行,每30分钟调用H1上的指标,CopyBuffer()是否总能从H1上获得正确的数据?
或者不是一个事实,因此在H1的每一个tick 上 "拉动指标"(我们还没有考虑连接中断的变体)。
我认为,根据斯拉瓦的话,这不是一个事实。
由于所有的计算都只在tick上进行,绑定的指标链可能无法完成,我们将不得不等待下一个tick。
但也有一些有趣的问题,我在文档中没有找到答案。
如果没有嘀嗒声,该怎么办? 如果你放置一个在当前时间框架内工作的指标,它将被顺利绘制,而且有趣的是--它不需要接收嘀嗒声!但如果该指标要求从另一个时间框架获得数据,它将不会做任何事情,直到一个新的嘀嗒声到来,而没有嘀嗒声到来--周末
如果我们在定时器中调用ChartRedraw(ChartID()),那么对于某些评论(cnt);其中cnt递增1,我们看到cnt在屏幕上正常工作,但指标没有被绘制。
当我用上下文菜单中的刷新按钮刷新屏幕时,指标从头到尾被重新绘制。
但只要你用 "刷新 "按钮 刷新屏幕,指标就会顺利绘制。
HH 你的第二个指标的例子可以使用,但专家的代码更快。
如果你把一个指标放在当前的TF上工作,它将毫无问题地被画出来,而且有趣的是--嘀嗒声的到来对这一点是没有要求的!
没必要
当你在图表上绘制指标时,有一个严格定义的调用顺序:OnInit()和立即OnCalculated()。也就是说,第一个OnCalculated()是在收到tick之前调用的,这就是为什么prev_calc 需要与0 比较。
事实证明,ChartRedraw()和Update by button并不是一回事,尽管我可以反过来想。
最有可能的是,你应该使用ChartSetSymbolPeriod(),参数为NULL 和当前周期,应该有帮助。
最有可能的是,你应该使用ChartSetSymbolPeriod(),参数为NULL 和当前周期,应该有帮助。
使用相同符号和时间框架的ChartSetSymbolPeriod调用可以用来刷新图表(类似于终端中的Refresh命令)。图表的刷新,反过来又会触发附属于它的指标的重新计算。因此,你可以在图表上重新计算指标,即使在没有刻度的时候(例如周末)。
我现在还记得,普希金曾经说过。
哦,有多少奇妙的发现
,为我们 开明的精神做准备
,还有经验,艰难错误的儿子,
,天才,悖论的朋友,
,机会,上帝的发明者。
当滴答声没有到来时(例如周末)该怎么办? 如果指标在当前的时间框架内工作,它将顺利绘制,而且有趣的是--它不需要滴答声来!但如果指标要求从另一个时间框架获得数据,它不能做任何事情,直到新的滴答声到来,而它没有到来--周末
从另一个时间框架中,将获得目前已经准备好的数据。因此,在输出中,所有的数据将完全同步。