"""
Price Transformations — Helper functions to synthesize OHLC arrays into single arrays.
Functions
---------
AVGPRICE — Average Price: (Open + High + Low + Close) / 4
MEDPRICE — Median Price: (High + Low) / 2
TYPPRICE — Typical Price: (High + Low + Close) / 3
WCLPRICE — Weighted Close Price: (High + Low + Close * 2) / 4
"""
from __future__ import annotations
import numpy as np
from numpy.typing import ArrayLike
from ferro_ta._ferro_ta import (
avgprice as _avgprice,
)
from ferro_ta._ferro_ta import (
medprice as _medprice,
)
from ferro_ta._ferro_ta import (
typprice as _typprice,
)
from ferro_ta._ferro_ta import (
wclprice as _wclprice,
)
from ferro_ta._utils import _to_f64
from ferro_ta.core.exceptions import _normalize_rust_error
[docs]
def AVGPRICE(
open: ArrayLike,
high: ArrayLike,
low: ArrayLike,
close: ArrayLike,
) -> np.ndarray:
"""Average Price: (Open + High + Low + Close) / 4.
Parameters
----------
open : array-like
Sequence of open prices.
high : array-like
Sequence of high prices.
low : array-like
Sequence of low prices.
close : array-like
Sequence of closing prices.
Returns
-------
numpy.ndarray
Array of AVGPRICE values.
"""
try:
return _avgprice(_to_f64(open), _to_f64(high), _to_f64(low), _to_f64(close))
except ValueError as e:
_normalize_rust_error(e)
[docs]
def MEDPRICE(high: ArrayLike, low: ArrayLike) -> np.ndarray:
"""Median Price: (High + Low) / 2.
Parameters
----------
high : array-like
Sequence of high prices.
low : array-like
Sequence of low prices.
Returns
-------
numpy.ndarray
Array of MEDPRICE values.
"""
try:
return _medprice(_to_f64(high), _to_f64(low))
except ValueError as e:
_normalize_rust_error(e)
[docs]
def TYPPRICE(high: ArrayLike, low: ArrayLike, close: ArrayLike) -> np.ndarray:
"""Typical Price: (High + Low + Close) / 3.
Parameters
----------
high : array-like
Sequence of high prices.
low : array-like
Sequence of low prices.
close : array-like
Sequence of closing prices.
Returns
-------
numpy.ndarray
Array of TYPPRICE values.
"""
try:
return _typprice(_to_f64(high), _to_f64(low), _to_f64(close))
except ValueError as e:
_normalize_rust_error(e)
[docs]
def WCLPRICE(high: ArrayLike, low: ArrayLike, close: ArrayLike) -> np.ndarray:
"""Weighted Close Price: (High + Low + Close * 2) / 4.
Parameters
----------
high : array-like
Sequence of high prices.
low : array-like
Sequence of low prices.
close : array-like
Sequence of closing prices.
Returns
-------
numpy.ndarray
Array of WCLPRICE values.
"""
try:
return _wclprice(_to_f64(high), _to_f64(low), _to_f64(close))
except ValueError as e:
_normalize_rust_error(e)
__all__ = ["AVGPRICE", "MEDPRICE", "TYPPRICE", "WCLPRICE"]