下载MetaTrader 5

关于自定义指标窗口输出数据的错误?

要添加评论,请登录注册
leochina84
169
leochina84  

指标代码如下:

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//--- 设置计算范围
   int i,Limit;
   if (prev_calculated == 0)
      Limit = rates_total;
      else Limit = rates_total - prev_calculated;
   printf("用于计算的柱数 %d",Limit);

//--- 辅助计算Var1
  for (i = 0;i < Limit;i++)
   {
      Var1_Buffer[i]=((high[i]+low[i]+open[i]+close[i])/4)-iMA(NULL,0,BD_Long,0,MODE_EMA,PRICE_WEIGHTED,i);
   } 

//--- 主计算BD
  for (i = 0;i < Limit;i++)
   {
      BD_Buffer[i]=iMAOnArray(Var1_Buffer,0,BD_Short,0,MODE_EMA,i)*1000;
   } 

//--- 主计算CZ
  for (i = 0;i < Limit-1;i++)
   {
      CZ_Buffer[i]=(BD_Buffer[i] - BD_Buffer[i+1])*10;
   } 
    
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

窗口错误如下:

2014.08.27 01:26:07.478 趋势波动_0826_1936 EURUSD,M1: CZ_2=-10737418159.732206

2014.08.27 01:26:26.198 趋势波动_0826_1936 EURUSD,M1: CZ_1=-10737418170.484831

以上错误,是在增加新的K线后出现,但只要在图表窗口右键"刷新",数据就能正常,请问这是什么问题?

图片附件,是存在错误的窗口截屏。

主窗口

附加的文件:
leochina84
169
leochina84  

问题已解决。

原本我以为是数组序列和时序列的错位的问题,结果是我犯了一个基本性错误。

修正后的代码如下:

//--- 主计算CZ
  if(Limit > 1)
    {
       for (i = 0;i < Limit-1;i++)
         {
            CZ_Buffer[i]=(BD_Buffer[i] - BD_Buffer[i+1])*10;
         } 
    }
    else
      {
       if(Limit == 1)
         {
            CZ_Buffer[0]=(BD_Buffer[0] - BD_Buffer[1])*10;
         }
      }

要添加评论,请登录注册