请大家帮我看看我的代码哪里出现问题了

 

我有一个指标,是KDJ指标上穿25时候主图上有箭头,下穿75时候也有箭头。但是箭头太多了。我想通过EMA均线过滤一下。55均线在89均线之上的时候,只显示KDJ指标的上箭头,不显示下箭头;反之亦然。

 于是我在代码中定义了   double ma1,ma2;

并且    

 ma1=iMA(NULL, 0, 55 , 0, MODE_EMA, PRICE_CLOSE);

ma2=iMA(NULL, 0, 89 , 0, MODE_EMA, PRICE_CLOSE);

 在判断语句的时候加入了ma1>ma2

 if((show_KD_cross && fastMAnow>slowMAnow && fastMAprevious<slowMAprevious && ma1>ma2)

         || (show_K_OBOScross && fastMAnow>25 && fastMAprevious<25 && ma1>ma2)

         || (show_D_OBOScross && slowMAnow>25 && slowMAprevious<25 && ma1>ma2))

另一箭头的判断:

      else

         if((show_KD_cross && fastMAnow<slowMAnow && fastMAprevious>slowMAprevious && ma1<ma2)

            || (show_K_OBOScross && fastMAnow<75 && fastMAprevious>75 && ma1<ma2)

            || (show_D_OBOScross && slowMAnow<75 && slowMAprevious>75 && ma1<ma2))

 

但是运行的时候并没有起到作用,还是有多余的箭头。

附件中是原始的我没修改过的文件,请大侠们帮我修改修改,谢谢。 

附加的文件:
 
tramper:

我有一个指标,是KDJ指标上穿25时候主图上有箭头,下穿75时候也有箭头。但是箭头太多了。我想通过EMA均线过滤一下。55均线在89均线之上的时候,只显示KDJ指标的上箭头,不显示下箭头;反之亦然。

 于是我在代码中定义了   double ma1,ma2;

并且    

 ma1=iMA(NULL, 0, 55 , 0, MODE_EMA, PRICE_CLOSE);

ma2=iMA(NULL, 0, 89 , 0, MODE_EMA, PRICE_CLOSE);

 在判断语句的时候加入了ma1>ma2

 if((show_KD_cross && fastMAnow>slowMAnow && fastMAprevious<slowMAprevious && ma1>ma2)

         || (show_K_OBOScross && fastMAnow>25 && fastMAprevious<25 && ma1>ma2)

         || (show_D_OBOScross && slowMAnow>25 && slowMAprevious<25 && ma1>ma2))

另一箭头的判断:

      else

         if((show_KD_cross && fastMAnow<slowMAnow && fastMAprevious>slowMAprevious && ma1<ma2)

            || (show_K_OBOScross && fastMAnow<75 && fastMAprevious>75 && ma1<ma2)

            || (show_D_OBOScross && slowMAnow<75 && slowMAprevious>75 && ma1<ma2))

 

但是运行的时候并没有起到作用,还是有多余的箭头。

附件中是原始的我没修改过的文件,请大侠们帮我修改修改,谢谢。 

MT4 还是MT5?
 

楼上问的问题是对的,从你附加的代码看,是MT5的指标,而你使用的iMA调用,又是MQL4的用法,在这里只会返回指标的句柄,而不是实际的EMA值。

并且,在OnCalculate中你调用EMA,也不能直接这样调用,你可以参考下原有代码中对Stochastic指标是如何调用的,照猫画虎,使用类似的代码就可以取得所需的每个柱的EMA值,然后按各柱EMA值比较作判断。

修改的代码还有些分散(参照原有代码中Stochastic的使用), 所以最好你自己完成,相信是个很好的学习过程 :) 

 
我需要的是MT5。附件中的stochastic_cross_alert_sigoverlay.mq5 也是MQ5。不过加的ma1,ma2代码是从MQ4的代码中直接复制过来的。