一个简单的均量线指标,图形上看没问题,EA调用就返回2147483647,请高手帮忙解决,不胜感激

 

一个简单的均量线指标,图形上看没问题,EA调用就返回2147483647,请高手帮忙解决,不胜感激

#property indicator_separate_window

#property indicator_buffers 1

#property indicator_color1 Blue

 

double averagevolume[];

extern int n=10;

 

int init()  {

  SetIndexBuffer(0,averagevolume);

  SetIndexStyle(0,DRAW_LINE);

  return(0);                                               }

 

void start()  {

  int limit=Bars-n-IndicatorCounted();

  for(int k=0;k<limit+1;k++) {

     int sum1=0;   

    for(int i=k;i<k+n;i++) {sum1+=iVolume(NULL,0,i);}

    averagevolume[k]=sum1/n;                                       }

  return;

                                                                                               }

调用EA代码:

 

int start()

  {

   Print(iCustom(NULL,PERIOD_M5,"均量线",5,0,1));

   return(0);

 }

 

 

有些数组没有被初始化,或者一些需要引用前值的指标在K线不够其周期并且没有初始数组值的时候,它的返回值就会很大往往过亿。

最简单的解决办法就是判断一下这个值,比如不能大于等于10000 或者交易品种的报价。

个人观点,仅供参考。 

 
你看,数组肯定初始化了,前值问题也用int limit=Bars-n-IndicatorCounted();考虑了。关键是我直接拉上图能看到合理的均量线结果,但是EA一调就返回极大值,不信的可以试一下。
 
feifeiyu7247:
你看,数组肯定初始化了,前值问题也用int limit=Bars-n-IndicatorCounted();考虑了。关键是我直接拉上图能看到合理的均量线结果,但是EA一调就返回极大值,不信的可以试一下。


for(int k=0;k<limit+1;k++) 这个for循环有问题,该循环应该从大到0,而非反之;

indicator中的数组有些特殊,主要跟它不断扩容有关,修改试试吧