Der Ringpuffer — ist die einfachste und zugleich die wirksamste Organisationsart der Daten für die Berechnungen im gleitenden Fenster. Im Artikel ist beschrieben, wie dieser Algorithmus gestaltet ist, und es ist gezeigt, wie mit seiner Hilfe eine Berechnung im gleitenden Fenster ein einfacher und wirksamer Prozess sein wird.
只计算最后一个指标值,而不是在新的刻度线出现时完全重新计算,这是一个标准的故事,奇怪的是你竟然开始讨论这个问题。更奇怪的是,你还把它说成是你发现的窍门。实际上,这是编写所有指标的标准。文档中也有提及。这就是为什么每个人都在最后一栏/刻度上使用重新计算。
我会尽量回答得更详细一些:
有一个相当重要的指标。它在 Expert Advisor 中很少被使用,也就是说,直到所有条件都被触发。例如,每隔 300-1000 条(事实上,这取决于许多条件,这些条件用条件运算符表示)。如果在每个条形图中都能获得一次值,那么它的次数就会超过条件运算符正文中的 隐藏指标调用 次数。
大致如此。
原则上,采用这种方法的极限值应始终等于 P。我试着给你一个更详细的答复:
这是一个相当重要的指标。在 "智能交易系统 "中,它很少被使用,也就是说,直到所有条件都被触发。例如,每 300-1000 条(事实上,这取决于许多条件,用条件运算符表示)。如果在每个条形图中都能获得一次值,那么它的次数就会超过条件运算符正文中的 隐藏指标调用 次数。
顺便说一句,这种方法并不总能节省开支。因为在调用指标时,仍然要计算遗漏的条形图。
但如果我知道很少会满足条件,我就会使用这种方法,而如果经常调用指标,最好是计算整个历史记录。
当然,我应该只计算新的条形图,因为旧的条形图已经知道了,这一点很清楚。
现在我认为有必要严格地从 P 开始计算,而不进行比较。
if (limit > P)limit=P;//эту строку вообще убрать и сделать сразу limit=P;例如,如果在循环中从 P 开始计算,而 P 等于 10,那么计算将从 10 条开始。
但是,这并不重要,我们可以保持原样。不值得这样做。
"当调用指标 时,仍会计算遗漏的条形图",能说得详细点吗?
老实说,我现在只在零条或第一条上有这样的指标。
例如,下面是其中一个指标的主要代码部分:
也就是说,这些是供测试人员使用的指标。当然,它们不会被用于可视化,您在其中看不到任何东西)。
但是,如果指示器由多个缓冲区组成,其中一个数组由另一个数组建立,则需要一个环形缓冲区。
"当调用指标 时,仍会计算遗漏的条形图",您能说得更详细些吗?
假设在图表上有 1000 个条形图时调用了该指标,它计算了这些条形图。
但如果下一次调用是在图表上的条形图已经达到 1500 条时,它将计算所有新的(499)条形图。
老实说,现在我的这些指标只对零条或第一条有意义。
那指标还有什么意义呢?将这些计算以函数的形式转移到 Expert Advisor 中,速度会更快。
我会尽量回答得详细些:
无论您是否调用该指标,它都会在每个条形图上进行计算。请阅读说明。
如果您想要真正的加速,请将计算移到 EA 内部。别无他法。到此为止。所有关于如何成功插入 "加速 "的帖子读起来都很 可笑。
你的话题与本主题无关。到此为止吧。
亲爱的瓦西里
首先,感谢您撰写这篇出色的文章,并用不同的指标来实现这篇文章。
我想请问您,是否有可能发布一个使用环形缓冲区计算高点/低点部分的代码示例?我发现在市场运行时很难得到正确的结果。使用 OnChangeValue()函数 更新价格变化时,我似乎丢失了指针。
在此先表示感谢。
亲爱的瓦西里
首先,感谢您撰写这篇出色的文章,并用不同的指标来实现这篇文章。
我想请问您,是否有可能发布一个使用环形缓冲区计算高点/低点部分的代码示例?我发现在市场运行时很难得到正确的结果。使用 OnChangeValue()函数 更新价格变化时,我似乎丢失了指针。
在此先表示感谢。
请参见以下示例: https://www.mql5.com/zh/articles/3047#c6
请看这个例子: https://www.mql5.com/zh/articles/3047#c6
我看过了。我查看了您提供的示例。它们显示了我在处理市场运行时更新值时遇到的相同问题。请查看您提供的随机指标。添加新值不成问题,但当我们尝试在 CRiMaxMin 类中使用 Stoch.ChangeLast() 或 OnChangeValue() 时,它却不起作用。它不会相应地改变值。如果您能检查一下或发送一个工作代码示例,那将非常好。
谢谢。
这篇文章很棒,他很会编程!
如果德文翻译不那么糟糕 就好了!!!!!
我在哪里可以找到英文版?
能换个地方吗?