Medias móviles simples con GNU Octave

Are you ok? Siguiendo en la misma línea abierta por el artículo anterior, hoy doy un paso más en mi aprendizaje de GNU Octave orientado al Análisis Técnico compartiendo con vosotr@s mi primer programa que calcula las medias móviles de una especie dada.

Este programa ya aglutina un cierto conocimiento de GNU Octave, por lo que te recomiendo que leas antes el manual oficial de este fantástico software de cálculo númerico. Vale la pena.

Estadísticas

Luego, si se te ocurre alguna idea interesante, por ejemplo, descubres el indicador técnico revolucionario del siglo XXI, sería fantástico que la compartas aquí en programarivm.com para que todos nos hagamos ricos con ella. Estoy seguro de que lo harás. ¿No?

Bueno, esta vez empezamos obteniendo de Forex Rate la evolución del EUR/GBP hasta el cinco de mayo de 2012, intervalo un día, 500 puntos, y, a continuación, la procesamos con el siguiente programa GNU Octave.

function sma(x, y, period, color, linewidth) 
    sma = [];
 
    for i = 1:period-1
        sma(end+1) = NaN;
    endfor  
 
    sum = 0;
 
    for i = 1:size(y)(1)
        if (i >= period)
            for j = 0:period-1
                sum = sum + y(i-j);
            endfor
            sma(end+1) = sum / period;
            sum = 0;
        endif
    endfor
 
    plot(x,sma,color,'linewidth',linewidth); 
endfunction
 
csvFile = input("Please, enter the full path of Forex Rate's csv file: ", "s");
 
y = dlmread(csvFile, ';');
y(1,:) = [];
y(:,[1,2,3,4,6,7]) = [];
x = [1:size(y)(1)];
 
hold on;
grid;
plot(x,y);
sma(x,y,10,'r',1);
sma(x,y,50,'g',1);
sma(x,y,100,'k',1);
hold off;

Y esto es todo por hoy. ¡Que tengas un buen fin de semana!