GoogleFinance函数在google sheets中计算指数移动平均线。

问题描述 投票:0回答:1

我使用google sheets和GoogleFinance函数来获取股票数据。我能够用下面的公式计算一个简单的移动平均线。我试图得到长度为8,13,21,55的每只股票的指数移动平均线。对指数移动平均线的公式有什么建议吗?

=AVERAGE(INDEX(GoogleFinance("MSFT","all",WORKDAY(TODAY(),-8),TODAY()),,3))

编辑。添加我的谷歌表经验enter image description here

google-sheets google-sheets-formula moving-average google-finance google-finance-api
1个回答
1
投票

以下公式用于计算当前的指数移动平均线(EMA)。

EMA = 收盘价 x decay_multiplayer + EMA (前一天) x (1 -decay_multiplayer)

EMA对最近的价格给予较高的权重,而普通移动平均线则对所有数值给予同等权重。

移動平均線 衰败_多人游戏 应该选择大于0而小于1的数字。

如果你选择一个较大的数字,就像短期移动平均线(更快的衰减),如果你选择一个较小的数字,就像长期移动平均线。

要实现这一点,在谷歌表,你必须创建一个新的列,代表EMV值的每一天。你必须填写第一个EMV值(与第一收盘价),然后使用上面的函数计算每一个新的EMV从当前收盘价和以前的EMV值。

我在这里创建了一个谷歌表作为例子。https:/docs.google.comspreadsheetsd1ITfRfwQCBV-0amWpZzae2PbKBPAL_8YluUEmU_vbsCIedit?usp=分享。


0
投票

我发现 这个 归功于该用户 "Jonathan K 2806"。

试试这个,更简单,也可能足够。

​​​​/**
 * Calculates the EMA of the range.
 *
 * @param {range} range The range of cells to calculate.
 * @param {number} n The number of trailing samples to give higer weight to, e.g. 30.
 * @return The EMA of the range.
 * @customfunction
 */
function EMA(range, n) {
  if (!range.reduce) {
    return range;
  }

  n = Math.min(n, range.length);
  var a = 2 / (n + 1);

  return range.reduce(function(accumulator, currentValue, index, array) {
    return currentValue != "" ? (currentValue * a + accumulator * (1-a)) : accumulator;
  }, 0);
}

进入工具-> 脚本编辑器, 把这个粘贴在那里,然后点击保存,然后回到你的电子表格中,在单元格中输入=EMA($A2:$A100, 10) 或者你想怎么使用它.

© www.soinside.com 2019 - 2024. All rights reserved.