奇怪的EA问题

 

下面是EA中的一个自定义函数:

int XY()
{
  int _UpDownSign; //---- 定义返回变量

  。。。。。。

  if(。。。。。。) //---- 涨势
     _UpDownSign = 2;
     
  if(。。。。。。) //---- 跌势
     _UpDownSign = 1;

  return(_UpDownSign);
}

上述自定义函数中定义的返回变量 _UpDownSign 如果不在自定义函数中定义,而是定义成全局变量,则EA的测试结果会有很大的差别,平均每个月相差一百点左右。其它的自定义函数则不存在这个问题,不论返回的变量在自定义函数中定义,还是定义成全局变量,都不会影响测试结果。

真是百思不得其解,望各位高手指教。

谢谢。

 

没什么奇怪的,如果按你的代码,当定义为全局变量时,如果不是涨势又不是跌势,那么全局变量就保持了上一次的值,而继续按照上一次的条件进行开仓了.

修改很简单,如果是全局变量,那么在进入函数后,马上UpDownSign = 0,清空一下你的变量.

 

自己费了好大劲,也没转过这个弯。

这回明白了。

多谢。

原因: