文章 "创建多交易品种、多周期指标" - 页 3 123 新评论 Artyom Trishkin 2023.11.05 10:13 #21 Denis Kirichenko #: 要测试某些东西,你就必须了解发生了什么。)我意识到,对我来说,绘制自己的版本更容易,因为我并不熟悉当前的方法。特别是,在我看来,CIndMSTF 类是某种超类。然后在它的基础上创建一系列指标类。令人毛骨悚然的是,IndMSTF.mqh 文件有 4000 行代码))我采用的方法是使用CIndicators 类的实例作为指标集合。这非常方便。你不需要重新发明轮子... 那为什么 CIndMSTF 类要在缓冲区(SBuffer m_buffers[])上存储数据呢?我们在 OnCalculate() 中计算了一次,这就足够了。也就是说,我们通过引用将其作为参数,计算后将其交给您...等我完成我的版本后,我会写更多我不同意的地方...是的,我很喜欢这种机制: 因为它的可扩展性--一旦计算出的数据与计算部分分开,它就会在一个单独的数组中。CopyBuffer 将给定数量的条形图复制到数组中,并调整接收数组的大小以适应复制的数据量。也就是说,如果您一直需要数据,就需要一直从计算部分的缓冲区中复制数据。 在这里,我们使数组不断填充所有数据,并通过索引从数组中获取数据。不复制。复制在启动时进行一次,然后每次只向列表末尾添加两条数据。我想在你提到的 SB 类中也使用了同样的逻辑。我可能忘了,也可能弄错了。 Denis Kirichenko 2023.11.06 15:55 #22 Artyom Trishkin #:由于其可扩展性--将计算数据保存在与计算部分分开的数组中。CopyBuffer 将指定数量的条形图复制到数组中,并改变接收数组的大小以适应复制的数据量。也就是说,如果您一直需要数据,就应该一直从计算部分的缓冲区中复制数据。 在这里,我们使数组不断填充所有数据,并通过索引从数组中获取数据。不复制。复制在启动时进行一次,然后每次只向列表末尾添加两个数据条。我想在你提到的 SB 类中也使用了同样的逻辑。我可能忘了,也可能弄错了。 是的,有 数组填充。但也有直接访问的尝试--CIndicator::GetData()的 api 方法,它直接调用本地函数 CopyBuffer()。 StohanoV 2023.11.10 10:48 #23 100 个错误,6 个警告 100 7.为什么编译时会出现 100 个错误?我做错了什么? Artyom Trishkin 2023.11.10 10:54 #24 StohanoV #:100 个错误,6 个警告 100 7.为什么编译时会出现 100 个错误?我做错了什么? 编辑器日志中的第一个错误是什么? Aleksey Vyazmikin 2024.06.27 00:11 #25 Artyom Trishkin #:开发人员在论坛上的留言 我记得有关于 4 的类似信息,但我一定是错过了关于 5 的信息....。 奇怪的是,这些东西无法在终端进行配置。文档中也没有说明。 请告诉我,您的方法是否允许您在第一个跳动点时从上层 TF 的零缓冲区获取数据? Artyom Trishkin 2024.06.27 03:40 #26 Aleksey Vyazmikin #:我记得关于四人组是这样说的,但关于五人组,显然我错过了....。奇怪的是,这些东西并没有在终端中配置。文档中也没有说明。请告诉我,您的方法是否允许在第一个跳动点时从上方 TF 的零缓冲区获取数据? 您应该试试。可能不行 123 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
要测试某些东西,你就必须了解发生了什么。)
我意识到,对我来说,绘制自己的版本更容易,因为我并不熟悉当前的方法。特别是,在我看来,CIndMSTF 类是某种超类。然后在它的基础上创建一系列指标类。令人毛骨悚然的是,IndMSTF.mqh 文件有 4000 行代码))我采用的方法是使用CIndicators 类的实例作为指标集合。这非常方便。你不需要重新发明轮子...
那为什么 CIndMSTF 类要在缓冲区(SBuffer m_buffers[])上存储数据呢?我们在 OnCalculate() 中计算了一次,这就足够了。也就是说,我们通过引用将其作为参数,计算后将其交给您...
等我完成我的版本后,我会写更多我不同意的地方...
是的,我很喜欢这种机制:
因为它的可扩展性--一旦计算出的数据与计算部分分开,它就会在一个单独的数组中。CopyBuffer 将给定数量的条形图复制到数组中,并调整接收数组的大小以适应复制的数据量。也就是说,如果您一直需要数据,就需要一直从计算部分的缓冲区中复制数据。
在这里,我们使数组不断填充所有数据,并通过索引从数组中获取数据。不复制。复制在启动时进行一次,然后每次只向列表末尾添加两条数据。我想在你提到的 SB 类中也使用了同样的逻辑。我可能忘了,也可能弄错了。
由于其可扩展性--将计算数据保存在与计算部分分开的数组中。CopyBuffer 将指定数量的条形图复制到数组中,并改变接收数组的大小以适应复制的数据量。也就是说,如果您一直需要数据,就应该一直从计算部分的缓冲区中复制数据。
在这里,我们使数组不断填充所有数据,并通过索引从数组中获取数据。不复制。复制在启动时进行一次,然后每次只向列表末尾添加两个数据条。我想在你提到的 SB 类中也使用了同样的逻辑。我可能忘了,也可能弄错了。
是的,有 数组填充。但也有直接访问的尝试--CIndicator::GetData()的 api 方法,它直接调用本地函数 CopyBuffer()。
编辑器日志中的第一个错误是什么?
开发人员在论坛上的留言
我记得有关于 4 的类似信息,但我一定是错过了关于 5 的信息....。
奇怪的是,这些东西无法在终端进行配置。文档中也没有说明。
请告诉我,您的方法是否允许您在第一个跳动点时从上层 TF 的零缓冲区获取数据?
我记得关于四人组是这样说的,但关于五人组,显然我错过了....。
奇怪的是,这些东西并没有在终端中配置。文档中也没有说明。
请告诉我,您的方法是否允许在第一个跳动点时从上方 TF 的零缓冲区获取数据?