首页 技术指标 帖子

带噪声过滤的随机摆动指标 - MetaTrader 4 专用

附件
9279.zip (2.09 KB, 下载 0次)

描述:

标准随机摆动指标,具备灵敏度调节功能。

该指标与标准随机摆动指标参数相同,但增加了一个 "灵敏度" 参数(参数窗口中的 Sens)。

此功能使我们能够只考虑低于某个预定义阈值的震荡,从而减少许多虚假信号。

经典的莱恩随机摆动指标将当前价格定位于某个指定数量的柱状图的最高价和最低价之间,这个数量由 %K(Kperiod)值定义,但它并不区分极值之间的差异,比如 1 点或 100 点。在这两种情况下,结果都是相同的,我们将得到超买/超卖信号。

但通过使用某个阈值,我们可以只考虑显著的震荡。

在图1(EURUSD,1M)中,展示了价格图表、标准随机摆动指标和本指标的对比。

图片:

图1。

该指标的字段与 iStochastic 相同,区别在于增加了一个参数 Sens - 灵敏度。

输出缓冲区也相同:0-随机值本身,1-信号线。

double iCustom(string symbol, int timeframe, "_StochNR", int %Kperiod, int %Dperiod, 
int slowing, int method, int price_field, int mode, int shift, Sens); // StochNR 增加了新的 Sens 字段

double iStochastic(string symbol, int timeframe, int %Kperiod, int %Dperiod, 
int slowing, int method, int price_field, int mode, int shift) // 标准随机摆动

在实际使用中,可以按照上述方式调用,但更好的方式是向您的 Stoch 函数添加一些代码:

double Stoch(int Kperiod, int Slowing, int PriceFild, double sens, int i) {  
   // 最大和最小价格
   double max,min,c;
   for(int j=i; j<i+Slowing; j++) {
      if(PriceFild==1) { // 依据收盘价
         max+=Close[ArrayMaximum(Close,Kperiod,j)];
         min+=Close[ArrayMinimum(Close,Kperiod,j)];
        }
      else { // 依据最高/最低价
         max+=High[ArrayMaximum(High,Kperiod,j)];
         min+=Low[ArrayMinimum(Low,Kperiod,j)];
        }
      c+=Close[j];
     }
   
   double delta=max-min;
   if(delta<sens) {
      sens/=2;
      max+=sens; min-=sens;
     }
   delta=max-min;
   if(delta==0) double s0=1;
   else s0=(c-min)/delta;

   return(100*s0);
  }

很明显,如果你需要信号线,你需要对其值进行额外的移动平均。另一种方法是从 iCustom 的第一个缓冲区获取,但这会比较慢。

如你所见,现在名称更具信息性,包含了价格计算类型。如果灵敏度定义大于 0,则该值会添加到摆动指标的名称中。

编辑备注:

请注意,这是一篇原始俄文版本的镜像翻译。

如果你有任何问题、建议或评论,最好在 此处进行留言。

如果你发现该代码对交易或学习有帮助,不要忘记感谢作者。

相关帖子

评论 (0)