程序的问题出现在哪里

 

自定义两个函数 double funEMAABS(int i) double funEMA(int i),给出相同的 i 值,为什么两个函数返回值的绝对值总是相等(有时候只差一个正负符号)?请高手指教。两个自定义的函数如下:

double funEMAABS(int i)  //第一个函数
{  
     
   MTMABS[i] = MathAbs(iClose(NULL,0,i)-iClose(NULL,0,i+1));
   
   EMAABS1[i] = (6*MTMABS[i]
                +5*MTMABS[i+1]
                +4*MTMABS[i+2]
                +3*MTMABS[i+3]
                +2*MTMABS[i+4]
                +1*MTMABS[i+5])/21;
      
   return(EMAABS1[i]);
}


double funEMA(int i)   //第二个函数
{
    
   MTM[i] = iClose(NULL,0,i)-iClose(NULL,0,i+1);
   EMA1[i] = (6*MTM[i]
              +5*MTM[i+1]
              +4*MTM[i+2]
              +3*MTM[i+3]
              +2*MTM[i+4]
              +1*MTM[i+5])/21;
              
              
   return(EMA1[i]);
}

谢谢。

 
MTMABS[i]和MTM[i]都是array不是函数

所以下面[i+n]当n>0的时候mtmabs和mtm都会返回0,n=0的时候才有值,所以只差一个符号

你把mtmabs和mtm做成函数,就ok了
 
一语中的,问题已经解决了。我自己曾经反复检查这两段代码,也没找到问题所在。多谢 topea 的指点。
原因: