首页 技术指标 帖子

UltraCCI:MetaTrader 5 的高效指标解析

附件
740.zip (21.1 KB, 下载 0次)

真实作者:

dm34@mail.ru

UltraCCI指标是基于商品通道指数(CCI)构建的,主要用于分析趋势方向及其多个信号线。信号线的计算算法如下,我们以指标输入参数作为源数据:

  • StartLength - 第一个信号线的最小初始值;
  • Step - 周期变化的步长;
  • StepsTotal - 周期变化的总数。

信号线中的任何周期值都是通过算术等差数列计算得出的:

SignalPeriod(Number)  =  StartLength + Number * Step

其中,Number变量的取值范围为0到StepsTotal。得到的周期值被添加到变量数组中,并在每次指标更新时用于获取平滑的RSI指标值数组。每个平滑后的值的当前趋势方向会被计算出来,同时也会确定CCI平滑值数组中的正负趋势数量。最终的正负趋势数量会再次进行平滑处理,并用作形成颜色云的指标线,显示效果使用了DRAW_FILLING样式类。

该指标的趋势方向由云的颜色决定,而趋势的强度由云的宽度决定。您可以使用设定的超买(UpLevel)和超卖(DnLevel)水平,这些水平是以指标最大振幅的百分比值设定的。

此外,该指标还提供了判断趋势强度变化速度的功能,显示为彩色点。在趋势增强的情况下,这些点的颜色将与云的颜色相同,否则,点的颜色将会是对立的。

平滑算法可从十种不同的版本中选择:

  1. SMA - 简单移动平均;
  2. EMA - 指数移动平均;
  3. SMMA - 平滑移动平均;
  4. LWMA - 线性加权移动平均;
  5. JJMA - JMA自适应平均;
  6. JurX - 超线性平滑;
  7. ParMA - 抛物线平滑;
  8. T3 - Tillson多重指数平滑;
  9. VIDYA - 使用Tushar Chande算法的平滑;
  10. AMA - 使用Perry Kaufman算法的平滑。

需要注意的是,不同平滑算法的Phase参数意义完全不同。对于JMA而言,它是一个外部Phase变量,范围从-100到+100;对于T3,它是一个平滑比率,乘以100以便更好地可视化;对于VIDYA,它是CMO振荡器周期;而对于AMA,它是一个慢EMA周期。在其他算法中,这些参数对平滑没有影响。对于AMA来说,快速EMA周期是一个固定值,默认等于2;提升的幂也同样等于2。

该指标使用SmoothAlgorithms.mqh库类(必须复制到terminal_data_folder\MQL5\Include)。关于类的使用,已在文章“不使用额外缓冲区的中间计算平均价格序列”中进行了详细描述。

指标输入参数:

//+----------------------------------------------+
//| 指标输入参数                   |
//+----------------------------------------------+
input int CCI_Period=13;                           // CCI指标周期
input ENUM_APPLIED_PRICE Applied_price=PRICE_CLOSE; // 应用价格
//----
input Smooth_Method W_Method=MODE_JJMA;           // 平滑方法
input int StartLength=3;                          // 初始平滑周期                    
input int WPhase=100                             // 平滑参数
//----  
input uint Step=5                                // 周期变化步长
input uint StepsTotal=10                         // 周期变化数量
//----
input Smooth_Method SmoothMethod=MODE_JJMA;      // 平滑方法
input int SmoothLength=3                        // 平滑深度
input int SmoothPhase=100                       // 平滑参数
//----                          
input uint UpLevel=80                            // 超买水平, %%
input uint DnLevel=20                            // 超卖水平, %%
input color UpLevelsColor=DarkViolet;             // 超买水平颜色
input color DnLevelsColor=DarkViolet;             // 超卖水平颜色
input STYLE Levelstyle=DASHDOTDOT_;              // 水平样式
input WIDTH LevelsWidth=Width_1;                 // 水平宽度                       
//+----------------------------------------------+

UltraCCI

相关帖子

评论 (0)