请教热心人,这个指标哪里出错了?

 

下面的指标在当前的k线计算得到一个值,图表经过95根k线后,该时间点的K线会自动计算成另外一个值,我已经检查了三天了,查不出毛病,苦恼啊!!!!

#property copyright "kai"
#property link      "kai"

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Yellow
//---- input parameters
double middle[];
int init()
  {
//---- indicators
   IndicatorBuffers(1);
   SetIndexBuffer(0,middle);
   return(0);
  }
int start()
  {
   int i,j;
   double RC,A,B,C,O;
   double a1,a2,a3,b1,b2,b3,c1,c2,c3,d1,d2,d3;
   double x1,x2,x3,x4,y1,x1y1,x2y1,n;
//------------------------------------------------------------------
   for (i=Bars-1;i>=0;i--)
     {
      x1=0;x2=0;x3=0;x4=0;y1=0;x1y1=0;x2y1=0;n=0;
      for (j=i+26;j>=i;j--)
        {
         y1+=Close[j];
         x1+=j;x2+=j*j;x3+=j*j*j;x4+=j*j*j*j;
         x1y1+=j*Close[j];
         x2y1+=j*j*Close[j];
         n+=1;
        }
      a1=n;a2=x1;a3=x2;b1=x1;b2=x2;b3=x3;
      c1=x2;c2=x3;c3=x4;d1=y1;d2=x1y1;d3=x2y1;
      O=a1*(b2*c3-b3*c2)-b1*(a2*c3-a3*c2)+c1*(a2*b3-a3*b2);
      A=d1*(b2*c3-b3*c2)-b1*(d2*c3-d3*c2)+c1*(d2*b3-d3*b2);
      B=a1*(d2*c3-d3*c2)-d1*(a2*c3-a3*c2)+c1*(a2*d3-a3*d2);
      C=a1*(b2*d3-b3*d2)-b1*(a2*d3-a3*d2)+d1*(a2*b3-a3*b2);
      if (O==0) RC=Close[i];
      else {A=A/O;B=B/O;C=C/O;RC=A+B*i+C*i*i;}
      middle[i]=RC;
     }
//---
   return(0);
  }
 

以上的问题有老师指教吗?恳请ROSH和Dxdcn帮忙看看,谢谢了!

 

图表经过95根k线后,该时间点的K线会自动计算成另外一个值, ?? 根据 证据是什么?

我没看到什么异常呀

 

以五分钟图为例:运行指标程式后,抄录第90根k线的指标值(RC)和分钟时间,退出五分钟图,五十分钟后再进入五分钟图,此时第100根K线的指标值应该和之前抄录的值相同,可是事实却不同。不知为何?

 

这是结果不是原因,你需要使用Print检查计算过程中间变量,找到原因。

有可能这个计算跟计算历史有关,或是数据有不同,计算结果就不同了

三天了,你应该早查出计算它的xyabcd ABCD值了

 

谢谢DxdCn的提醒,问题已经解决!原来mt4不支持连乘(i*i*i*i);只能写成mathpow(i,4);

我想这是mt4的不足之处,起码应该说明一下嘛!!!!!

各位编程爱好者以后要注意这个问题了。呵呵。

原因: