mplchart.expressions
Polars expression factories.
Each factory returns a native polars.Expr computing the indicator over
an OHLCV frame: prices.select(SMA(50)). In charts, expressions are
passed to chart.plot(...) directly (auto-plotted) or bound to a
renderer primitive via @, as in RSI(14) @ LinePlot(). These are
the polars-pipeline counterparts of mplchart.indicators.
wrap_expression
wrap_expression(func)
Decorator for expression factory functions.
Allows the first positional argument to be a pl.Expr, which is then
passed as the src keyword argument. This enables both calling styles:
SMA(20, pl.col("close")) # positional expr
SMA(20) # defaults to CLOSE
SMA(20, src=pl.col("open"))
Builds a slug label (e.g. "sma-20", "macd-12-26-9") from the call args
and aliases the resulting pl.Expr with it. Multi-output factories
return a single pl.struct(...) Expr; the view's eval unnests
it into a DataFrame at evaluation time.
OPEN
Column expression for the open price.
HIGH
Column expression for the high price.
LOW
Column expression for the low price.
CLOSE
Column expression for the close price. The default source of single-series factories.
VOLUME
Column expression for the volume series.
SMA
SMA(period: int = 20, *, src: pl.Expr = CLOSE)
Simple Moving Average
EMA
EMA(period: int = 20, *, src: pl.Expr = CLOSE)
Exponential Moving Average
RMA
RMA(period: int = 14, *, src: pl.Expr = CLOSE)
Rolling Moving Average (RSI style)
WMA
WMA(period: int = 20, *, src: pl.Expr = CLOSE)
Weighted Moving Average
HMA
HMA(period: int = 20, *, src: pl.Expr = CLOSE)
Hull Moving Average
DEMA
DEMA(period: int = 20, *, src: pl.Expr = CLOSE)
Double Exponential Moving Average
TEMA
TEMA(period: int = 20, *, src: pl.Expr = CLOSE)
Triple Exponential Moving Average
ROC
ROC(period: int = 1, *, src: pl.Expr = CLOSE)
Rate of Change
MOM
MOM(period: int = 1, *, src: pl.Expr = CLOSE)
Momentum
RSI
RSI(period: int = 14, *, src: pl.Expr = CLOSE)
Relative Strength Index
PPO
PPO(n1: int = 12, n2: int = 26, n3: int = 9, *, src: pl.Expr = CLOSE)
Price Percentage Oscillator — struct of (ppo, pposignal, ppohist)
MACD
MACD(n1: int = 12, n2: int = 26, n3: int = 9, *, src: pl.Expr = CLOSE)
Moving Average Convergence Divergence — struct of (macd, macdsignal, macdhist)
MACDV
MACDV(
n1: int = 12,
n2: int = 26,
n3: int = 9,
*,
high: pl.Expr = HIGH,
low: pl.Expr = LOW,
close: pl.Expr = CLOSE,
)
MACD Volatility-Normalized — struct of (macd, macdsignal, macdhist)
BOP
BOP(
period: int = 14,
*,
open: pl.Expr = OPEN,
high: pl.Expr = HIGH,
low: pl.Expr = LOW,
close: pl.Expr = CLOSE,
)
Balance of Power
CMF
CMF(
period: int = 20,
*,
high: pl.Expr = HIGH,
low: pl.Expr = LOW,
close: pl.Expr = CLOSE,
volume: pl.Expr = VOLUME,
)
Chaikin Money Flow
MFI
MFI(
period: int = 14,
*,
high: pl.Expr = HIGH,
low: pl.Expr = LOW,
close: pl.Expr = CLOSE,
volume: pl.Expr = VOLUME,
)
Money Flow Index
STOCH
STOCH(
period: int = 14,
fastn: int = 3,
slown: int = 3,
*,
high: pl.Expr = HIGH,
low: pl.Expr = LOW,
src: pl.Expr = CLOSE,
)
Stochastic Oscillator — struct of (slowk, slowd)
TRANGE
TRANGE(*, high: pl.Expr = HIGH, low: pl.Expr = LOW, close: pl.Expr = CLOSE)
True Range
ATR
ATR(
period: int = 14,
*,
high: pl.Expr = HIGH,
low: pl.Expr = LOW,
close: pl.Expr = CLOSE,
)
Average True Range
BBP
BBP(period: int = 20, nbdev: float = 2.0, *, src: pl.Expr = CLOSE)
Bollinger Bands Percent (%B)
BBW
BBW(period: int = 20, nbdev: float = 2.0, *, src: pl.Expr = CLOSE)
Bollinger Bands Width
NATR
NATR(
period: int = 14,
*,
high: pl.Expr = HIGH,
low: pl.Expr = LOW,
close: pl.Expr = CLOSE,
)
Normalized Average True Range (percent)
BBANDS
BBANDS(period: int = 20, nbdev: float = 2.0, *, src: pl.Expr = CLOSE)
Bollinger Bands — struct of (upperband, middleband, lowerband)
DONCHIAN
DONCHIAN(period: int = 20, *, high: pl.Expr = HIGH, low: pl.Expr = LOW)
Donchian Channel — struct of (upperband, middleband, lowerband)
KELTNER
KELTNER(
period: int = 20,
nbatr: float = 2.0,
*,
high: pl.Expr = HIGH,
low: pl.Expr = LOW,
close: pl.Expr = CLOSE,
)
Keltner Channel — struct of (upperband, middleband, lowerband)
DMI
DMI(
period: int = 14,
*,
high: pl.Expr = HIGH,
low: pl.Expr = LOW,
close: pl.Expr = CLOSE,
)
Directional Movement Index — struct of (adx, pdi, ndi)
ADX
ADX(
period: int = 14,
*,
high: pl.Expr = HIGH,
low: pl.Expr = LOW,
close: pl.Expr = CLOSE,
)
Average Directional Index
AVGPRICE
AVGPRICE(
*,
open: pl.Expr = OPEN,
high: pl.Expr = HIGH,
low: pl.Expr = LOW,
close: pl.Expr = CLOSE,
)
Average Price (OHLC/4)
MEDPRICE
MEDPRICE(*, high: pl.Expr = HIGH, low: pl.Expr = LOW)
Median Price (HL/2)
TYPPRICE
TYPPRICE(*, high: pl.Expr = HIGH, low: pl.Expr = LOW, close: pl.Expr = CLOSE)
Typical Price (HLC/3)
WCLPRICE
WCLPRICE(*, high: pl.Expr = HIGH, low: pl.Expr = LOW, close: pl.Expr = CLOSE)
Weighted Close Price (HLCC/4)