[解决]当从不同工作时间段的指标中调用/创建指标时,指标不能正确实例化。 - 页 2 1234 新评论 nicholish en 2017.01.31 13:35 #11 Alain Verleyen:你在重复 "实例化失败",但这并不准确。指标在所有情况下都被实例化了。 问题是数据不能同步提供,你必须处理它。这不是一个MT5的错误,而是一个功能。我建议停止讨论,等待SD的答复。也许我没有正确地说明,无论有多少个循环和等待,你都无法访问指标数据(不同的TF),直到(*编辑)OnCalculate()的第一次传递之后。我完全愿意接受我可能是错的,这就是为什么我有10美元的赏金,如果你能证明不是这样。请......证明我错了。我需要一个解决这个愚蠢错误的方法,对不起,我是说 "功能"。 Alain Verleyen 2017.01.31 13:59 #12 nicholishen:也许我没有正确地阐明,无论有多少个循环和等待,你都无法访问指标数据(不同的TF),直到(*编辑)OnCalculate()的第一次传递之后。我完全愿意接受我可能是错的,这就是为什么我有10美元的赏金,如果你能证明不是这样。请......证明我错了。我需要一个解决这个愚蠢错误的方法,对不起,我是说 "功能"。 为什么你在第一次 "通过 "时就需要它?如果需要的数据不可用,那就等到它们可用的时候,就是这样。 nicholish en 2017.01.31 14:08 #13 Alain Verleyen: 为什么你在第一次 "通过 "时就需要它?如果所需的数据不可用,那就等到它们可用的时候,就是这样。因为我正在开发一个指标,该指标需要访问不同时间段的同一指标(同一符号)的数据。 由于它要在第二个tick之后才会处理,这意味着该指标将不能 离线工作,只有在第二个tick到来时才能工作。为什么我们要因为这个错误而妥协呢?有什么好处让你如此愤怒地捍卫它? Alain Verleyen 2017.01.31 14:16 #14 nicholishen: 因为我正在开发一个指标,该指标需要访问不同时间段的同一指标(同一符号)的数据。 由于它要在第二个tick之后才会处理,这意味着该指标将不能 离线工作,只有在第二个tick到来时才能工作。为什么我们要因为这个错误而妥协呢?有什么好处让你如此愤怒地捍卫它呢????我没有为任何东西辩护,当然也没有 "愤怒地"。请保持冷静。 nicholish en 2017.01.31 14:19 #15 Alain Verleyen:???我没有为任何东西辩护,当然也没有 "愤怒地"。请保持冷静。 关于交易、自动交易系统和测试交易策略的论坛 [MQL5 BUG]当从不同工作时间段的指标中调用/创建指标时,指标不能正确实例化。 Alain Verleyen, 2017.01.31 12:46 好吧你不相信我,那是你的权利,但你错了 我只能建议你写信给ServiceDesk,并请在这里报告他们的答复。好吧。我发布这个工作,是为了防止有人有兴趣来做这个工作。 https://www.mql5.com/en/job/57516 Stanislav Korotky 2017.01.31 19:58 #16 nicholishen:这意味着,如果数据可以立即提供给脚本或EA,那么它同样可以提供给指标(因为这不是一个数据可用性问题)。指标只是在OnCalculate()的第二次传递(也就是第一个tick)之前未能实例化。你对 "可用性 "这个词的理解过于简单。虽然一些数据可以存在于终端内存中,但终端本身可能包含一些同步逻辑,在检查一个(可能是另一个)时间框架的基础数据时,阻止任何 时间段的更新。或者他们可以阻止来自一个指标的数据请求,直到它完成自己的创建(请记住,指标是由所谓的手柄管理的,而专家和脚本则不是),这对我来说是合乎逻辑的。这些只是我的猜测,我是从MQ开发者的角度做出的。你可以直接通过服务台问他们。由于第3点的原因,你的工作不可能完成。3.必须在初始化时访问缓冲区这只是违背了终端的架构和文档。你不能在指标数据创建后立即引用它,因为计算指标值需要一些时间。也请阅读CopyBuffer 函数。注意当向指标请求数据时, 如果请求的时间序列尚未建立或需要从服务器下载,该函数将立即返回-1,但下载/建立的过程将被启动。当从专家顾问或脚本请求数据时,如果终端本地没有这些数据,将开始从服务器下载,或者如果可以从本地历史建立数据但还没有准备好,将开始建立所需的时间序列。该函数将返回在超时到期时将准备好的数据量。因此,专家和脚本是同步处理的,直到预定义的超时,但指标是异步的。 Documentation on MQL5: Technical Indicators www.mql5.com Technical Indicators - Reference on algorithmic/automated trading language for MetaTrader 5 Stanislav Korotky 2017.01.31 20:02 #17 至于你的具体任务,它可以很容易地以其他方式完成。你不是第一个在指标上 建立一个指标 并希望它能离线工作的人。使用一个计时器。 nicholish en 2017.01.31 20:04 #18 Stanislav Korotky: 至于你的具体任务,它可以很容易地以其他方式完成。你不是第一个在指标上建立一个指标并希望它能离线工作的人。使用一个计时器。 试过了。不起作用。 Stanislav Korotky 2017.01.31 20:14 #19 nicholishen: 试过了。不起作用。 发表更具体的问题,并附上示例代码。这可能是错误的。这个方法对我有用。 nicholish en 2017.01.31 20:20 #20 Stanislav Korotky: 发表更具体的问题,并附上示例代码。这可能是错误的。这个方法对我有用。 我不明白我怎么能比我已经说得更具体......无论多少计时器或循环都不能克服这样一个事实:在Oncalculate至少返回一次之后,指标才会实例化。递归也不起作用。 1234 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你在重复 "实例化失败",但这并不准确。指标在所有情况下都被实例化了。
问题是数据不能同步提供,你必须处理它。这不是一个MT5的错误,而是一个功能。
我建议停止讨论,等待SD的答复。
也许我没有正确地说明,无论有多少个循环和等待,你都无法访问指标数据(不同的TF),直到(*编辑)OnCalculate()的第一次传递之后。
我完全愿意接受我可能是错的,这就是为什么我有10美元的赏金,如果你能证明不是这样。请......证明我错了。我需要一个解决这个愚蠢错误的方法,对不起,我是说 "功能"。
也许我没有正确地阐明,无论有多少个循环和等待,你都无法访问指标数据(不同的TF),直到(*编辑)OnCalculate()的第一次传递之后。
我完全愿意接受我可能是错的,这就是为什么我有10美元的赏金,如果你能证明不是这样。请......证明我错了。我需要一个解决这个愚蠢错误的方法,对不起,我是说 "功能"。
为什么你在第一次 "通过 "时就需要它?如果所需的数据不可用,那就等到它们可用的时候,就是这样。
因为我正在开发一个指标,该指标需要访问不同时间段的同一指标(同一符号)的数据。 由于它要在第二个tick之后才会处理,这意味着该指标将不能 离线工作,只有在第二个tick到来时才能工作。
为什么我们要因为这个错误而妥协呢?有什么好处让你如此愤怒地捍卫它?
因为我正在开发一个指标,该指标需要访问不同时间段的同一指标(同一符号)的数据。 由于它要在第二个tick之后才会处理,这意味着该指标将不能 离线工作,只有在第二个tick到来时才能工作。
为什么我们要因为这个错误而妥协呢?有什么好处让你如此愤怒地捍卫它呢?
???
我没有为任何东西辩护,当然也没有 "愤怒地"。请保持冷静。
???
我没有为任何东西辩护,当然也没有 "愤怒地"。请保持冷静。
关于交易、自动交易系统和测试交易策略的论坛
[MQL5 BUG]当从不同工作时间段的指标中调用/创建指标时,指标不能正确实例化。
Alain Verleyen, 2017.01.31 12:46
好吧你不相信我,那是你的权利,但你错了
我只能建议你写信给ServiceDesk,并请在这里报告他们的答复。
好吧。
我发布这个工作,是为了防止有人有兴趣来做这个工作。
https://www.mql5.com/en/job/57516
这意味着,如果数据可以立即提供给脚本或EA,那么它同样可以提供给指标(因为这不是一个数据可用性问题)。指标只是在OnCalculate()的第二次传递(也就是第一个tick)之前未能实例化。
你对 "可用性 "这个词的理解过于简单。虽然一些数据可以存在于终端内存中,但终端本身可能包含一些同步逻辑,在检查一个(可能是另一个)时间框架的基础数据时,阻止任何 时间段的更新。或者他们可以阻止来自一个指标的数据请求,直到它完成自己的创建(请记住,指标是由所谓的手柄管理的,而专家和脚本则不是),这对我来说是合乎逻辑的。这些只是我的猜测,我是从MQ开发者的角度做出的。你可以直接通过服务台问他们。
由于第3点的原因,你的工作不可能完成。
3.必须在初始化时访问缓冲区
这只是违背了终端的架构和文档。
你不能在指标数据创建后立即引用它,因为计算指标值需要一些时间。
也请阅读CopyBuffer 函数。
注意
当向指标请求数据时, 如果请求的时间序列尚未建立或需要从服务器下载,该函数将立即返回-1,但下载/建立的过程将被启动。
当从专家顾问或脚本请求数据时,如果终端本地没有这些数据,将开始从服务器下载,或者如果可以从本地历史建立数据但还没有准备好,将开始建立所需的时间序列。该函数将返回在超时到期时将准备好的数据量。
因此,专家和脚本是同步处理的,直到预定义的超时,但指标是异步的。
至于你的具体任务,它可以很容易地以其他方式完成。你不是第一个在指标上建立一个指标并希望它能离线工作的人。使用一个计时器。
试过了。不起作用。
发表更具体的问题,并附上示例代码。这可能是错误的。这个方法对我有用。