pub fn moving_average(
prices: &[f64],
moving_average_type: MovingAverageType,
) -> Result<f64>Expand description
Calculates the Moving Average
§Arguments
prices- Slice of pricesmoving_average_type- Variant ofMovingAverageType
§Returns
The calculated indicator value
§Errors
Returns TechnicalIndicatorError::EmptyData if prices.is_empty()
Returns TechnicalIndicatorError::UnsupportedType for unsupported moving average types
§Examples
let prices = vec![100.0, 102.0, 103.0, 101.0, 100.0];
let simple_moving_average =
centaur_technical_indicators::moving_average::single::moving_average(
&prices,
centaur_technical_indicators::MovingAverageType::Simple
).unwrap();
assert_eq!(101.2, simple_moving_average);
let exponential_moving_average =
centaur_technical_indicators::moving_average::single::moving_average(
&prices,
centaur_technical_indicators::MovingAverageType::Exponential
).unwrap();
assert_eq!(100.99526066350714, exponential_moving_average);
let smoothed_moving_average =
centaur_technical_indicators::moving_average::single::moving_average(
&prices,
centaur_technical_indicators::MovingAverageType::Smoothed
).unwrap();
assert_eq!(101.11375535459305, smoothed_moving_average);