我具有以下格式的股票(历史数据)每日收盘价数组:
var close = [39, 40.133, 38.23, .... , 45.38]
这些是按日期先后顺序排列的。我正在尝试使收盘价的EMA(指数移动平均线)值数组与时间顺序相关。
我在nodejs中执行此操作;任何帮助将不胜感激!
附言这是我尝试过的:
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 ]
为什么输出这个?
最佳答案
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