周期 - MetaTrader 5脚本


该指标旨在衡量金融资产价格变化周期。
该指标在其指标缓冲区中存储当前的市场周期值,由于显而易见的原因,该值永远无法稳定。该指标的创建是为了与振荡指标一起使用,以使其适应不断变化的市场周期以及向自适应周期的转变。
该指标的灵感来自 John Ehlers 的文章“使用费舍尔变换”发表于 2002 年 11 月《股票及商品技术分析》杂志。

这周期指标句柄变量必须在全局级别声明,以便让该指标在另一个指标的代码中使用(例如,在右室指数振荡器):
//---- 指标句柄的整型变量声明 整数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振荡器:

附件下载
📎 rvi.mq5 (9 KB)
📎 adaptivervi.mq5 (9.76 KB)
📎 cycleperiod.mq5 (18.96 KB)
Source: MQL5 #562
💡 精彩内容推荐
✍️ 楼主最新发布
- •
- •
- •
- •
- •
- •
🔗 您可能感兴趣
- •
- •
- •
- •
- •
- •
🔐
请登录后参与评论
注册满12小时后评论,即可解锁附件下载
立即登录
