欢迎访问 外汇EA下载与MT4/MT5自动交易资源 - 聚合外汇EA、黄金EA、量化交易工具与自动化交易实战内容。
登录 注册

使用环形缓冲区绘制 DEMA 的类 - MetaTrader 5脚本

author emer | 829 人阅读 | 0 人评论 |

The class for drawing the DEMA using the ring buffer - indicator for MetaTrader 5

The class for drawing the DEMA using the ring buffer - indicator for MetaTrader 5

CDEMAOnRingBuffer 类设计用于计算技术指标双指数移动平均线 (双指数移动平均线,DEMA)使用以下算法环形缓冲区。  

班级CDEMAOnRingBuffer :民众CArrayRing

标题

#include 

CDEMAOnRingBuffer.mqh 类的文件必须放置在需要在 MQL5\Include\ 中建立的 IncOnRingBuffer 文件夹中。 描述中附加了两个文件,其中包含该文件夹中的类所使用的示例。具有以下类别的文件环形缓冲区 和移动平均线 也必须在此文件夹中。

//--- 初始化方法:
布尔值初始化(                                // 如果出错则返回 false,如果成功则返回 true  整数            期间      =12,      // DEMA 周期  ENUM_MA_METHOD方法      =模式_EMA,// 平滑方法  整数            缓冲区大小=256,      // 环形缓冲区的大小  布尔值           as_series   =错误的    // true,如果是时间序列,否则 - false   );
//--- 基于时间序列或指标缓冲区的计算方法:          
整数MainOnArray(                  // 返回已处理元素的数量    常量 整数     费率_总计,    // 数组的大小  常量 整数     先前计算的,// 上次调用时处理的元素  常量 双倍的& 价格[],        // 用于计算的数组   );
//--- 基于数组的单独系列元素进行计算的方法          
双倍的主要值(              // 返回集合元素(柱)的 DEMA 值  常量 整数    费率_总计,    // 数组的大小  常量 整数    先前计算的,// 处理后的数组元素  常量 整数    开始,          // 从数组的重要数据开始的地方
  c昂斯特 双倍的价值,          // 元素(柱)值
  c昂斯特 整数    指数            // 元素(柱)索引
   );
//--- 访问数据的方法:
整数                 酒吧要求();// 返回绘制指标所需的柱数
细绳              姓名();        // 返回指标的名称
整数                时期();      // 返回周期
整数                 尺寸();        // 返回环形缓冲区的大小
双倍的              MA(整数指数);  // 返回移动平均线的值,索引就像时间序列一样

可以像从通常的数组中一样从环形缓冲区中获取指标的计算数据。例如:

//--- 具有 DEMA 指标计算方法的类:
#include CDEMAOnRingBuffer dema;

...//+------------------------------------------------------------------+
//|自定义指标迭代函数                              |
//+------------------------------------------------------------------+
整数 计算时常量 整数费率_总计,      // 数组价格[]的大小                常量 整数先前计算的,  // 上次调用时处理的柱                常量 整数开始,            // 从重要数据开始的地方                常量 双倍的& 价格[])      // 用于计算的数组  {//--- 基于时间序列的指标计算:    dema.MainOnArray(rates_total,prev_calculated,price);

...//--- 使用“dema”环形缓冲区中的数据,
//    例如,复制指标缓冲区中的数据:  为了整数i=开始;i已停止();i++)
      DEMA_Buffer[i] = dema[rates_total-1-我];// DEMA 指标线...//--- 返回下一次调用的 prev_calculated 值:  返回(费率_总计);
  }

计算 DEMA 时还计算移动平均线 执行相同的参数。我们可以使用MA方法从MA环形缓冲区中获取数据(整数指数):

//--- 使用移动平均环形缓冲区中的数据,
//    例如,复制指标缓冲区中的数据:  为了整数i=开始;i已停止();i++)
      MA_Buffer[i] = dema.MA(rates_total-1-我);// 移动平均线指标

请注意,环形缓冲区中的索引与时间序列

The class for drawing the DEMA using the ring buffer - indicator for MetaTrader 5

Test_DEMA_OnArrayRB.mq5 的工作结果,环形缓冲区大小为 256 个元素

The class for drawing the DEMA using the ring buffer - indicator for MetaTrader 5
Test_DEMA_OnValueRB.mq5 的工作结果,环形缓冲区大小为 256 个元素

编写代码时的发展MetaQuotes 软件公司整数 和 哥斯拉被使用。


附件下载

📎 cmaonringbuffer.mqh (14.9 KB)

📎 carrayring.mqh (6.64 KB)

📎 cdemaonringbuffer.mqh (8.17 KB)

📎 test_dema_onarrayrb.mq5 (3.03 KB)

📎 test_dema_onvaluerb.mq5 (3.44 KB)

Source: MQL5 #1416

🔐
请登录后参与评论
注册满12小时后评论,即可解锁附件下载
立即登录