//проверка готовности данных и индикатора на другом TFif (SeriesInfoInteger (Symbol (), tf, SERIES_SYNCHRONIZED))
{
if (iBars (Symbol (), tf) != BarsCalculated (handleFr)) return0;
}
elsereturn0;
//проверка на наличие нового бараif (rates_total == prev_calculated) return rates_total;
带有单一字段的联盟是一个奇怪的东西。
这与结构相同--只是错误更明显。文件中甚至写到:"否则, union 的 行为与结构一样"。
Unionchar\char也很奇怪,也是为了清晰,但它可以被改写。
所以对任何人来说,这也并不奇怪。再想想吧。
你需要思考,安德烈。蟑螂就在你的代码中。
好吧,我今天这么想......我会努力向正确的方向推动。
一个新的柱子 已经打开......iBars()增加了一个......,但计算的柱子数量没有变化。而且它不会改变,直到它重新计算这个新栏...
下一步是什么?
这不应该在指标中正确工作。
如果我没有弄错的话,在帮助中,有一个关于所有TFs的分页数据的脚本明细,应该有一个警告,即不能以这种方式从指标中请求历史数据,因为指标是异步工作的。
建议在你绑定句柄后使用BarsCalculated()一次。
UPD: 历史分页的脚本和解释为什么它在指标中不起作用:https://www.mql5.com/ru/docs/series/timeseries_access
你确定你理解代码的含义吗?
你需要思考,安德烈。就是在你的代码中,有蟑螂的存在。
好吧,我今天这么想......我会努力向正确的方向推动。
一个新的柱子 打开了......iBars()增加了一个......,但计算的柱子数量没有变化。而且它不会改变,直到它重新计算这个新栏...
下一步是什么?
我的好兄弟,请不要给我写信,你不在圈子里。
或者用代码来证明它。
你确定你理解代码的含义吗?
有很大的可能性--肯定和理解
你想让指标在调用另一个指标之前同步 "较高的TF"。
我的指标有效,对吗?- 你可以将BarsCalculated()添加到其中--但正如在交付的指标示例中,例如MACD.mql5
如果我需要记住做什么和怎么做,我通常会搜索Mladen Rakic的指标并查看他的指标,编码风格很特别(更正确的说是格式),但它们是100%的功能。
https://www.mql5.com/ru/users/mladen
亲爱的。请不要给我写信,你不在圈子里。
或者用密码来证明它。
那么,对你来说,呼...
开发人员不要回应这样的废话,伊戈尔很快就会感到厌烦......而留下来自言自语......
就请鼓手把你的倾诉移到一个单独的主题里......以避免弄乱适当的主题......
关于交易、自动交易系统和交易策略测试的论坛
虫子,虫子,问题
Andrey Dik, 2021.05.28 05:16
我试图检查所要求的时间框架(M5)上的数据同步 和指标的准备情况,如果它没有准备好,我将退出。
因此,该指标只在M1栏开盘时工作一次,而不是在每个tick上工作。
我希望开发商能听从我的请求。
伊戈尔很快也会感到厌烦......
我只是有一个想了解的愿望
在MT5中,有很多关于同步的隐患,现在的问题也是关于这个问题。
我认为,如果该指标在每个条形上使用结构(线,而不是箭头)
这个周期对经济计算来说是足够的。
如果是第一次调用,那么prev_calculated将=0,在随后的调用中,新条形将被重新计算。
如果两个指标都写得正确,你不需要额外同步任何东西,一切都会正常,唯一剩下的是将CopyBuffer()与被调用指标的所需数值数量进行比较。
我只是想搞清楚。
在MT5中,有很多关于同步的隐患,现在的问题也是关于这个问题。
我认为,如果该指标在每个条形上使用一个结构(线,而不是箭头)
这个周期对经济计算来说是足够的。
如果是第一次调用,那么prev_calculated将=0,在随后的调用中,新条形将被重新计算。
如果两个指标都写得正确,你不需要额外同步任何东西,一切都会正常,唯一剩下的是将CopyBuffer()与被调用指标的所需数值数量进行比较。
这就是我的意思。在第一次运行前尝试同步是可以的,但这样............。
我只是想搞清楚。
在MT5中,有很多关于同步的隐患,现在的问题也是关于这个问题。
我认为,如果该指标在每个条形上使用一个结构(线,而不是箭头)
这个周期对经济计算来说是足够的。
如果是第一次调用,那么prev_calculated将=0,在随后的调用中,新条形将被重新计算。
如果两个指标都写得正确,你不需要额外同步任何东西,一切都会正常,唯一剩下的是将CopyBuffer()与被调用指标的所需数值数量进行比较。
如果你想理解而不是反对,你应该写一些类似下面的代码。
在高级指标的M1和M3上运行时,在日志中得到类似这样的信息。
2021.05.28 19:05:01.408 OldTF (EURUSD,M3) 0.000234 sec, 50000 bars calculated, 50000 bars total
2021.05.28 19:05:03.860 LitTF (EURUSD,M1) 0.007452 sec, 50023 bars calculated, 50023 bars total
2021.05.28 19:06:00.670 OldTF (EURUSD,M3) 0.000001 sec, calculated 1 bars, total bars 50001
2021.05.28 19:06:02.211 LitTF (EURUSD,M1) 0.008180 sec, 50024 bars calculated, 50024 bars total
2021.05.28 19:07:00.780 LitTF (EURUSD,M1) 0.000004 sec, calculated 1 bars, total bars 50025
2021.05.28 19:08:01.246 LitTF (EURUSD,M1) 0.000014 sec, settled 1 bars, total bars 50026
2021.05.28 19:09:00.959 OldTF (EURUSD,M3) 0.00000014 sec, calculated 1 bars, total bars 50002
2021.05.28 19:09:01.775 LitTF (EURUSD,M1) 0.006898 sec, 50027 bars calculated, 50027 total bars
2021.05.28 19:10:00.830 LitTF (EURUSD,M1) 0.000004 sec, calculated 1 bars, total bars 50028
即使用肉眼也能看到,首先,这是建立快速指标的最快方法,其次,预计算被清零了。
在这个例子中,指标被强制在每个新的条形图M3中完全重新计算。
好吧,你不一定非要这么做。
开发人员不要回应这样的废话,伊戈尔很快也会感到厌烦......而留下来自言自语......
只是需要请drubashka把你的倾诉移到一个单独的主题中,以便不要把正确的主题弄得乱七八糟......
看看上面的代码,吃掉你的护照,把灰烬洒在你的头上,把你的傲慢推到没有人可以看到的地方。