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

周期 - MetaTrader 5脚本

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

Cycle Period - indicator for MetaTrader 5

Cycle Period - indicator for MetaTrader 5

该指标旨在衡量金融资产价格变化周期。

该指标在其指标缓冲区中存储当前的市场周期值,由于显而易见的原因,该值永远无法稳定。该指标的创建是为了与振荡指标一起使用,以使其适应不断变化的市场周期以及向自适应周期的转变。

该指标的灵感来自 John Ehlers 的文章“使用费舍尔变换”发表于 2002 年 11 月《股票及商品技术分析》杂志。  

Cycle Period - indicator for MetaTrader 5

周期指标句柄变量必须在全局级别声明,以便让该指标在另一个指标的代码中使用(例如,在右室指数振荡器):

//---- 指标句柄的整型变量声明
整数CP_句柄;

然后,周期指示器句柄必须接收在右室指数指标初始化块:

//---- 获取 CyclePeriod 指标句柄   CP_句柄=定制无效的,0,「周期」,阿尔法);
  如果(CP_句柄==INVALID_HANDLE)
     {
      打印“无法获取 CyclePeriod 指标句柄”);
      返回1);
     }

现在,我们有了新的阿尔法变量,即所用指标的输入参数和周期平均比率。该变量必须转换为开发的指标输入变量。

//+---------------------------------------------------------+
//|指标输入参数                 |
//+---------------------------------------------------------+
输入 双倍的阿尔法=0.07;// 指标平滑率

上一个长度输入变量必须从输入参数列表中删除,将其转换为内部变量OnCalculate()功能。

用于指标平滑的数组的大小由长度参数值:

//---- 变量数组的内存分配    数组调整大小(数量,长度);
  数组调整大小(值1,长度);
  数组调整大小(值2,长度);

该参数的值现在正在改变。因此,最好将这些数组的大小设置为不小于该变量的假定高值。

在分析指标图表时,我们可以看到该值不超过 100。因此,数组大小将具有相同的值:

//----变量数组的内存分配    数组调整大小(计数,最大周期);
  数组调整大小(值1,最大周期);
  数组调整大小(值2,最大周期);

进一步,当前柱的周期值OnCalculate()块必须取自周期自定义指标缓冲区,让它们代替长度前一个输入参数。

//---- 主指标计算循环  为了(栏=第一;栏已停止();酒吧++)
     {
      //---- 将新出现的数据复制到数组中     如果复制缓冲区(CP_句柄,0,rates_total-1-酒吧,4,句号)<=0返回(重置);

      长度=整数数学地板((4.0*时期[0]+3.0*时期[1]+2.0*时期[2]+句点[3])/20.0));
      如果(条<长度) 长度=条;// 将平滑减少到实际的条数

在这种情况下,最后四个值取自周期执行指标缓冲区及其线性加权平滑,然后将获得的值用作长度平滑期。最后,必须更改指标代码末尾的行:

      如果(条1) Recount_ArrayZeroPos(计数,MAXPERIOD);

结果,我们收到了自适应RVI振荡器:

Cycle Period - indicator for MetaTrader 5


附件下载

📎 rvi.mq5 (9 KB)

📎 adaptivervi.mq5 (9.76 KB)

📎 cycleperiod.mq5 (18.96 KB)

Source: MQL5 #562

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