如何计算一组数字的EMA?

时间:2015-05-21 19:47:34

标签: arrays node.js average stocks moving-average

我有一系列每日收盘价格的股票(历史数据)格式如下:

var close = [39, 40.133, 38.23, .... , 45.38] 

这些按时间顺序依次排列。我试图将收盘价格的EMA(指数移动平均线)数组与按时间顺序排列的日期相关联。

我在nodejs中这样做;任何帮助将不胜感激!

P.S。这是我尝试过的东西:

var gauss = require('gauss');

var test = [39, 40.133, 38.23, 45.38, 43.83, 42.1, 48, 47, 44.12, 44.33, 46.9];
var vec = test.toVector();
var ma = vec.ema(10);

console.log(ma); // Outputs [ 43.2123, 43.88279090909091 ]

为什么输出这个?

1 个答案:

答案 0 :(得分:1)

ema函数返回前N个点的EMA向量。在你的代码中,N是10,由于输入向量test有11个元素,因此可以计算2个移动平均值。

您可以将移动平均线视为大小为N(在这种情况下为10)的“窗口”,它会滑过输入向量。从最后N个元素开始,计算EMA,然后向左滑动一个元素,计算并继续操作,直到窗口不再移动(通过到达流的开头)。在这种情况下,窗口只能移动一次,从而产生两个平均值。

[39, 40.133, 38.23, 45.38, 43.83, 42.1, 48, 47, 44.12, 44.33, 46.9];
     -----------------------------> 43.88279090909091 <-----------
 ----------------> 43.2123 <--------------------------------

有关详细信息,请参阅文档:https://github.com/wayoutmind/gauss#vectorema