计算ETH价格简单移动平均线(SMA)时循环逻辑错误导致无法正确求和的问题求助
计算ETH价格简单移动平均线(SMA)时循环逻辑错误导致无法正确求和的问题求助
我现在正试着给已经下载好的ETH价格列表计算简单移动平均线(SMA),主函数会调用一个单独的函数来完成这个SMA计算。
这个计算函数有两个参数:
- sheet:一个
sheet对象 - sma1:计算时用到的行数,这次例子里我设的是12
下面是我写的函数代码:
function calcParams(sheet, sma1) { if (sheet === null) return false; var dPrices = sheet.getRange('B6:B8642').getValues(); var len = dPrices.length; var sum = 0; var values = []; for (let i = 0; i < len; i++) { if (i < (sma1 - 1) ) { values[i] = ""; } else { for (var j = (i - (sma1 - 1)); j = i; j++) { sum += dPrices[j]; } values[i] = round(sum/sma1, 2); } } var dSMA1 = sheet.getRange('C6:C8642').setValues(values); }
我的逻辑是这样的:
- 当循环前11次的时候,因为凑不够12个数据来计算平均值,所以
values数组里对应的位置就存空字符串。 - 到第12次循环的时候,应该取当前值加上之前的11个值求和,再除以12得到SMA,然后把结果放进
values数组里。
不过调试的时候我发现,变量j一直卡在11不动,本来它应该从起始值循环到当前的i才对。我作为JavaScript新手实在找不到代码哪里错了,有没有大佬能给点建议呀?
备注:内容来源于stack exchange,提问作者maxhugen
相关产品推荐
相关产品推荐

