如何计算数字数组的 EMA?
How to calculate the EMA of an array of numbers?
我有一组股票的每日收盘价(历史数据),格式如下:
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 ]
为什么会输出这个?
ema
函数returns前N个点的EMA向量。在您的代码中,N 为 10,并且由于您的输入向量 test
有 11 个元素,因此可以计算 2 个移动平均线。
您可以将移动平均线视为大小为 N(在本例中为 10)的 "window",它会滑过您的输入向量。从最后 N 个元素开始,计算 EMA,然后向左滑动一个元素,计算,一直这样做,直到 window 不能再移动(到达流的开头)。在这种情况下,window 只能移动一次,因此会产生两个平均值。
[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
我有一组股票的每日收盘价(历史数据),格式如下:
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 ]
为什么会输出这个?
ema
函数returns前N个点的EMA向量。在您的代码中,N 为 10,并且由于您的输入向量 test
有 11 个元素,因此可以计算 2 个移动平均线。
您可以将移动平均线视为大小为 N(在本例中为 10)的 "window",它会滑过您的输入向量。从最后 N 个元素开始,计算 EMA,然后向左滑动一个元素,计算,一直这样做,直到 window 不能再移动(到达流的开头)。在这种情况下,window 只能移动一次,因此会产生两个平均值。
[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