如何解决自定义平均值函数中的数组超出范围
因此,我正在编写一个具有乘数的自定义atr指标(显示2行,第一行是原始atr值,第二行是atr * 1.5),但是由于某种原因,它说“数组超出范围(66,28)” ,计算真实范围的平均值。我确实在数组上使用了SetIndexBuffer,所以问题应该出在Oncalculate()中。
for(int i=0;i<rates_total-prev_calculated;i++){
TRBuffer[i] = MathMax(MathMax(high[i]-low[i],MathAbs(high[i]-close[i+1])),MathAbs(low[i]-close[i+1]));
if(prev_calculated-1<=ATRLength){
double sumTR=0;
for(int j=0;j<ATRLength;j++){
sumTR+=TRBuffer[i+j];
}
double atr = sumTR/ATRLength;
TRBuffer[i] = atr*TPMultiplier;
SLBuffer[i] = atr*SLMultiplier;
}
}
解决方法
找到答案了,这是最终代码。
if(rates_total<=ATRLength)
return 0;
int limit = rates_total-prev_calculated;
if(prev_calculated>0)
limit++;
double ATRVal;
for(int i=limit-2; i>1; i--){
TRBuffer[i] = MathMax(MathMax(high[i]-low[i],MathAbs(high[i]-close[i+1])),MathAbs(low[i]-close[i+1]));
ATRVal = iMAOnArray(TRBuffer,ATRLength,MODE_SMA,i);
TPBuffer[i] = ATRVal*TPMultiplier;
SLBuffer[i] = ATRVal*SLMultiplier;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。