新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1213 1...120612071208120912101211121212131214121512161217121812191220...1953 新评论 Yevhenii Levchenko 2020.07.12 09:22 #12121 干杯!帮助 :) 从一个指标(mt5)中复制一个tick历史,以便进一步处理。我从参考书上复制了这个算法,我只是把它改了一下。 int attempts = 0; bool success = false; MqlTick tick_array[]; datetime startCopyTime = (copyTickTime < periodStartTime) ? periodStartTime : copyTickTime; datetime checkPoint; while(attempts < 3) { uint start = GetTickCount(); checkPoint = TimeCurrent(); int received = CopyTicks(_Symbol, tick_array, COPY_TICKS_ALL, startCopyTime, ticksSizeToCopy); if(received != -1) { PrintFormat("%s: received %d ticks in %d ms", _Symbol, received, GetTickCount() - start); if(GetLastError() == 0) { success = true; break; } else PrintFormat("%s: Ticks are not synchronized yet, %d ticks received for %d ms. Error=%d", _Symbol, received, GetTickCount() - start, _LastError); } attempts++; } if(!success) { PrintFormat("Ошибка! Не удалось получить %d тиков по %s с трех попыток", ticksSizeToCopy, _Symbol); return; } copyTickTime = checkPoint; 但我得到了一个警告,蜱虫历史是不同步的。 2020.07.12 10:07:12.092 Volumes (GBPUSD,H1) GBPUSD: Ticks are not synchronized yet, 10103745 ticks received for 532 ms. Error=4403 而在手册中,它说。 err_history_timeout 4403 历史请求超时 船长的直觉告诉我,要同步进行抽签......这就是我想表达的意思吗?如何做到这一点?或者说,只要取消成功检查,在没有同步的情况下,也可以不受影响地工作? Igor Makanu 2020.07.12 09:33 #12122 Yevhenii Levchenko:干杯!帮助 :) 从一个指标(mt5)中复制一个tick历史,以便进一步处理。 指标对历史数据有异步访问,而专家顾问和脚本有同步访问,或者至少MQL程序开发人员在处理数据时是这样称呼行为的 在人类语言中,当访问指标中的历史数据时,你需要退出计算周期,并在一段时间后,你需要重新应用于历史数据。 而且,在指标中多次循环调用历史记录是没有意义的--这种方法只在专家顾问和脚本中有效。 Yevhenii Levchenko 2020.07.12 10:16 #12123 Igor Makanu:在指标中是对历史数据的异步访问,在专家顾问和脚本中是同步访问,或者至少开发人员在处理数据时是这样称呼MQL程序的行为的在人类语言中,当访问指标中的历史数据时,你需要退出计算周期,并在一段时间后,你需要重新应用于历史数据。而且在指标中多次调用历史记录是没有意义的--这种方法只在专家顾问和脚本中有效。 谢谢你! 同步性与多线程有关吗?"蜱虫尚未同步" - 原来更像是一个警告? Artyom Trishkin 2020.07.12 10:28 #12124 ANDREY:胡说八道...你不擅长逻辑,不擅长数学.....,同时你又长期成功地主持了一个主题同时渗透着逻辑和数学的论坛。 我哪里说过我不擅长逻辑了? Artyom Trishkin 2020.07.12 10:41 #12125 ANDREY:我认为,一群专家所拥有的知识并不是福特本人的知识,也从未成为福特的知识。此外--他不需要这些知识,因为他称这些知识没有必要。而如果这些专家试图将他们的知识传授给福特,他将无法吸收这些知识并将其用于实际目的。为了吸收新知识,有必要对该主题有更多的了解,这与新知识有关。在上面的例子中,专家并没有向福特公司提供知识,而是向律师提供。而在你的大脑中,在我看来,你有足够多的数学和逻辑方面的系统化知识,这套知识使你能够快速正确地对新的和缺失的信息进行搜索查询,并快速正确地解释它。我敢肯定,在你的大脑中不可能没有这样的信息,因为每天在这个论坛上花了很多时间,通过他的大脑,有很多专门与数学和逻辑相关的信息。这就像通过沉浸式学习外语。它是自动的、自发的,甚至可能是违背学习者意愿的学习。如果有100位院士开始向我解释积分方程的计算规则,在他们把 所有的数学和代数课本塞满我的脑袋之前,我是学不会的,因为在学校里,在老师开始解释积分方程之前,我就必须学习这些课本。如果你不明白什么是变量,它有什么用,那么即使知道什么是变量也很难理解,更不用说其他甚至不是很复杂的概念。 福特并没有说会在他感兴趣的领域里教他正确的东西。他说,他身边有这么多不同领域的专家,他可以在任何时候得到他所需要的问题的答案。为什么一个经理需要知道200个专家能知道的事情,他们每个人都会在自己的领域里给出正确的答案?原则上不可能知道一切。但要在专家的帮助下迅速得到你所需要的问题的答案--这就是福特所说的,这就是我所说的参考书和使用正确的信息。而这是在一些狭窄的领域,这个资源以CodeBase和论坛的形式提供。 Igor Makanu 2020.07.12 10:46 #12126 Yevhenii Levchenko:谢谢你! 同步化与多线程有关吗?"蜱虫还没有同步",原来更多的是一种警告? 不 开发者暗示,同步意味着在调用 历史函数时 对历史数据的某种保证处理,但它并不保证在查询时一定会返回数据 ...这里有非人类的语言)))) 异步是一个查询和数据或一个错误。 错误发生后,同步开始,但同步的结束时间(或TF构建)是未知的,由于MT5的高性能,你每次都会得到一个错误,而不是同步的数据。 ZS:在MT5中,一切都很复杂,....有一个服务器,有一个终端,最后是我们的MQL程序。 当要求历史记录时,你必须同步服务器-终端,然后是终端-MQL程序,有人可能没有准备好时间框架或tick数据。 Artyom Trishkin 2020.07.12 10:57 #12127 Igor Makanu:不开发者暗示,在调用 历史函数时, 同步是对历史数据的某种保证处理,但它不一定保证在查询时返回数据.........这里有非人类的语言))))异步是一个查询和数据或一个错误。 错误发生后,同步开始,但同步的结束时间(或TF构建)是未知的,由于MT5的高性能,你每次都会得到一个错误,而不是同步的数据。ZS:在MT5中,一切都很复杂,....有一个服务器,有一个终端,最后是我们的MQL程序。 当要求历史记录时,你应该同步服务器-终端,然后是终端-MQL程序,有人可能没有准备好时间框架或tick数据。 比较容易的答案是这样的。 要在指标中等待同步,你应该在收到错误后简单地退出OnCalculate(),返回0。 在这种情况下,对历史数据的首次访问开始了数据同步的过程,现在只剩下检查其完成情况。如果接收数据出错,则返回0--因为0表示在上一次调用时已经计算过的数据量(prev_calculated),在当前调用和成功加载历史数据时,OnCalculate()将对整个历史深度进行计算(因为通过返回0,我们在上一次调用时表示没有计算过)。 Valeriy Yastremskiy 2020.07.12 11:01 #12128 a.lxrn:大家下午好,请大家帮我解决这个问题,问题出在逻辑上,我今天把脑子搞坏了,我已经到了狼狈不堪的地步。我写了一个基本的代码样本,有一个信号,如果蜡烛的收盘价超过了waggon,就有一个订单被打开。该信号将长期保持并保持真实。 我相信你知道我的意思。我相信你能理解我的意思。 实际上,我应该如何使买入信号打开一个订单,就这样,直到情况发生变化,收盘价 低于该波段的价格。 我可以使用旗子,但它们不会在关闭时保存订单,它打开或延迟15分钟。当开仓和平仓的条件同时为真时,就更酷了。在每一次打勾时,一个订单))))标志是如果打开订单的信号为真,而订单已打开的标志为假,那么我们就打开订单。而如果该订单的标志是真实的,该订单将不会打开)。拖延是更容易和更有效的。在订单结束后,我们设置了一个延迟。 Yevhenii Levchenko 2020.07.12 11:07 #12129 Igor Makanu: 异步是一个查询和数据或一个错误,在一个错误后,同步开始,但同步结束的时间(或TF构建)是未知的,由于MT5的高性能,你每次调用都会得到一个错误,而不是同步的数据。ZS:在MT5中,一切都很复杂,....你有一个服务器,一个终端,最后是我们的MQL程序。 当要求历史记录时,你需要同步服务器-终端,然后是终端-MQL程序,有人可能有未准备好的时间框架或tick数据。大约得到了它...谢谢 :)Artyom Trishkin: 像这样回答大约比较容易。为了在一个指标中等待同步,你必须在收到错误后以返回0退出OnCalculate()。在这种情况下,对历史数据的首次访问开始了数据同步的过程,只剩下检查其完成情况。如果接收数据出错,则返回0--因为0表示在上一次调用时已经计算过的数据量(prev_calculated),在当前调用和成功加载历史数据时,OnCalculate()将对整个历史深度进行计算(因为通过返回0,我们在上一次调用时表示没有计算过)。 更简单并不意味着更清晰 :) 切换到库存仪器,只打印了一次它们不同步的情况。随后的查询没有显示任何其他类似情况。 你能告诉我为什么测试器不显示体积吗? Artyom Trishkin 2020.07.12 12:26 #12130 Yevhenii Levchenko:粗略地理解...谢谢 :) 更简单并不意味着更清晰 :) 切换到库存仪器,只打印了一次它们不同步的情况。随后的查询没有显示任何其他类似情况。 你能告诉我为什么测试器不显示体积吗? 为了保持历史数据的实际 "热 "状态,你需要每两分钟使用任何一个CopyXXX,iXXX函数来访问这些数据,例如CopyTime(),iTime(),等等。 我不知道你在测试器中没有得到什么量。有真实的和打勾的量。没有代码,就不可能在本质上回答。 1...120612071208120912101211121212131214121512161217121812191220...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
干杯!帮助 :)
从一个指标(mt5)中复制一个tick历史,以便进一步处理。我从参考书上复制了这个算法,我只是把它改了一下。
但我得到了一个警告,蜱虫历史是不同步的。
而在手册中,它说。
err_history_timeout
4403
历史请求超时
船长的直觉告诉我,要同步进行抽签......这就是我想表达的意思吗?如何做到这一点?或者说,只要取消成功检查,在没有同步的情况下,也可以不受影响地工作?
干杯!帮助 :)
从一个指标(mt5)中复制一个tick历史,以便进一步处理。
指标对历史数据有异步访问,而专家顾问和脚本有同步访问,或者至少MQL程序开发人员在处理数据时是这样称呼行为的
在人类语言中,当访问指标中的历史数据时,你需要退出计算周期,并在一段时间后,你需要重新应用于历史数据。
而且,在指标中多次循环调用历史记录是没有意义的--这种方法只在专家顾问和脚本中有效。
在指标中是对历史数据的异步访问,在专家顾问和脚本中是同步访问,或者至少开发人员在处理数据时是这样称呼MQL程序的行为的
在人类语言中,当访问指标中的历史数据时,你需要退出计算周期,并在一段时间后,你需要重新应用于历史数据。
而且在指标中多次调用历史记录是没有意义的--这种方法只在专家顾问和脚本中有效。
谢谢你!
同步性与多线程有关吗?"蜱虫尚未同步" - 原来更像是一个警告?
胡说八道...你不擅长逻辑,不擅长数学.....,同时你又长期成功地主持了一个主题同时渗透着逻辑和数学的论坛。
我哪里说过我不擅长逻辑了?
我认为,一群专家所拥有的知识并不是福特本人的知识,也从未成为福特的知识。此外--他不需要这些知识,因为他称这些知识没有必要。而如果这些专家试图将他们的知识传授给福特,他将无法吸收这些知识并将其用于实际目的。为了吸收新知识,有必要对该主题有更多的了解,这与新知识有关。在上面的例子中,专家并没有向福特公司提供知识,而是向律师提供。
而在你的大脑中,在我看来,你有足够多的数学和逻辑方面的系统化知识,这套知识使你能够快速正确地对新的和缺失的信息进行搜索查询,并快速正确地解释它。我敢肯定,在你的大脑中不可能没有这样的信息,因为每天在这个论坛上花了很多时间,通过他的大脑,有很多专门与数学和逻辑相关的信息。这就像通过沉浸式学习外语。它是自动的、自发的,甚至可能是违背学习者意愿的学习。
如果有100位院士开始向我解释积分方程的计算规则,在他们把 所有的数学和代数课本塞满我的脑袋之前,我是学不会的,因为在学校里,在老师开始解释积分方程之前,我就必须学习这些课本。
如果你不明白什么是变量,它有什么用,那么即使知道什么是变量也很难理解,更不用说其他甚至不是很复杂的概念。
福特并没有说会在他感兴趣的领域里教他正确的东西。他说,他身边有这么多不同领域的专家,他可以在任何时候得到他所需要的问题的答案。为什么一个经理需要知道200个专家能知道的事情,他们每个人都会在自己的领域里给出正确的答案?原则上不可能知道一切。但要在专家的帮助下迅速得到你所需要的问题的答案--这就是福特所说的,这就是我所说的参考书和使用正确的信息。而这是在一些狭窄的领域,这个资源以CodeBase和论坛的形式提供。
谢谢你!
同步化与多线程有关吗?"蜱虫还没有同步",原来更多的是一种警告?
不
开发者暗示,同步意味着在调用 历史函数时 对历史数据的某种保证处理,但它并不保证在查询时一定会返回数据
...这里有非人类的语言))))
异步是一个查询和数据或一个错误。 错误发生后,同步开始,但同步的结束时间(或TF构建)是未知的,由于MT5的高性能,你每次都会得到一个错误,而不是同步的数据。
ZS:在MT5中,一切都很复杂,....有一个服务器,有一个终端,最后是我们的MQL程序。 当要求历史记录时,你必须同步服务器-终端,然后是终端-MQL程序,有人可能没有准备好时间框架或tick数据。
不
开发者暗示,在调用 历史函数时, 同步是对历史数据的某种保证处理,但它不一定保证在查询时返回数据......
...这里有非人类的语言))))
异步是一个查询和数据或一个错误。 错误发生后,同步开始,但同步的结束时间(或TF构建)是未知的,由于MT5的高性能,你每次都会得到一个错误,而不是同步的数据。
ZS:在MT5中,一切都很复杂,....有一个服务器,有一个终端,最后是我们的MQL程序。 当要求历史记录时,你应该同步服务器-终端,然后是终端-MQL程序,有人可能没有准备好时间框架或tick数据。
比较容易的答案是这样的。
要在指标中等待同步,你应该在收到错误后简单地退出OnCalculate(),返回0。
在这种情况下,对历史数据的首次访问开始了数据同步的过程,现在只剩下检查其完成情况。如果接收数据出错,则返回0--因为0表示在上一次调用时已经计算过的数据量(prev_calculated),在当前调用和成功加载历史数据时,OnCalculate()将对整个历史深度进行计算(因为通过返回0,我们在上一次调用时表示没有计算过)。
大家下午好,请大家帮我解决这个问题,问题出在逻辑上,我今天把脑子搞坏了,我已经到了狼狈不堪的地步。
我写了一个基本的代码样本,有一个信号,如果蜡烛的收盘价超过了waggon,就有一个订单被打开。
该信号将长期保持并保持真实。 我相信你知道我的意思。
我相信你能理解我的意思。 实际上,我应该如何使买入信号打开一个订单,就这样,直到情况发生变化,收盘价 低于该波段的价格。
我可以使用旗子,但它们不会在关闭时保存订单,它打开或延迟15分钟。当开仓和平仓的条件同时为真时,就更酷了。在每一次打勾时,一个订单))))标志是如果打开订单的信号为真,而订单已打开的标志为假,那么我们就打开订单。而如果该订单的标志是真实的,该订单将不会打开)。拖延是更容易和更有效的。在订单结束后,我们设置了一个延迟。
异步是一个查询和数据或一个错误,在一个错误后,同步开始,但同步结束的时间(或TF构建)是未知的,由于MT5的高性能,你每次调用都会得到一个错误,而不是同步的数据。
ZS:在MT5中,一切都很复杂,....你有一个服务器,一个终端,最后是我们的MQL程序。 当要求历史记录时,你需要同步服务器-终端,然后是终端-MQL程序,有人可能有未准备好的时间框架或tick数据。
大约得到了它...谢谢 :)
像这样回答大约比较容易。
为了在一个指标中等待同步,你必须在收到错误后以返回0退出OnCalculate()。
在这种情况下,对历史数据的首次访问开始了数据同步的过程,只剩下检查其完成情况。如果接收数据出错,则返回0--因为0表示在上一次调用时已经计算过的数据量(prev_calculated),在当前调用和成功加载历史数据时,OnCalculate()将对整个历史深度进行计算(因为通过返回0,我们在上一次调用时表示没有计算过)。
切换到库存仪器,只打印了一次它们不同步的情况。随后的查询没有显示任何其他类似情况。
你能告诉我为什么测试器不显示体积吗?
粗略地理解...谢谢 :)
更简单并不意味着更清晰 :)切换到库存仪器,只打印了一次它们不同步的情况。随后的查询没有显示任何其他类似情况。
你能告诉我为什么测试器不显示体积吗?
为了保持历史数据的实际 "热 "状态,你需要每两分钟使用任何一个CopyXXX,iXXX函数来访问这些数据,例如CopyTime(),iTime(),等等。
我不知道你在测试器中没有得到什么量。有真实的和打勾的量。没有代码,就不可能在本质上回答。