intOnCalculate(...)
{
// индекс последнего посчитанного на прошлом вызове бара// с которого начинаем расчётint nStartBar = rates_total - MathMax(prev_calculated, 1);
for(int i = nStartBar; i >= 0; i--)
{
// рассчитываем индикатор на всех непосчитанных барах
}
}
我有一个想法。我以后再写。
这个想法已经死了。
我会要求开发人员制作类似HistoryUpdated()系统的东西,检查所有历史是否被更新。
开发人员 不会帮助你,因为他们不会。
已经说过:如果rate_total和prev_calculated之间的差异大于1,那么就是historyUpdated。
大于0,而不是1。
И?这是否解决了问题?
或者对你来说,在每一个新的条形图 上重新计算整个故事是没有问题的?
大于0,而不是1。
И?这是否解决了问题?
或者对你来说,在每一个新的条形图 上重新计算整个故事是没有问题的?
你被告知的情况是正确的。大于1.当新条形图出现时,差值为1。
而这完全解决了问题。
一个正常的指标需要很少的时间来完全重新计算。不到一秒钟。
你被告知的情况是正确的。超过1.当一个新的柱子出现时,差值为1。
而这完全解决了问题。
一个正常的指标需要很少的时间来完全重新计算。不到一秒钟。
只有在缓冲区被清零的情况下才有效。
只有当你把缓冲区重置为零时,它才会起作用。
抱歉,但让我问一下。
- 为什么你需要把rate_total和prev_calculated分配给在这里的每个tick 上创建的单独变量?
- 在表达条件运算符if()和循环for()中要重新计算这些变量的差值吗?
- 为什么不直接引入一个变量来表示 rates_total 和 prev_calculated 之间的差异,比如说 limit?
根据任务的不同,实施方式也可能不同。细微的差别可能是不同的。你为什么不看看别人是如何实施的,这取决于不同的条件?包括,并在引子的帮助下,根据任务的不同,理解、决定、形成自己可接受的变体?P.S. 我将在此基础上补充。
你关于在条件运算符if(){}块中归零(counted=0)的想法对我来说似乎很清楚。
为了让你更清楚我上面的意思,这里摘录了文档 中的一个部分......。语言基础知识 / 函数 / 事件处理函数。
... 如果自上次调用OnCalculate()后,价格数据发生了变化(抽出了更深的历史或填补了历史空白),那么输入参数prev_calculated的值将被终端本身设置为零。
只有当你把缓冲区重置为零时,它才会起作用。
你不需要重置任何东西。
如果你把prev_caclulated重置为零,指标将完全重新计算。而这是正确的--你不知道在历史上到底发生了什么变化。也许,有的孔被装上了,也许螺柱在什么地方被清理了。有义务完全重新计算。在所有其他情况下,只有最后一个柱子会被重新计算(当一个新的柱子 出现时,最后两个)。
抱歉,但让我问一下。
- 为什么你需要在每次打勾时将rate_total和prev_calculated的值分配给不同的变量?
- 在有条件的if()语句和for()循环中,你是否重新计算这些变量的差异?
- 为什么不直接输入一个变量来表示 rates_total 和 prev_calculated 之间的差异,例如 limit?
根据任务的不同,实施方式也会有所不同。细微的差别可能是不同的。你为什么不看看别人是如何实施的,这取决于不同的条件?包括,并在引子的帮助下,根据任务的不同,理解、决定、形成自己可接受的变体?谢谢你。说得好。
不是的。这是为了在有差距的情况下,你可以重新计算整个历史。
P.S. 我将在此基础上补充。
你关于在条件运算符if(){}块中归零(counted=0)的想法对我来说似乎很清楚。
为了让你更清楚我上面的意思,这里摘录了文档 中的一个部分......。语言基础知识 / 函数 / 事件处理函数。
... 如果自上次调用OnCalculate()后,价格数据发生了变化(抽出了更深的历史或填补了历史空白),那么输入参数prev_calculated的值将被终端自己设置为零。
不需要重置任何东西。
如果你把prev_caclulated清零,指标将完全重新计算。而这是正确的--你不知道在历史上到底发生了什么变化。也许,有的孔被装上了,也许螺柱在什么地方被清理了。有义务完全重新计算。在所有其他情况下,只有最后一个柱子会被重新计算(当一个新的柱子 出现时,最后两个)。