Media Móvil Simple con JavaScript

Hola amig@s, hoy voy a compartir un tip de programación que he tenido que implementar en una aplicación estadística. Os voy a enseñar cómo podéis implementar una media móvil simple (Simple Moving Average) con JavaScript. El algoritmo es exactamente el mismo que ya utilizamos en el post Medias móviles simples con GNU Octave, pero traducido a JavaScript.

Simple Moving Average JavaScript

Por si no lo sabes, una media móvil (Moving Average) es una herramienta estadística que sirve para suavizar gráficos y detectar tendencias de gráficos como los de las cotizaciones de las acciones, la evolución de un stock, el número de unidades vendidas de un producto determinado durante un periodo de tiempo, etc.

El código JavaScript es este:

/**
 * Returns a Simple Moving Average
 * 
 * @param {Array} source Source array
 * @param {number} period MA period
 * @returns {Array} sma MA array
 */
function ma(source,period) {
    var sum = 0;
    var sma = new Array(source.length);
    for (var i=0; i<source.length; i++) {
        if (i >= period) {
            for (var j=0;j<period-1;j++) {
                sum = sum + source[i-j];
            }
            sma[i] = Math.round(sum/period);
            sum = 0;
        } else {
            sma[i] = null;
        }
    }        
    return sma;
}

Está disponible en JSFiddle.

Espero que el tip de hoy te guste y lo encuentres de utilidad. ¡Un saludo! 😀