错误、漏洞、问题 - 页 3031 1...302430253026302730283029303030313032303330343035303630373038...3184 新评论 Andrey Dik 2021.05.28 18:08 #30301 Igor Makanu:我的代码将 "在每一个tick 上敲击",只有你的指标#1,在那里你写了:它将允许终端独立建立 "更高的时间框架"。对我来说,这比对指标1进行完全的重新计算要 "便宜",因为在你的代码中,在 "较高的TF "上同步历史时,会发生这种情况。 是的,但为什么故障前的复位是在较低的TF上? mktr8591 2021.05.28 18:10 #30302 Andrey Dik:是的,但是为什么前次粉笔在低层TF上被重置? 因为返回0。 Igor Makanu 2021.05.28 18:15 #30303 Andrey Dik:是的,但是为什么前次的粉煤灰会被重置在低TF上? 许多变体,我们不知道如何实施 去年有一个关于MT4的类似讨论,其中一个开发者(我想是Slava)说,每次访问 "旧TF "都会启动数据同步,如果需要....。 我想,在MT5中,如果有必要,终端也会自己建立TF,但如果有网络延迟或.....,就不得而知了。然后,终端在给高级TF上的指标提供数据之前,将历史数据与服务器同步,当它即时发生时,而当它可能需要很长的时间时,这时它可能会被预先计算=0。 Andrei Trukhanovich 2021.05.28 18:19 #30304 Igor Makanu:有很多选择,我们不知道如何实施。 如果下载改变了低位TF的历史数据,低位TF的计数器就会被终端强制归零,所以不要无中生有。 Alexey Viktorov 2021.05.28 18:19 #30305 Andrey Dik:你证明了我的观点,同志。 我不是......编码员的同志。这不是一个确认,是一个提示,不要返回0,这就是你所有的问题。你自己正在造成指标的完全重新计算。 Igor Makanu 2021.05.28 18:21 #30306 关于交易、自动交易系统和交易策略测试的论坛 虫子,虫子,问题 Andrey Dik, 2021.05.28 17:26 预先计算不会在下一栏中增加1。 prev_calculated实际上并没有增加;它将始终与计算结束时相同。 return(rates_total); 也就是说,我们在OnCalculated()退出时得到的东西将在prev_calculated的下一个tick中返回(除非prev_calculated == 0,终端在启动指标或同步TF......时这样做)。 Andrei Trukhanovich:如果下载改变了低位TF的历史数据,低位TF的计数器就会被终端强制清零,不要凭空制造麻烦。 我已经给他写了第二天的信--从Mladen那里拿了指标并研究它们--它们起作用了,而且没有任何复杂的TFs之间的同步,在这里...我们要节省资源,不要让终端形成被调用的TFs。 Alexey Viktorov 2021.05.28 18:26 #30307 Andrei Trukhanovich:替换至并测试它。 不要提示......反正他不会相信的。 Andrey Dik 2021.05.28 18:27 #30308 Alexey Viktorov:我......并不是编码员的朋友。这不是一个确认,而是一个提示,不要返回0,这就是导致你所有问题的原因。你自己正在造成指标的完全重新计算。 你可能是个白痴,无法给出提示,但不是每个人都能帮你理解和解释。 Andrey Dik 2021.05.28 18:29 #30309 Andrei Trukhanovich:替换至并测试它。 谢谢你,安德烈。你是唯一一个完全深入研究这个问题的人。 2021.05.28 21:22:54.394 LitTF (EURUSD,M2) 第3期的指标尚未计算。 2021.05.28 21:22:54.396 LitTF (EURUSD,M2) 第3期的指标还没有计算。 2021.05.28 21:22:54.397 OldTF (EURUSD,M3) 0.000262 sec, 50046 bars calculated, total 50046 bars 2021.05.28 21:22:55.796 LitTF (EURUSD,M2) 0.007693 sec, 50000 bars calculated, 50000 total bars 2021.05.28 21:24:02.286 LitTF (EURUSD,M2) 第三期的指标尚未计算。 2021.05.28 21:24:02.286 OldTF (EURUSD,M3) 0.000000 sec, 1 bars calculated, 50047 bars total 2021.05.28 21:24:03.017 LitTF (EURUSD,M2) 0.000015 sec, calculated 1 bars, total bars 50001 2021.05.28 21:26:03.898 LitTF (EURUSD,M2) 0.000007 sec, calculated 1 bars, total bars 50002 现在一切都在按计划进行,指标在第一次运行时只计算了一次,以后每一个新条形都只计算一次。 第二个指标的最终代码,我希望它对某人有用。 int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { ulong t = GetMicrosecondCount (); if (rates_total == prev_calculated) return rates_total; if (SeriesInfoInteger (Symbol (), OldTF, SERIES_SYNCHRONIZED)) { if (iBars (Symbol (), OldTF) != BarsCalculated (Handle)) { Print ("Индикатор на периоде ", OldTF, " ещё не рассчитан"); return prev_calculated; } } else { Print ("Период ", OldTF, " не синхронизирован."); return prev_calculated; } ArraySetAsSeries (high, true); ArraySetAsSeries (time, true); int limit = rates_total - prev_calculated - 1; double buff []; int ind = 0; for (int i = limit; i >= 0; i--) { ind = iBarShift (Symbol (), OldTF, time [i], false); if (CopyBuffer (Handle, 0, ind, 1, buff) != -1) { IBuffer [i] = buff [0]; } else { Print ("Ошибка копирования буфера ", GetLastError ()); return 0; } } //---------------------------------------------------------------- double e = (GetMicrosecondCount () - t) / 1000000.0; Print (DoubleToString (e, 6), " sec, расcчитано ", rates_total - prev_calculated, " баров, всего баров ", rates_total); return(rates_total); } Errors, bugs, questions Experts: earlyOpenTrend Any rookie question, so Alexey Viktorov 2021.05.28 18:32 #30310 Andrey Dik:任何傻瓜都能给你提示,但不是每个人都能帮助你理解和详细地帮助你。 数一数有多少傻瓜在建议你......只有一个聪明人听不进任何人的意见,并固执地............... 你创造了你自己的问题,并试图将你的...代码作为一个mql的bug提出来。 1...302430253026302730283029303030313032303330343035303630373038...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我的代码将 "在每一个tick 上敲击",只有你的指标#1,在那里你写了:
它将允许终端独立建立 "更高的时间框架"。
对我来说,这比对指标1进行完全的重新计算要 "便宜",因为在你的代码中,在 "较高的TF "上同步历史时,会发生这种情况。
是的,但为什么故障前的复位是在较低的TF上?
是的,但是为什么前次粉笔在低层TF上被重置?
是的,但是为什么前次的粉煤灰会被重置在低TF上?
许多变体,我们不知道如何实施
去年有一个关于MT4的类似讨论,其中一个开发者(我想是Slava)说,每次访问 "旧TF "都会启动数据同步,如果需要....。
我想,在MT5中,如果有必要,终端也会自己建立TF,但如果有网络延迟或.....,就不得而知了。然后,终端在给高级TF上的指标提供数据之前,将历史数据与服务器同步,当它即时发生时,而当它可能需要很长的时间时,这时它可能会被预先计算=0。
有很多选择,我们不知道如何实施。
如果下载改变了低位TF的历史数据,低位TF的计数器就会被终端强制归零,所以不要无中生有。
你证明了我的观点,同志。
我不是......编码员的同志。这不是一个确认,是一个提示,不要返回0,这就是你所有的问题。你自己正在造成指标的完全重新计算。
关于交易、自动交易系统和交易策略测试的论坛
虫子,虫子,问题
Andrey Dik, 2021.05.28 17:26
预先计算不会在下一栏中增加1。
prev_calculated实际上并没有增加;它将始终与计算结束时相同。
return(rates_total);也就是说,我们在OnCalculated()退出时得到的东西将在prev_calculated的下一个tick中返回(除非prev_calculated == 0,终端在启动指标或同步TF......时这样做)。
如果下载改变了低位TF的历史数据,低位TF的计数器就会被终端强制清零,不要凭空制造麻烦。
我已经给他写了第二天的信--从Mladen那里拿了指标并研究它们--它们起作用了,而且没有任何复杂的TFs之间的同步,在这里...我们要节省资源,不要让终端形成被调用的TFs。
替换
至
并测试它。
不要提示......反正他不会相信的。
我......并不是编码员的朋友。这不是一个确认,而是一个提示,不要返回0,这就是导致你所有问题的原因。你自己正在造成指标的完全重新计算。
你可能是个白痴,无法给出提示,但不是每个人都能帮你理解和解释。
替换
至
并测试它。
谢谢你,安德烈。你是唯一一个完全深入研究这个问题的人。
2021.05.28 21:22:54.394 LitTF (EURUSD,M2) 第3期的指标尚未计算。
2021.05.28 21:22:54.396 LitTF (EURUSD,M2) 第3期的指标还没有计算。
2021.05.28 21:22:54.397 OldTF (EURUSD,M3) 0.000262 sec, 50046 bars calculated, total 50046 bars
2021.05.28 21:22:55.796 LitTF (EURUSD,M2) 0.007693 sec, 50000 bars calculated, 50000 total bars
2021.05.28 21:24:02.286 LitTF (EURUSD,M2) 第三期的指标尚未计算。
2021.05.28 21:24:02.286 OldTF (EURUSD,M3) 0.000000 sec, 1 bars calculated, 50047 bars total
2021.05.28 21:24:03.017 LitTF (EURUSD,M2) 0.000015 sec, calculated 1 bars, total bars 50001
2021.05.28 21:26:03.898 LitTF (EURUSD,M2) 0.000007 sec, calculated 1 bars, total bars 50002
现在一切都在按计划进行,指标在第一次运行时只计算了一次,以后每一个新条形都只计算一次。
第二个指标的最终代码,我希望它对某人有用。
任何傻瓜都能给你提示,但不是每个人都能帮助你理解和详细地帮助你。
数一数有多少傻瓜在建议你......只有一个聪明人听不进任何人的意见,并固执地...............
你创造了你自己的问题,并试图将你的...代码作为一个mql的bug提出来。