Update version numbers across Rust, Python, and documentation files to 1.1.0. Enhance the .gitignore to include macOS dSYM files and plans directory. Introduce new dependencies in the Rust core library and update the README to reflect recent performance benchmarks and backtesting engine capabilities. Add new artifacts to the benchmarks manifest and improve documentation for the backtesting engine API.
25 lines
733 B
Rust
25 lines
733 B
Rust
use crate::validation;
|
|
use numpy::{IntoPyArray, PyArray1, PyReadonlyArray1};
|
|
use pyo3::prelude::*;
|
|
|
|
/// Typical Price: (high + low + close) / 3.
|
|
#[pyfunction]
|
|
pub fn typprice<'py>(
|
|
py: Python<'py>,
|
|
high: PyReadonlyArray1<'py, f64>,
|
|
low: PyReadonlyArray1<'py, f64>,
|
|
close: PyReadonlyArray1<'py, f64>,
|
|
) -> PyResult<Bound<'py, PyArray1<f64>>> {
|
|
let highs = high.as_slice()?;
|
|
let lows = low.as_slice()?;
|
|
let closes = close.as_slice()?;
|
|
let n = highs.len();
|
|
validation::validate_equal_length(&[
|
|
(n, "high"),
|
|
(lows.len(), "low"),
|
|
(closes.len(), "close"),
|
|
])?;
|
|
let result = ferro_ta_core::price_transform::typprice(highs, lows, closes);
|
|
Ok(result.into_pyarray(py))
|
|
}
|