我使用google sheets和GoogleFinance函数来获取股票数据。我能够用下面的公式计算一个简单的移动平均线。我试图得到长度为8,13,21,55的每只股票的指数移动平均线。对指数移动平均线的公式有什么建议吗?
=AVERAGE(INDEX(GoogleFinance("MSFT","all",WORKDAY(TODAY(),-8),TODAY()),,3))
以下公式用于计算当前的指数移动平均线(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=分享。
我发现 这个 归功于该用户 "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) 或者你想怎么使用它.