ta_lib_in_rust/indicators/moving_averages/
wma.rs1use crate::util::dataframe_utils::check_window_size;
2use polars::prelude::*;
3
4pub fn calculate_wma(df: &DataFrame, column: &str, window: usize) -> PolarsResult<Series> {
16 check_window_size(df, window, "WMA")?;
18
19 let series = df.column(column)?.f64()?.clone().into_series();
20
21 let weights: Vec<f64> = (1..=window).map(|i| i as f64).collect();
23
24 series.rolling_mean(RollingOptionsFixedWindow {
26 window_size: window,
27 min_periods: window,
28 center: false,
29 weights: Some(weights),
30 fn_params: None,
31 })
32}