Program To Find Simple Moving Average In Java And C#

Share Your Love

Program To Find Simple Moving Average In Java And C# see below approach. The average obtained from the data for some t period of time is known as a simple moving average. Its value fluctuates with changing data in a regular mean, but it also changes with the time interval in this sort of mean. We calculate the mean for a certain time interval t and then discard some prior data. We obtain a new mean this time, and the process continues. That’s why it’s called a moving average. This has a lot of potential in the financial sector.

Examples:

Input : { 1, 3, 5, 6, 8 } 
        Period = 3
Output :New number added is 1.0, SMA = 0.3333333333333333
        New number added is 3.0, SMA = 1.3333333333333333
        New number added is 5.0, SMA = 3.0
        New number added is 6.0, SMA = 4.666666666666667
        New number added is 8.0, SMA = 6.333333333333333

Approach:

The first element of the moving average is obtained by taking the average of the initial fixed subset of the number series, given a series of values and a fixed subset size. The subset is then “shifted forward,” i.e., the first number of the series is excluded and the next value is added to the subset.

Here is a java program to calculate the Simple Moving Average.

// Java program to calculate
// Simple Moving Average
import java.util.*;

public class SimpleMovingAverage {
	
	// queue used to store list so that we get the average
	private final Queue<Double> Dataset = new LinkedList<Double>();
	private final int period;
	private double sum;

	// constructor to initialize period
	public SimpleMovingAverage(int period)
	{
		this.period = period;
	}

	// function to add new data in the
	// list and update the sum so that
	// we get the new mean
	public void addData(double num)
	{
		sum += num;
		Dataset.add(num);

		// Updating size so that length
		// of data set should be equal
		// to period as a normal mean has
		if (Dataset.size() > period)
		{
			sum -= Dataset.remove();
		}
	}

	// function to calculate mean
	public double getMean()
	{
		return sum / period;
	}

	public static void main(String[] args)
	{
		double[] input_data = { 1, 3, 5, 6, 8,
								12, 18, 21, 22, 25 };
		int per = 3;
		SimpleMovingAverage obj = new SimpleMovingAverage(per);
		for (double x : input_data) {
			obj.addData(x);
			System.out.println("New number added is " +
								x + ", SMA = " + obj.getMean());
		}
	}
}
// C# program to calculate
// Simple Moving Average
using System;
using System.Collections.Generic;

public class SimpleMovingAverage
{
	
	// queue used to store list so that we get the average
	private Queue<Double> Dataset = new Queue<Double>();
	private int period;
	private double sum;

	// constructor to initialize period
	public SimpleMovingAverage(int period)
	{
		this.period = period;
	}

	// function to add new data in the
	// list and update the sum so that
	// we get the new mean
	public void addData(double num)
	{
		sum += num;
		Dataset.Enqueue(num);

		// Updating size so that length
		// of data set should be equal
		// to period as a normal mean has
		if (Dataset.Count > period)
		{
			sum -= Dataset.Dequeue();
		}
	}

	// function to calculate mean
	public double getMean()
	{
		return sum / period;
	}

	// Driver code
	public static void Main(String[] args)
	{
		double[] input_data = { 1, 3, 5, 6, 8,
								12, 18, 21, 22, 25 };
		int per = 3;
		SimpleMovingAverage obj = new SimpleMovingAverage(per);
		foreach (double x in input_data) {
			obj.addData(x);
			Console.WriteLine("New number added is " +
								x + ", SMA = " + obj.getMean());
		}
	}
}

// This code contributed by Rajput-Ji

Output:

New number added is 1.0, SMA = 0.3333333333333333
New number added is 3.0, SMA = 1.3333333333333333
New number added is 5.0, SMA = 3.0
New number added is 6.0, SMA = 4.666666666666667
New number added is 8.0, SMA = 6.333333333333333
New number added is 12.0, SMA = 8.666666666666666
New number added is 18.0, SMA = 12.666666666666666
New number added is 21.0, SMA = 17.0
New number added is 22.0, SMA = 20.333333333333332
New number added is 25.0, SMA = 22.666666666666668

Share Your Love
Avatar photo
Lingaraj Senapati

Hey There! I am Lingaraj Senapati, the Founder of lingarajtechhub.com My skills are Freelance, Web Developer & Designer, Corporate Trainer, Digital Marketer & Youtuber.

Articles: 429

Newsletter Updates

Enter your email address below to subscribe to our newsletter