做除法时要保证分母不等于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
果然如此,太感谢了!
我想编写布林指标加宽度的新指标,宽度=(上轨线的值-下轨线的值)/中轨线的值
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线更新。
求教什么原因,如何解决?
感谢!