我有一个指标,是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))
但是运行的时候并没有起到作用,还是有多余的箭头。
附件中是原始的我没修改过的文件,请大侠们帮我修改修改,谢谢。
楼上问的问题是对的,从你附加的代码看,是MT5的指标,而你使用的iMA调用,又是MQL4的用法,在这里只会返回指标的句柄,而不是实际的EMA值。
并且,在OnCalculate中你调用EMA,也不能直接这样调用,你可以参考下原有代码中对Stochastic指标是如何调用的,照猫画虎,使用类似的代码就可以取得所需的每个柱的EMA值,然后按各柱EMA值比较作判断。
修改的代码还有些分散(参照原有代码中Stochastic的使用), 所以最好你自己完成,相信是个很好的学习过程 :)
我有一个指标,是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))
但是运行的时候并没有起到作用,还是有多余的箭头。
附件中是原始的我没修改过的文件,请大侠们帮我修改修改,谢谢。