作者:Dmitriy。
UltraMFI指标基于MFI(资金流动指数),通过多条信号线的分析来提供交易信号。信号线的计算算法如下。我们需要以下输入参数作为源数据:
- 起始长度 - 第一条信号线的最小初始值;
- 步长 - 周期变化步长;
- 总步数 - 周期变化的数量。
从信号线的众多周期值中,任何周期值都是通过算术级数计算得出的:
信号周期(编号) = 起始长度 + 编号 * 步长,
其中编号变量的取值范围从零到总步数。所得到的周期值会被添加到变量数组中,并在每个指标滴答时用于获取平滑后的拉里·威廉姆斯百分比范围指标值。当前趋势的方向会被计算出来,同时也会确定整个MFI平滑值数组中正向和负向趋势的数量。
最终的正向和负向趋势数量会被再次平滑,并用作形成显示为颜色云的指标线,使用DRAW_FILLING样式类来显示。
在这个指标中,趋势方向由颜色云决定,而趋势强度则由云的宽度决定。你可以利用设置为指标最大范围百分比的超买(上限)和超卖(下限)水平。
可以选择十种不同的平滑算法:
- SMA - 简单移动平均;
- EMA - 指数移动平均;
- SMMA - 平滑移动平均;
- LWMA - 线性加权移动平均;
- JJMA - JMA自适应平均;
- JJurX - 超线性平均;
- ParMA - 抛物线平均;
- T3 - 提尔森的多重指数平滑;
- VIDYA - 使用图沙尔·昌德算法的平滑;
- AMA - 使用佩里·考夫曼算法的平滑。
需要注意的是,Phase1和Phase2参数在不同平滑算法中有着完全不同的含义。对于JMA,它是一个外部相位变量,范围从-100到+100。对于T3,它是一个平滑比例,乘以100以便于可视化;对于VIDYA,它是CMO振荡器周期;而对于AMA,它是慢EMA周期。对于其他算法,这些参数对平均值没有影响。对于AMA,快速EMA周期是一个固定值,默认为2。提升的比例同样等于2。
该指标使用了SmoothAlgorithms.mqh库类(请将其复制到<terminal_data_directory>\MQL5\Include)。这些类在在不使用额外缓冲区的情况下对价格序列进行平均计算的文章中有详细描述。
//+----------------------------------------------+ //| 指标输入参数 | //+----------------------------------------------+ input int MFI_Period=13; // MFI指标周期 input ENUM_APPLIED_VOLUME VolumeType=VOLUME_TICK; // MFI指标成交量 //---- input Smooth_Method W_Method=MODE_JJMA; // 平滑方法 input int StartLength=3; // 初始平均周期 input int WPhase=100; // 平滑参数 // 对于JJMA,它在范围-100到+100之间变化,影响过渡期的质量; // 对于VIDIA,它是CMO周期,对于AMA,它是慢移动平均周期 //---- input uint Step=5; // 周期变化步长 input uint StepsTotal=10; // 周期变化数量 //---- input Smooth_Method SmoothMethod=MODE_JJMA; // 平滑方法 input int SmoothLength=3; // 平滑深度 input int SmoothPhase=100 // 平滑参数 // 对于JJMA,它在范围-100到+100之间变化,影响过渡期的质量; //---- input uint UpLevel=80; // 超买水平(%%) input uint DnLevel=20; // 超卖水平(%%) input color UpLevelsColor=Blue; // 超买水平的颜色 input color DnLevelsColor=Blue; // 超卖水平的颜色 input STYLE Levelstyle=DASH_; // 水平样式 input WIDTH LevelsWidth=Width_1; // 水平宽度 //+----------------------------------------------+

图1. UltraMFI指标
评论 0