Java help - simple moving average

How do I code a 30 day simple moving average in java?


Like this?

X = (C + P[i to c-1] / i

X = Current MA
C = Current Price
P = P1, P2, P3 and so on
i = number of days in MA = 30
 
I think this is correct. There are other ways.

double [] x; // your input time series



Code:
int bars = 20;
double [] ma = new double [x.length - bars];  // 
int k = 0;

for (int i = bars - 1; i < double.length; i++)
{
    ma [k] = 0.0;
    for (int j = 0; j < bars; j++)
    {
        ma [k] += x [i - j];    
    }
    ma [k++] /= bars;
}
 
I really don't understand the above.

Isn't the simple moving average the summation of all the prices during the number of days divided by the number of days ?
 
Quote from dcraig:

I think this is correct. There are other ways.

double [] x; // your input time series



Code:
int bars = 20;
double [] ma = new double [x.length - bars];  // 
int k = 0;

for (int i = bars - 1; i < x.length; i++) // for each bar
{
    ma [k] = 0.0;
    for (int j = 0; j < bars; j++) // sum over  'bars' previous input values
    {
        ma [k] += x [i - j];   
    }
    ma [k++] /= bars; // divide by number of bars
}
 
dcraig,
I got what you mean, you are calculating the moving average for each bar as in backtesting, I thought he was talking about calculating it in real time, sorry my mistake :)
 
Back
Top