运行计算BUG
//方法一和方法二的,g_iCrossDownNum_1 与 g_iCrossDownNum_2不相等。按道理应该是相等的。 代码如下: Params Vars Global Integer g_iCrossUpNum_1(0); Global Integer g_iCrossDownNum_1(0); Global Integer g_iCrossUpNum_2(0); Global Integer g_iCrossDownNum_2(0); Defs Events OnInit() { SubscribeBar("al888.SHFE","1d",20150222); } //下一个Bar开始前,重新执行当前bar最后一次,参数为当前bar的图层数组 OnBarClose(ArrayRef<Integer> indexs) { Numeric pdi; Numeric mdi; Numeric adxr; Numeric adx; Numeric diff; Numeric iRet = 0; adx = getDMI(pdi,mdi,adxr); diff = pdi - mdi; //方法一:------------------------------- if(CrossOver(diff,0)){ // g_iCrossUpNum_1 = g_iCrossUpNum_1 + 1; } if(CrossUnder(diff,0)){ g_iCrossDownNum_1 = g_iCrossDownNum_1 + 1; PlotString("Down1",text(g_iCrossDownNum_1),High,yellow); } //方法二:-------------------------------为了提高运算效率,但运算结果不对。 if(CrossOver(diff,0)){ // g_iCrossUpNum_2 = g_iCrossUpNum_2 + 1; }else if(CrossUnder(diff,0)){ g_iCrossDownNum_2 = g_iCrossDownNum_2 + 1; PlotString("Down2",text(g_iCrossDownNum_2),low,green); } //方法一和方法二的,g_iCrossDownNum_1 与 g_iCrossDownNum_2不相等。按道理应该是相等的。 //我发现的问题出在:当前1个bar刚上穿,第2个bar下穿,则不会计算。所以,问题出在这里?我说清楚了没?现在键盘交给你。 if(g_iCrossDownNum_1 != g_iCrossDownNum_2) PlotBool("no",true); }