You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

计算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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 10:37:59