TimeCurrent()和iTime()的错误/问题 - 页 2 1234 新评论 Alain Verleyen 2013.12.12 13:23 #11 RaptorUK: 我认为问题在于,第一次为一个指标调用start()时,可能不是因为新的tick ......在这种情况下,TimeCurrent()将报告错误的时间。 我还没有验证这一点 ......。 在这种情况下,我会简单地忽略第一个刻度 ... ...然后从第2个刻度开始继续正常运行。 是的,这就是我的意思。 William Roeder 2013.12.12 14:10 #12 这是一个指标,你为什么要关心TimeCurrent是什么。做你的for指标计数循环,在条形图上画。不要看TimeCurrent,不要看Bid。 Paul B 2013.12.12 14:23 #13 我在图表上绘制与格林威治标准时间相匹配的某些时间,所以当试图获得MT4服务器时间 和格林威治标准时间之间的偏移时,这一点非常重要。 [删除] 2013.12.12 14:47 #14 Paul_B: I'm plotting certain times on a chart which match to GMT, so it matters a great deal when trying to get the offset between MT4 server time and GMT. <g> 我认为你还没有掌握这个论坛的文化。版主和论坛的其他长期用户的反应顺序总是 "你做错了什么",然后是 "你为什么要这么做?"当事实证明你没有做错的时候。 如果我是你,我就会在IsConnected()为假时退出对start()的调用。或者你可以在一个静态变量中保持一个tick计数,并忽略tick #1,但这在正常情况下会不必要地延迟启动。 Paul B 2013.12.12 14:54 #15 谢谢你的意见,目前我已经在工作了,但我所拥有的似乎并不是一个理想的解决方案,也不是特别强大。我将进一步探索IsConnected()。 William Roeder 2013.12.12 15:06 #16 Paul_B: 我在图表上绘制了与格林威治时间相匹配的某些时间,所以当试图获得MT4服务器时间和格林威治时间之间的偏移时,这一点非常重要。 现在我们明白为什么了。(你为什么不在OP上解释一下?)和我的代码 完全一样 nextAutoUpdate = timeSrv + HR2400; if(Srvr_To_UTC_Auto) if( IsDllsAllowed()){ // Complained @ init int srvrToUTC = LocalTimeToUTC() - TimeCurrent(); double nearestHalfHour = MathRound(srvrToUTC / 1800.); Srvr_To_UTC_Hours = nearestHalfHour / 2.; // Update external } 我赞同RaptorUK的建议,对于一个指标来说,忽略第一个刻度,在第二个刻度上更新所有条形。 这也不完全是意外。由于指标不能睡眠,如果EA通过iCustom在它的init中加载一个指标,在指标运行init和start之前,调用不能返回一个缓冲值。 [删除] 2013.12.12 15:08 #17 Paul_B: 谢谢你的意见,目前我已经在工作了,但我所拥有的似乎不是一个理想的解决方案,也不是特别强大。我将进一步探索IsConnected()。我不认为你有什么选择。MT4生成对start()的假调用,以使指标在离线图表上出现,因为它更希望指标在MT4加载时就(重新)出现在图表上,而不需要等待连接的建立。 如果你想提高对正确建立连接和有效TimeCurrent()的确定性,那么你也可以寻找AccountNumber() !=0和AccountBalance() > 0。 Paul B 2013.12.12 15:14 #18 谢谢大家,我会把指标编程为等待,直到收到第二个tick。 顺便说一下,我刚刚探索了IsConnected()的可能性,但我仍然得到 "错误的 "TimeCurrent(),即使IsConnected()报告为真。 Simon Gniadkowski 2013.12.12 16:54 #19 cyclops993: <g> 我认为你还没有掌握这个论坛的文化。版主和论坛的其他长期用户的反应顺序总是 "你做错了什么",然后是 "你为什么要那样做?"当事实证明你没有做错的时候。 如果我是你,我就会在IsConnected()为假时退出对start()的调用。或者你可以在一个静态变量中保持一个tick计数,并忽略tick #1,但这在正常情况下会不必要地延迟启动。 如果用户不提供测试代码来证明这个问题,就很难提供具体的帮助,通常可以做出的最好假设是代码中存在错误。......也许你应该接管并回答所有的和任何的问题和帮助请求。 这将解决你所有的问题,那么你就不必对那些只是想帮忙的人进行挖苦了.. . [删除] 2013.12.12 18:29 #20 RaptorUK: 如果一个用户不提供测试代码来证明这个问题[...] 。OP中没有任何错误或遗漏之处。很明显,Paul_B从MT4文档中完全合理地假设,start()只在出现新点数时被调用。(为什么 他想检查 TimeCurrent()并没有什么区别,实际上也不关我们的事)。 你的回答基本上是一个很好的RTFM版本,尽管手册中明显缺乏这方面的内容[我要强调这是不寻常的;MT4文档的质量是相当好的]。Angevoyageur的反应是将此描述为小题大做,这似乎是对MT4任何形式的批评的病态敏感反应模式的一部分,无论多么温和。WHRoeder接着说 "你不会想这么做的",然后复制和粘贴一些代码,这显然是不相关的,因为Paul_B显然已经知道如何计算GMT偏移。 1234 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我认为问题在于,第一次为一个指标调用start()时,可能不是因为新的tick ......在这种情况下,TimeCurrent()将报告错误的时间。 我还没有验证这一点 ......。
在这种情况下,我会简单地忽略第一个刻度 ... ...然后从第2个刻度开始继续正常运行。
Paul_B:
I'm plotting certain times on a chart which match to GMT, so it matters a great deal when trying to get the offset between MT4 server time and GMT.
<g> 我认为你还没有掌握这个论坛的文化。版主和论坛的其他长期用户的反应顺序总是 "你做错了什么",然后是 "你为什么要这么做?"当事实证明你没有做错的时候。
如果我是你,我就会在IsConnected()为假时退出对start()的调用。或者你可以在一个静态变量中保持一个tick计数,并忽略tick #1,但这在正常情况下会不必要地延迟启动。
我赞同RaptorUK的建议,对于一个指标来说,忽略第一个刻度,在第二个刻度上更新所有条形。
这也不完全是意外。由于指标不能睡眠,如果EA通过iCustom在它的init中加载一个指标,在指标运行init和start之前,调用不能返回一个缓冲值。
谢谢你的意见,目前我已经在工作了,但我所拥有的似乎不是一个理想的解决方案,也不是特别强大。我将进一步探索IsConnected()。
我不认为你有什么选择。MT4生成对start()的假调用,以使指标在离线图表上出现,因为它更希望指标在MT4加载时就(重新)出现在图表上,而不需要等待连接的建立。
如果你想提高对正确建立连接和有效TimeCurrent()的确定性,那么你也可以寻找AccountNumber() !=0和AccountBalance() > 0。
谢谢大家,我会把指标编程为等待,直到收到第二个tick。
顺便说一下,我刚刚探索了IsConnected()的可能性,但我仍然得到 "错误的 "TimeCurrent(),即使IsConnected()报告为真。
<g> 我认为你还没有掌握这个论坛的文化。版主和论坛的其他长期用户的反应顺序总是 "你做错了什么",然后是 "你为什么要那样做?"当事实证明你没有做错的时候。
如果我是你,我就会在IsConnected()为假时退出对start()的调用。或者你可以在一个静态变量中保持一个tick计数,并忽略tick #1,但这在正常情况下会不必要地延迟启动。
如果一个用户不提供测试代码来证明这个问题[...] 。
OP中没有任何错误或遗漏之处。很明显,Paul_B从MT4文档中完全合理地假设,start()只在出现新点数时被调用。(为什么 他想检查 TimeCurrent()并没有什么区别,实际上也不关我们的事)。
你的回答基本上是一个很好的RTFM版本,尽管手册中明显缺乏这方面的内容[我要强调这是不寻常的;MT4文档的质量是相当好的]。Angevoyageur的反应是将此描述为小题大做,这似乎是对MT4任何形式的批评的病态敏感反应模式的一部分,无论多么温和。WHRoeder接着说 "你不会想这么做的",然后复制和粘贴一些代码,这显然是不相关的,因为Paul_B显然已经知道如何计算GMT偏移。