文章 "创建多交易品种、多周期指标" - 页 3

 
Denis Kirichenko #:

要测试某些东西,你就必须了解发生了什么。)

我意识到,对我来说,绘制自己的版本更容易,因为我并不熟悉当前的方法。特别是,在我看来,CIndMSTF 类是某种超类。然后在它的基础上创建一系列指标。令人毛骨悚然的是,IndMSTF.mqh 文件有 4000 行代码))我采用的方法是使用CIndicators 类的实例作为指标集合。这非常方便。你不需要重新发明轮子...

那为什么 CIndMSTF 类要在缓冲区(SBuffer m_buffers[])上存储数据呢?我们在 OnCalculate() 中计算了一次,这就足够了。也就是说,我们通过引用将其作为参数,计算后将其交给您...

等我完成我的版本后,我会写更多我不同意的地方...

是的,我很喜欢这种机制:

因为它的可扩展性--一旦计算出的数据与计算部分分开,它就会在一个单独的数组中。CopyBuffer 将给定数量的条形图复制到数组中,并调整接收数组的大小以适应复制的数据量。也就是说,如果您一直需要数据,就需要一直从计算部分的缓冲区中复制数据。

在这里,我们使数组不断填充所有数据,并通过索引从数组中获取数据。不复制。复制在启动时进行一次,然后每次只向列表末尾添加两条数据。我想在你提到的 SB 类中也使用了同样的逻辑。我可能忘了,也可能弄错了。

 
Artyom Trishkin #:

由于其可扩展性--将计算数据保存在与计算部分分开的数组中。CopyBuffer 将指定数量的条形图复制到数组中,并改变接收数组的大小以适应复制的数据量。也就是说,如果您一直需要数据,就应该一直从计算部分的缓冲区中复制数据。

在这里,我们使数组不断填充所有数据,并通过索引从数组中获取数据。不复制。复制在启动时进行一次,然后每次只向列表末尾添加两个数据条。我想在你提到的 SB 类中也使用了同样的逻辑。我可能忘了,也可能弄错了。

是的, 数组填充。但也有直接访问的尝试--CIndicator::GetData()的 api 方法,它直接调用本地函数 CopyBuffer()。

 
100 个错误,6 个警告 100 7.为什么编译时会出现 100 个错误?我做错了什么?

 
StohanoV #:
100 个错误,6 个警告 100 7.为什么编译时会出现 100 个错误?我做错了什么?

编辑器日志中的第一个错误是什么?

 
Artyom Trishkin #:

开发人员在论坛上的留言

我记得有关于 4 的类似信息,但我一定是错过了关于 5 的信息....。

奇怪的是,这些东西无法在终端进行配置。文档中也没有说明。

请告诉我,您的方法是否允许您在第一个跳动点时从上层 TF 的零缓冲区获取数据?

 
Aleksey Vyazmikin #:

我记得关于四人组是这样说的,但关于五人组,显然我错过了....。

奇怪的是,这些东西并没有在终端中配置。文档中也没有说明。

请告诉我,您的方法是否允许在第一个跳动点时从上方 TF 的零缓冲区获取数据?

您应该试试。可能不行