use polars::prelude::*;
pub fn calculate_typprice(df: &DataFrame) -> PolarsResult<Series> {
if !df.schema().contains("high")
|| !df.schema().contains("low")
|| !df.schema().contains("close")
{
return Err(PolarsError::ComputeError(
"Typical Price calculation requires high, low, and close columns".into(),
));
}
let high = df.column("high")?.f64()?;
let low = df.column("low")?.f64()?;
let close = df.column("close")?.f64()?;
let high_plus_low = high + low;
let sum = high_plus_low + close.clone();
let typ_price = sum / 3.0;
Ok(typ_price.into_series().with_name("typprice".into()))
}