文章 "DoEasy 函数库中的时间序列(第四十五部分):多周期指标缓冲区"

 

新文章 DoEasy 函数库中的时间序列(第四十五部分):多周期指标缓冲区已发布:

在本文中,我将着手改进指标缓冲区对象和集合类,从而可在多周期和多品种模式下操作。 我打算在当前品种图表上的任何时间帧内接收和显示数据缓冲区对象的操作。

其余动作和 OnCalculate() 应答程序逻辑均在代码注释中进行了详细阐述。 操控多周期指标变得更加容易。 我们不需要自行计算任何东西。 取而代之,我们可以简单地将数据写入缓冲区,让函数库定义将数据放置在何处,以及如何显示数据:



作者:Artyom Trishkin

 

这个库是否已经可以完成任何实际任务?


我希望看到一个实际的例子,例如--子窗口中的高级 TF 的MACD,即在图表 M1.... 上抛出一个借助该库编写的指标。Н1...并在子窗口中查看 D1 上的 MACD

 
Igor Makanu:

这个图书馆是否已经可以执行任何实际任务,还是仍在进行中?


我希望看到一个实际的例子,例如--子窗口中的高级 TF 的 MACD,即在图表 M1.... 上抛出一个借助该库编写的指标。Н1...并在子窗口中查看 D1 上的 MACD

计划的工作完成了不到一半。

如果 MACD 计算包含在借助库制作的指标代码中,那么是的,它可以工作。如果您需要通过库输出标准值,那么...我想您也可以做到这一点--标准 MACD 的数据应在 OnCalculate() 中写入基于库创建的指标缓冲区。在本文的示例中,价格被写入指标缓冲区。而不是价格 - 写入 MACD 值。的确,您需要从所需的时间框架中提取 MACD,这很自然。此外,稍后还将提供用于处理标准和自定义指标的 类 - 这将比此处描述的更容易。

 
Artyom Trishkin:

计划完成的部分还不到一半。

如果 MACD 计算包含在借助库制作的指标代码中,那么是的,它可以工作。如果您需要通过库输出标准值,那么...我想您也可以做到这一点--标准 MACD 的数据应在 OnCalculate() 中写入基于库创建的指标缓冲区。在本文的示例中,价格被写入指标缓冲区。而不是价格 - 写入 MACD 值。的确,您需要从所需的时间框架中提取 MACD,这很自然。此外,稍后还将提供用于处理标准和自定义指标的 类 - 这将比我在这里描述的更简单。

好了,我们需要等待

这类任务--从高级 TF(随机指标、MACD 或仅 MA)中查看指标--在交易者论坛上总是有需求的,问题当然不是如何做,而是您的库解决这类任务的速度有多快(就代码编写速度或编写方便程度而言)。

 
Igor Makanu:

好吧,那我们就等着吧

这类任务--从高级 TF(随机指标、MACD 或仅 MA)中观察指标--在交易者论坛上总是有需求的,问题当然不在于如何做,而在于您的库能多快(在代码编写速度或编写方便程度方面)解决这类任务。

我曾尝试在不修改库的情况下完成这样的任务。可以做到,但需要额外的步骤。

感谢您的提示--这只是计算缓冲区对象缺少的功能。我们将在下一篇文章中介绍。

 

您好,感谢您的库和工作。

我无法在编译时不出错。(我使用的是第 90 部分的最新版本)

我做了这样的修改

MQL5\Indicators\TestDoEasy\Part45\TestDoEasyPart45.mq5

第 403 行:

  • engine.SetSoundsStandart(); -->engine.SetSoundsStandard();

MQL5\Include\DoEasy\Objects\Indicators\Buffer.mqh

第 84 行

  • virtual void PrintShort(const bool dash=false,const bool symbol=false) ; -->virtual void PrintShort(const bool dash=false,const bool symbol=false) {return;}

可以吗?


 
thebeno #:

你好,感谢这个图书馆和你们的工作。

我无法在编译时不出错。(我使用的是第 90 部分的最新版本)

我做了如下修改:

MQL5\Indicators\TestDoEasy\Part45\TestDoEasyPart45.mq5

第 403 行:

  • engine.SetSoundsStandart(); -->engine.SetSoundsStandard();

MQL5\Include\DoEasy\Objects\Indicators\Buffer.mqh

第 84 行:

  • virtual void PrintShort(const bool dash=false,const bool symbol=false) ; -->virtual void PrintShort(const bool dash=false,const bool symbol=false) {return;}

可以吗?


你好。
是的,这很正常。该库正在开发中,并在不断变化。因此,在连接程序库的第 90 部分时,将无法编译为第 45 版本编写的程序。
,您需要编辑程序本身的代码,以适应新的变化。
,无论如何,在程序库开发结束时,所有示例都将与最新版本保持一致。