求教,自定义指标2个double类型的buffer相除,就不随K线更新

 

我想编写布林指标加宽度的新指标,宽度=(上轨线的值-下轨线的值)/中轨线的值

for(int i=0; i<rates_total - prev_calculated ; i++)

   {    

      upperBuffer[i]=iBands(NULL,0,zq,2,0,PRICE_CLOSE, MODE_UPPER,i);

      midBuffer[i]=iBands(NULL,0,zq,2,0,PRICE_CLOSE,MODE_MAIN,i);

      lowerBuffer[i]=iBands(NULL,0,zq,2,0,PRICE_CLOSE, MODE_LOWER,i);      

      widthBuffer[i]=(upperBuffer[i]-lowerBuffer[i])/midBuffer[i];

      ma5Buffer[i]=iMA(NULL,0,5,0,MODE_SMA,PRICE_CLOSE,i);


   }

就这行代码    widthBuffer[i]=(upperBuffer[i]-lowerBuffer[i])/midBuffer[i];使得指标不随K线更新,如果除数换成其他任意数字,都能随K线更新。

求教什么原因,如何解决?

感谢!

 

做除法时要保证分母不等于0

for(int i=0; i<rates_total - prev_calculated +1 ; i++)
{
   if(i>=rates_total)continue
   upperBuffer[i]=iBands(NULL,0,zq,2,0,PRICE_CLOSE, MODE_UPPER,i);
   midBuffer[i]=iBands(NULL,0,zq,2,0,PRICE_CLOSE,MODE_MAIN,i);
   lowerBuffer[i]=iBands(NULL,0,zq,2,0,PRICE_CLOSE, MODE_LOWER,i);
   
   if(midBuffer[i]!=0)
   widthBuffer[i]=(upperBuffer[i]-lowerBuffer[i])/midBuffer[i];
   else widthBuffer[i]=0.0;//假设你设置的指标空值是0
   
   ma5Buffer[i]=iMA(NULL,0,5,0,MODE_SMA,PRICE_CLOSE,i);
}
 
Ziheng Zhuang:

做除法时要保证分母不等于0 

果然如此,太感谢了!

原因: